category_theory.sites.dense_subsiteMathlib.CategoryTheory.Sites.DenseSubsite

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -532,14 +532,14 @@ theorem CategoryTheory.Functor.IsCoverDense.compatiblePreserving
 #align category_theory.cover_dense.compatible_preserving CategoryTheory.Functor.IsCoverDense.compatiblePreserving
 -/
 
-#print CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous /-
-noncomputable instance CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous
+#print CategoryTheory.Functor.IsCoverDense.full_sheafPushforwardContinuous /-
+noncomputable instance CategoryTheory.Functor.IsCoverDense.full_sheafPushforwardContinuous
     [CategoryTheory.Functor.Faithful G] (Hp : CoverPreserving J K G) :
     CategoryTheory.Functor.Full (Functor.sheafPushforwardContinuous A H.CompatiblePreserving Hp)
     where
   preimage ℱ ℱ' α := ⟨H.sheafHom α.val⟩
   witness' ℱ ℱ' α := Sheaf.Hom.ext _ _ <| H.sheafHom_restrict_eq α.val
-#align category_theory.cover_dense.sites.pullback.full CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous
+#align category_theory.cover_dense.sites.pullback.full CategoryTheory.Functor.IsCoverDense.full_sheafPushforwardContinuous
 -/
 
 #print CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous /-
Diff
@@ -128,9 +128,9 @@ theorem CategoryTheory.Functor.IsCoverDense.ext (H : CategoryTheory.Functor.IsCo
 -/
 
 #print CategoryTheory.Functor.IsCoverDense.functorPullback_pushforward_covering /-
-theorem CategoryTheory.Functor.IsCoverDense.functorPullback_pushforward_covering [Full G]
-    (H : CategoryTheory.Functor.IsCoverDense K G) {X : C} (T : K (G.obj X)) :
-    (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
+theorem CategoryTheory.Functor.IsCoverDense.functorPullback_pushforward_covering
+    [CategoryTheory.Functor.Full G] (H : CategoryTheory.Functor.IsCoverDense K G) {X : C}
+    (T : K (G.obj X)) : (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
   by
   refine' K.superset_covering _ (K.bind_covering T.property fun Y f Hf => H.is_cover Y)
   rintro Y _ ⟨Z, _, f, hf, ⟨W, g, f', ⟨rfl⟩⟩, rfl⟩
@@ -173,7 +173,7 @@ theorem CategoryTheory.Functor.IsCoverDense.sheaf_eq_amalgamation (ℱ : Sheaf K
 #align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.Functor.IsCoverDense.sheaf_eq_amalgamation
 -/
 
-variable [Full G]
+variable [CategoryTheory.Functor.Full G]
 
 namespace Types
 
@@ -516,8 +516,9 @@ theorem CategoryTheory.Functor.IsCoverDense.iso_of_restrict_iso {ℱ ℱ' : Shea
 
 #print CategoryTheory.Functor.IsCoverDense.compatiblePreserving /-
 /-- A fully faithful cover-dense functor preserves compatible families. -/
-theorem CategoryTheory.Functor.IsCoverDense.compatiblePreserving [Faithful G] :
-    CompatiblePreserving K G := by
+theorem CategoryTheory.Functor.IsCoverDense.compatiblePreserving
+    [CategoryTheory.Functor.Faithful G] : CompatiblePreserving K G :=
+  by
   constructor
   intro ℱ Z T x hx Y₁ Y₂ X f₁ f₂ g₁ g₂ hg₁ hg₂ eq
   apply H.ext
@@ -533,8 +534,8 @@ theorem CategoryTheory.Functor.IsCoverDense.compatiblePreserving [Faithful G] :
 
 #print CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous /-
 noncomputable instance CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous
-    [Faithful G] (Hp : CoverPreserving J K G) :
-    Full (Functor.sheafPushforwardContinuous A H.CompatiblePreserving Hp)
+    [CategoryTheory.Functor.Faithful G] (Hp : CoverPreserving J K G) :
+    CategoryTheory.Functor.Full (Functor.sheafPushforwardContinuous A H.CompatiblePreserving Hp)
     where
   preimage ℱ ℱ' α := ⟨H.sheafHom α.val⟩
   witness' ℱ ℱ' α := Sheaf.Hom.ext _ _ <| H.sheafHom_restrict_eq α.val
@@ -542,9 +543,9 @@ noncomputable instance CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardC
 -/
 
 #print CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous /-
-instance CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous [Faithful G]
-    (Hp : CoverPreserving J K G) :
-    Faithful (Functor.sheafPushforwardContinuous A H.CompatiblePreserving Hp)
+instance CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous
+    [CategoryTheory.Functor.Faithful G] (Hp : CoverPreserving J K G) :
+    CategoryTheory.Functor.Faithful (Functor.sheafPushforwardContinuous A H.CompatiblePreserving Hp)
     where map_injective' := by
     intro ℱ ℱ' α β e
     ext1
@@ -564,7 +565,7 @@ open CategoryTheory
 
 variable {C D : Type u} [Category.{v} C] [Category.{v} D]
 
-variable {G : C ⥤ D} [Full G] [Faithful G]
+variable {G : C ⥤ D} [CategoryTheory.Functor.Full G] [CategoryTheory.Functor.Faithful G]
 
 variable {J : GrothendieckTopology C} {K : GrothendieckTopology D}
 
Diff
@@ -352,7 +352,7 @@ noncomputable def CategoryTheory.Functor.IsCoverDense.sheafCoyonedaHom
     apply sheaf_eq_amalgamation
     apply H.is_cover
     intro Y' f' hf'
-    change unop X ⟶ ℱ.obj (op (unop _)) at x 
+    change unop X ⟶ ℱ.obj (op (unop _)) at x
     dsimp
     simp only [pushforward_family, functor.comp_map, coyoneda_obj_map, hom_over_app, category.assoc]
     congr 1
@@ -548,8 +548,8 @@ instance CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous
     where map_injective' := by
     intro ℱ ℱ' α β e
     ext1
-    apply_fun fun e => e.val at e 
-    dsimp at e 
+    apply_fun fun e => e.val at e
+    dsimp at e
     rw [← H.sheaf_hom_eq α.val, ← H.sheaf_hom_eq β.val, e]
 #align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous
 -/
Diff
@@ -96,15 +96,15 @@ theorem Presieve.in_coverByImage (G : C ⥤ D) {X : D} {Y : C} (f : G.obj Y ⟶
 #align category_theory.presieve.in_cover_by_image CategoryTheory.Presieve.in_coverByImage
 -/
 
-#print CategoryTheory.CoverDense /-
+#print CategoryTheory.Functor.IsCoverDense /-
 /-- A functor `G : (C, J) ⥤ (D, K)` is called `cover_dense` if for each object in `D`,
   there exists a covering sieve in `D` that factors through images of `G`.
 
 This definition can be found in https://ncatlab.org/nlab/show/dense+sub-site Definition 2.2.
 -/
-structure CoverDense (K : GrothendieckTopology D) (G : C ⥤ D) : Prop where
+structure CategoryTheory.Functor.IsCoverDense (K : GrothendieckTopology D) (G : C ⥤ D) : Prop where
   is_cover : ∀ U : D, Sieve.coverByImage G U ∈ K U
-#align category_theory.cover_dense CategoryTheory.CoverDense
+#align category_theory.cover_dense CategoryTheory.Functor.IsCoverDense
 -/
 
 open Presieve Opposite
@@ -113,22 +113,24 @@ namespace CoverDense
 
 variable {K}
 
-variable {A : Type _} [Category A] {G : C ⥤ D} (H : CoverDense K G)
+variable {A : Type _} [Category A] {G : C ⥤ D} (H : CategoryTheory.Functor.IsCoverDense K G)
 
-#print CategoryTheory.CoverDense.ext /-
+#print CategoryTheory.Functor.IsCoverDense.ext /-
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
-theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
+theorem CategoryTheory.Functor.IsCoverDense.ext (H : CategoryTheory.Functor.IsCoverDense K G)
+    (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
     (h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t) : s = t :=
   by
   apply (ℱ.cond (sieve.cover_by_image G X) (H.is_cover X)).IsSeparatedFor.ext
   rintro Y _ ⟨Z, f₁, f₂, ⟨rfl⟩⟩
   simp [h f₂]
-#align category_theory.cover_dense.ext CategoryTheory.CoverDense.ext
+#align category_theory.cover_dense.ext CategoryTheory.Functor.IsCoverDense.ext
 -/
 
-#print CategoryTheory.CoverDense.functorPullback_pushforward_covering /-
-theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X : C}
-    (T : K (G.obj X)) : (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
+#print CategoryTheory.Functor.IsCoverDense.functorPullback_pushforward_covering /-
+theorem CategoryTheory.Functor.IsCoverDense.functorPullback_pushforward_covering [Full G]
+    (H : CategoryTheory.Functor.IsCoverDense K G) {X : C} (T : K (G.obj X)) :
+    (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
   by
   refine' K.superset_covering _ (K.bind_covering T.property fun Y f Hf => H.is_cover Y)
   rintro Y _ ⟨Z, _, f, hf, ⟨W, g, f', ⟨rfl⟩⟩, rfl⟩
@@ -136,37 +138,39 @@ theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X :
   constructor
   · simpa using T.val.downward_closed hf f'
   · simp
-#align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_covering
+#align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.Functor.IsCoverDense.functorPullback_pushforward_covering
 -/
 
-#print CategoryTheory.CoverDense.homOver /-
+#print CategoryTheory.Functor.IsCoverDense.homOver /-
 /-- (Implementation). Given an hom between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain an hom between the pullbacks of the sheaves of maps from `X`.
 -/
 @[simps]
-def homOver {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A} (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) (X : A) :
+def CategoryTheory.Functor.IsCoverDense.homOver {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A}
+    (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) (X : A) :
     G.op ⋙ ℱ ⋙ coyoneda.obj (op X) ⟶ G.op ⋙ (sheafOver ℱ' X).val :=
   whiskerRight α (coyoneda.obj (op X))
-#align category_theory.cover_dense.hom_over CategoryTheory.CoverDense.homOver
+#align category_theory.cover_dense.hom_over CategoryTheory.Functor.IsCoverDense.homOver
 -/
 
-#print CategoryTheory.CoverDense.isoOver /-
+#print CategoryTheory.Functor.IsCoverDense.isoOver /-
 /-- (Implementation). Given an iso between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain an iso between the pullbacks of the sheaves of maps from `X`.
 -/
 @[simps]
-def isoOver {ℱ ℱ' : Sheaf K A} (α : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) (X : A) :
+def CategoryTheory.Functor.IsCoverDense.isoOver {ℱ ℱ' : Sheaf K A}
+    (α : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) (X : A) :
     G.op ⋙ (sheafOver ℱ X).val ≅ G.op ⋙ (sheafOver ℱ' X).val :=
   isoWhiskerRight α (coyoneda.obj (op X))
-#align category_theory.cover_dense.iso_over CategoryTheory.CoverDense.isoOver
+#align category_theory.cover_dense.iso_over CategoryTheory.Functor.IsCoverDense.isoOver
 -/
 
-#print CategoryTheory.CoverDense.sheaf_eq_amalgamation /-
-theorem sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D} {T : Sieve U} (hT)
-    (x : FamilyOfElements _ T) (hx) (t) (h : x.IsAmalgamation t) :
+#print CategoryTheory.Functor.IsCoverDense.sheaf_eq_amalgamation /-
+theorem CategoryTheory.Functor.IsCoverDense.sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D}
+    {T : Sieve U} (hT) (x : FamilyOfElements _ T) (hx) (t) (h : x.IsAmalgamation t) :
     t = (ℱ.cond X T hT).amalgamate x hx :=
   (ℱ.cond X T hT).IsSeparatedFor x t _ h ((ℱ.cond X T hT).IsAmalgamation hx)
-#align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.CoverDense.sheaf_eq_amalgamation
+#align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.Functor.IsCoverDense.sheaf_eq_amalgamation
 -/
 
 variable [Full G]
@@ -175,20 +179,22 @@ namespace Types
 
 variable {ℱ : Dᵒᵖ ⥤ Type v} {ℱ' : SheafOfTypes.{v} K} (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val)
 
-#print CategoryTheory.CoverDense.Types.pushforwardFamily /-
+#print CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily /-
 /--
 (Implementation). Given a section of `ℱ` on `X`, we can obtain a family of elements valued in `ℱ'`
 that is defined on a cover generated by the images of `G`. -/
 @[simp, nolint unused_arguments]
-noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
-    FamilyOfElements ℱ'.val (coverByImage G X) := fun Y f hf =>
+noncomputable def CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily {X}
+    (x : ℱ.obj (op X)) : FamilyOfElements ℱ'.val (coverByImage G X) := fun Y f hf =>
   ℱ'.val.map hf.some.lift.op <| α.app (op _) (ℱ.map hf.some.map.op x : _)
-#align category_theory.cover_dense.types.pushforward_family CategoryTheory.CoverDense.Types.pushforwardFamily
+#align category_theory.cover_dense.types.pushforward_family CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily
 -/
 
-#print CategoryTheory.CoverDense.Types.pushforwardFamily_compatible /-
+#print CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_compatible /-
 /-- (Implementation). The `pushforward_family` defined is compatible. -/
-theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFamily α x).Compatible :=
+theorem CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_compatible {X}
+    (x : ℱ.obj (op X)) :
+    (CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily α x).Compatible :=
   by
   intro Y₁ Y₂ Z g₁ g₂ f₁ f₂ h₁ h₂ e
   apply H.ext
@@ -204,20 +210,26 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFami
     ℱ.map_comp, G.image_preimage]
   congr 3
   simp [e]
-#align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.CoverDense.Types.pushforwardFamily_compatible
+#align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_compatible
 -/
 
-#print CategoryTheory.CoverDense.Types.appHom /-
+#print CategoryTheory.Functor.IsCoverDense.Types.appHom /-
 /-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforward_family`. -/
-noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
-  (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily α x) (pushforwardFamily_compatible H α x)
-#align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHom
+noncomputable def CategoryTheory.Functor.IsCoverDense.Types.appHom (X : D) :
+    ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
+  (ℱ'.cond _ (H.is_cover X)).amalgamate
+    (CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily α x)
+    (CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_compatible H α x)
+#align category_theory.cover_dense.types.app_hom CategoryTheory.Functor.IsCoverDense.Types.appHom
 -/
 
-#print CategoryTheory.CoverDense.Types.pushforwardFamily_apply /-
+#print CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_apply /-
 @[simp]
-theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
-    pushforwardFamily α x f (Presieve.in_coverByImage G f) = α.app (op Y) (ℱ.map f.op x) :=
+theorem CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_apply {X} (x : ℱ.obj (op X))
+    {Y : C} (f : G.obj Y ⟶ X) :
+    CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily α x f
+        (Presieve.in_coverByImage G f) =
+      α.app (op Y) (ℱ.map f.op x) :=
   by
   unfold pushforward_family
   refine' congr_fun _ x
@@ -226,84 +238,92 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
   erw [← α.naturality (G.preimage _).op]
   simp only [← functor.map_comp, ← category.assoc, functor.comp_map, G.image_preimage, G.op_map,
     Quiver.Hom.unop_op, ← op_comp, presieve.cover_by_image_structure.fac]
-#align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_apply
+#align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_apply
 -/
 
-#print CategoryTheory.CoverDense.Types.appHom_restrict /-
+#print CategoryTheory.Functor.IsCoverDense.Types.appHom_restrict /-
 @[simp]
-theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
-    ℱ'.val.map f (appHom H α X x) = α.app (op Y) (ℱ.map f x) :=
+theorem CategoryTheory.Functor.IsCoverDense.Types.appHom_restrict {X : D} {Y : C}
+    (f : op X ⟶ op (G.obj Y)) (x) :
+    ℱ'.val.map f (CategoryTheory.Functor.IsCoverDense.Types.appHom H α X x) =
+      α.app (op Y) (ℱ.map f x) :=
   by
   refine'
     ((ℱ'.cond _ (H.is_cover X)).valid_glue (pushforward_family_compatible H α x) f.unop
           (presieve.in_cover_by_image G f.unop)).trans
       _
   apply pushforward_family_apply
-#align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrict
+#align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.Functor.IsCoverDense.Types.appHom_restrict
 -/
 
-#print CategoryTheory.CoverDense.Types.appHom_valid_glue /-
+#print CategoryTheory.Functor.IsCoverDense.Types.appHom_valid_glue /-
 @[simp]
-theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
-    appHom H α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) := by ext; apply app_hom_restrict
-#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glue
+theorem CategoryTheory.Functor.IsCoverDense.Types.appHom_valid_glue {X : D} {Y : C}
+    (f : op X ⟶ op (G.obj Y)) :
+    CategoryTheory.Functor.IsCoverDense.Types.appHom H α X ≫ ℱ'.val.map f =
+      ℱ.map f ≫ α.app (op Y) :=
+  by ext; apply app_hom_restrict
+#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.Functor.IsCoverDense.Types.appHom_valid_glue
 -/
 
-#print CategoryTheory.CoverDense.Types.appIso /-
+#print CategoryTheory.Functor.IsCoverDense.Types.appIso /-
 /--
 (Implementation). The maps given in `app_iso` is inverse to each other and gives a `ℱ(X) ≅ ℱ'(X)`.
 -/
 @[simps]
-noncomputable def appIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) (X : D) :
-    ℱ.val.obj (op X) ≅ ℱ'.val.obj (op X)
+noncomputable def CategoryTheory.Functor.IsCoverDense.Types.appIso {ℱ ℱ' : SheafOfTypes.{v} K}
+    (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) (X : D) : ℱ.val.obj (op X) ≅ ℱ'.val.obj (op X)
     where
-  Hom := appHom H i.Hom X
-  inv := appHom H i.inv X
+  Hom := CategoryTheory.Functor.IsCoverDense.Types.appHom H i.Hom X
+  inv := CategoryTheory.Functor.IsCoverDense.Types.appHom H i.inv X
   hom_inv_id' := by ext x; apply H.ext; intro Y f; simp
   inv_hom_id' := by ext x; apply H.ext; intro Y f; simp
-#align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIso
+#align category_theory.cover_dense.types.app_iso CategoryTheory.Functor.IsCoverDense.Types.appIso
 -/
 
-#print CategoryTheory.CoverDense.Types.presheafHom /-
+#print CategoryTheory.Functor.IsCoverDense.Types.presheafHom /-
 /-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of types, where `G` is full
 and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation between sheaves.
 -/
 @[simps]
-noncomputable def presheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ ℱ'.val
+noncomputable def CategoryTheory.Functor.IsCoverDense.Types.presheafHom
+    (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ ℱ'.val
     where
-  app X := appHom H α (unop X)
+  app X := CategoryTheory.Functor.IsCoverDense.Types.appHom H α (unop X)
   naturality' X Y f := by
     ext x
     apply H.ext ℱ' (unop Y)
     intro Y' f'
     simp only [app_hom_restrict, types_comp_apply, ← functor_to_types.map_comp_apply]
     rw [app_hom_restrict H α (f ≫ f'.op : op (unop X) ⟶ _)]
-#align category_theory.cover_dense.types.presheaf_hom CategoryTheory.CoverDense.Types.presheafHom
+#align category_theory.cover_dense.types.presheaf_hom CategoryTheory.Functor.IsCoverDense.Types.presheafHom
 -/
 
-#print CategoryTheory.CoverDense.Types.presheafIso /-
+#print CategoryTheory.Functor.IsCoverDense.Types.presheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full and
 cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between presheaves.
 -/
 @[simps]
-noncomputable def presheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) :
-    ℱ.val ≅ ℱ'.val :=
-  NatIso.ofComponents (fun X => appIso H i (unop X)) (presheafHom H i.Hom).naturality
-#align category_theory.cover_dense.types.presheaf_iso CategoryTheory.CoverDense.Types.presheafIso
+noncomputable def CategoryTheory.Functor.IsCoverDense.Types.presheafIso {ℱ ℱ' : SheafOfTypes.{v} K}
+    (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ.val ≅ ℱ'.val :=
+  NatIso.ofComponents (fun X => CategoryTheory.Functor.IsCoverDense.Types.appIso H i (unop X))
+    (CategoryTheory.Functor.IsCoverDense.Types.presheafHom H i.Hom).naturality
+#align category_theory.cover_dense.types.presheaf_iso CategoryTheory.Functor.IsCoverDense.Types.presheafIso
 -/
 
-#print CategoryTheory.CoverDense.Types.sheafIso /-
+#print CategoryTheory.Functor.IsCoverDense.Types.sheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full and
 cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between sheaves.
 -/
 @[simps]
-noncomputable def sheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ ≅ ℱ'
+noncomputable def CategoryTheory.Functor.IsCoverDense.Types.sheafIso {ℱ ℱ' : SheafOfTypes.{v} K}
+    (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ ≅ ℱ'
     where
-  Hom := ⟨(presheafIso H i).Hom⟩
-  inv := ⟨(presheafIso H i).inv⟩
+  Hom := ⟨(CategoryTheory.Functor.IsCoverDense.Types.presheafIso H i).Hom⟩
+  inv := ⟨(CategoryTheory.Functor.IsCoverDense.Types.presheafIso H i).inv⟩
   hom_inv_id' := by ext1; apply (presheaf_iso H i).hom_inv_id
   inv_hom_id' := by ext1; apply (presheaf_iso H i).inv_hom_id
-#align category_theory.cover_dense.types.sheaf_iso CategoryTheory.CoverDense.Types.sheafIso
+#align category_theory.cover_dense.types.sheaf_iso CategoryTheory.Functor.IsCoverDense.Types.sheafIso
 -/
 
 end Types
@@ -312,14 +332,17 @@ open Types
 
 variable {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A}
 
-#print CategoryTheory.CoverDense.sheafCoyonedaHom /-
+#print CategoryTheory.Functor.IsCoverDense.sheafCoyonedaHom /-
 /-- (Implementation). The sheaf map given in `types.sheaf_hom` is natural in terms of `X`. -/
 @[simps]
-noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
+noncomputable def CategoryTheory.Functor.IsCoverDense.sheafCoyonedaHom
+    (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     coyoneda ⋙ (whiskeringLeft Dᵒᵖ A (Type _)).obj ℱ ⟶
       coyoneda ⋙ (whiskeringLeft Dᵒᵖ A (Type _)).obj ℱ'.val
     where
-  app X := presheafHom H (homOver α (unop X))
+  app X :=
+    CategoryTheory.Functor.IsCoverDense.Types.presheafHom H
+      (CategoryTheory.Functor.IsCoverDense.homOver α (unop X))
   naturality' X Y f := by
     ext U x
     change
@@ -338,14 +361,15 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     congr 1
     refine' (app_hom_restrict H (hom_over α (unop X)) hf'.some.map.op x).trans _
     simp
-#align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHom
+#align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.Functor.IsCoverDense.sheafCoyonedaHom
 -/
 
-#print CategoryTheory.CoverDense.sheafYonedaHom /-
+#print CategoryTheory.Functor.IsCoverDense.sheafYonedaHom /-
 /--
 (Implementation). `sheaf_coyoneda_hom` but the order of the arguments of the functor are swapped.
 -/
-noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⋙ yoneda ⟶ ℱ'.val ⋙ yoneda :=
+noncomputable def CategoryTheory.Functor.IsCoverDense.sheafYonedaHom
+    (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⋙ yoneda ⟶ ℱ'.val ⋙ yoneda :=
   by
   let α := sheaf_coyoneda_hom H α
   refine'
@@ -358,29 +382,30 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ
   · intro U V i
     ext X x
     exact congr_fun ((α.app X).naturality i) x
-#align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
+#align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.Functor.IsCoverDense.sheafYonedaHom
 -/
 
-#print CategoryTheory.CoverDense.sheafHom /-
+#print CategoryTheory.Functor.IsCoverDense.sheafHom /-
 /-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation
 between presheaves.
 -/
-noncomputable def sheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ ℱ'.val :=
-  let α' := sheafYonedaHom H α
+noncomputable def CategoryTheory.Functor.IsCoverDense.sheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
+    ℱ ⟶ ℱ'.val :=
+  let α' := CategoryTheory.Functor.IsCoverDense.sheafYonedaHom H α
   { app := fun X => yoneda.preimage (α'.app X)
     naturality' := fun X Y f => yoneda.map_injective (by simpa using α'.naturality f) }
-#align category_theory.cover_dense.sheaf_hom CategoryTheory.CoverDense.sheafHom
+#align category_theory.cover_dense.sheaf_hom CategoryTheory.Functor.IsCoverDense.sheafHom
 -/
 
-#print CategoryTheory.CoverDense.presheafIso /-
+#print CategoryTheory.Functor.IsCoverDense.presheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
 -/
 @[simps]
-noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) :
-    ℱ.val ≅ ℱ'.val :=
+noncomputable def CategoryTheory.Functor.IsCoverDense.presheafIso {ℱ ℱ' : Sheaf K A}
+    (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ.val ≅ ℱ'.val :=
   by
   have : ∀ X : Dᵒᵖ, is_iso ((sheaf_hom H i.hom).app X) :=
     by
@@ -394,28 +419,30 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
     infer_instance
   haveI : is_iso (sheaf_hom H i.hom) := by apply nat_iso.is_iso_of_is_iso_app
   apply as_iso (sheaf_hom H i.hom)
-#align category_theory.cover_dense.presheaf_iso CategoryTheory.CoverDense.presheafIso
+#align category_theory.cover_dense.presheaf_iso CategoryTheory.Functor.IsCoverDense.presheafIso
 -/
 
-#print CategoryTheory.CoverDense.sheafIso /-
+#print CategoryTheory.Functor.IsCoverDense.sheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
 -/
 @[simps]
-noncomputable def sheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ ≅ ℱ'
+noncomputable def CategoryTheory.Functor.IsCoverDense.sheafIso {ℱ ℱ' : Sheaf K A}
+    (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ ≅ ℱ'
     where
-  Hom := ⟨(presheafIso H i).Hom⟩
-  inv := ⟨(presheafIso H i).inv⟩
+  Hom := ⟨(CategoryTheory.Functor.IsCoverDense.presheafIso H i).Hom⟩
+  inv := ⟨(CategoryTheory.Functor.IsCoverDense.presheafIso H i).inv⟩
   hom_inv_id' := by ext1; apply (presheaf_iso H i).hom_inv_id
   inv_hom_id' := by ext1; apply (presheaf_iso H i).inv_hom_id
-#align category_theory.cover_dense.sheaf_iso CategoryTheory.CoverDense.sheafIso
+#align category_theory.cover_dense.sheaf_iso CategoryTheory.Functor.IsCoverDense.sheafIso
 -/
 
-#print CategoryTheory.CoverDense.sheafHom_restrict_eq /-
+#print CategoryTheory.Functor.IsCoverDense.sheafHom_restrict_eq /-
 /-- The constructed `sheaf_hom α` is equal to `α` when restricted onto `C`.
 -/
-theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whiskerLeft G.op (sheafHom H α) = α :=
+theorem CategoryTheory.Functor.IsCoverDense.sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
+    whiskerLeft G.op (CategoryTheory.Functor.IsCoverDense.sheafHom H α) = α :=
   by
   ext X
   apply yoneda.map_injective
@@ -435,14 +462,15 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whisker
   symm
   apply α.naturality (G.preimage hf.some.map).op
   infer_instance
-#align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eq
+#align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.Functor.IsCoverDense.sheafHom_restrict_eq
 -/
 
-#print CategoryTheory.CoverDense.sheafHom_eq /-
+#print CategoryTheory.Functor.IsCoverDense.sheafHom_eq /-
 /-- If the pullback map is obtained via whiskering,
 then the result `sheaf_hom (whisker_left G.op α)` is equal to `α`.
 -/
-theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom H (whiskerLeft G.op α) = α :=
+theorem CategoryTheory.Functor.IsCoverDense.sheafHom_eq (α : ℱ ⟶ ℱ'.val) :
+    CategoryTheory.Functor.IsCoverDense.sheafHom H (whiskerLeft G.op α) = α :=
   by
   ext X
   apply yoneda.map_injective
@@ -456,39 +484,40 @@ theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom H (whiskerLeft G.op α) =
   conv_lhs => rw [← hf.some.fac]
   dsimp
   simp
-#align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.CoverDense.sheafHom_eq
+#align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.Functor.IsCoverDense.sheafHom_eq
 -/
 
-#print CategoryTheory.CoverDense.restrictHomEquivHom /-
+#print CategoryTheory.Functor.IsCoverDense.restrictHomEquivHom /-
 /-- A full and cover-dense functor `G` induces an equivalence between morphisms into a sheaf and
 morphisms over the restrictions via `G`.
 -/
-noncomputable def restrictHomEquivHom : (G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) ≃ (ℱ ⟶ ℱ'.val)
+noncomputable def CategoryTheory.Functor.IsCoverDense.restrictHomEquivHom :
+    (G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) ≃ (ℱ ⟶ ℱ'.val)
     where
-  toFun := sheafHom H
+  toFun := CategoryTheory.Functor.IsCoverDense.sheafHom H
   invFun := whiskerLeft G.op
-  left_inv := sheafHom_restrict_eq H
-  right_inv := sheafHom_eq H
-#align category_theory.cover_dense.restrict_hom_equiv_hom CategoryTheory.CoverDense.restrictHomEquivHom
+  left_inv := CategoryTheory.Functor.IsCoverDense.sheafHom_restrict_eq H
+  right_inv := CategoryTheory.Functor.IsCoverDense.sheafHom_eq H
+#align category_theory.cover_dense.restrict_hom_equiv_hom CategoryTheory.Functor.IsCoverDense.restrictHomEquivHom
 -/
 
-#print CategoryTheory.CoverDense.iso_of_restrict_iso /-
+#print CategoryTheory.Functor.IsCoverDense.iso_of_restrict_iso /-
 /-- Given a full and cover-dense functor `G` and a natural transformation of sheaves `α : ℱ ⟶ ℱ'`,
 if the pullback of `α` along `G` is iso, then `α` is also iso.
 -/
-theorem iso_of_restrict_iso {ℱ ℱ' : Sheaf K A} (α : ℱ ⟶ ℱ') (i : IsIso (whiskerLeft G.op α.val)) :
-    IsIso α :=
+theorem CategoryTheory.Functor.IsCoverDense.iso_of_restrict_iso {ℱ ℱ' : Sheaf K A} (α : ℱ ⟶ ℱ')
+    (i : IsIso (whiskerLeft G.op α.val)) : IsIso α :=
   by
   convert is_iso.of_iso (sheaf_iso H (as_iso (whisker_left G.op α.val))) using 1
   ext1
   apply (sheaf_hom_eq _ _).symm
-#align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.CoverDense.iso_of_restrict_iso
+#align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.Functor.IsCoverDense.iso_of_restrict_iso
 -/
 
-#print CategoryTheory.CoverDense.compatiblePreserving /-
+#print CategoryTheory.Functor.IsCoverDense.compatiblePreserving /-
 /-- A fully faithful cover-dense functor preserves compatible families. -/
-theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
-  by
+theorem CategoryTheory.Functor.IsCoverDense.compatiblePreserving [Faithful G] :
+    CompatiblePreserving K G := by
   constructor
   intro ℱ Z T x hx Y₁ Y₂ X f₁ f₂ g₁ g₂ hg₁ hg₂ eq
   apply H.ext
@@ -499,35 +528,37 @@ theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
   apply hx
   apply G.map_injective
   simp [Eq]
-#align category_theory.cover_dense.compatible_preserving CategoryTheory.CoverDense.compatiblePreserving
+#align category_theory.cover_dense.compatible_preserving CategoryTheory.Functor.IsCoverDense.compatiblePreserving
 -/
 
-#print CategoryTheory.CoverDense.Sites.Pullback.full /-
-noncomputable instance Sites.Pullback.full [Faithful G] (Hp : CoverPreserving J K G) :
-    Full (Sites.pullback A H.CompatiblePreserving Hp)
+#print CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous /-
+noncomputable instance CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous
+    [Faithful G] (Hp : CoverPreserving J K G) :
+    Full (Functor.sheafPushforwardContinuous A H.CompatiblePreserving Hp)
     where
   preimage ℱ ℱ' α := ⟨H.sheafHom α.val⟩
   witness' ℱ ℱ' α := Sheaf.Hom.ext _ _ <| H.sheafHom_restrict_eq α.val
-#align category_theory.cover_dense.sites.pullback.full CategoryTheory.CoverDense.Sites.Pullback.full
+#align category_theory.cover_dense.sites.pullback.full CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous
 -/
 
-#print CategoryTheory.CoverDense.Sites.Pullback.faithful /-
-instance Sites.Pullback.faithful [Faithful G] (Hp : CoverPreserving J K G) :
-    Faithful (Sites.pullback A H.CompatiblePreserving Hp)
+#print CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous /-
+instance CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous [Faithful G]
+    (Hp : CoverPreserving J K G) :
+    Faithful (Functor.sheafPushforwardContinuous A H.CompatiblePreserving Hp)
     where map_injective' := by
     intro ℱ ℱ' α β e
     ext1
     apply_fun fun e => e.val at e 
     dsimp at e 
     rw [← H.sheaf_hom_eq α.val, ← H.sheaf_hom_eq β.val, e]
-#align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.CoverDense.Sites.Pullback.faithful
+#align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous
 -/
 
 end CoverDense
 
 end CategoryTheory
 
-namespace CategoryTheory.CoverDense
+namespace CategoryTheory.Functor.IsCoverDense
 
 open CategoryTheory
 
@@ -539,17 +570,18 @@ variable {J : GrothendieckTopology C} {K : GrothendieckTopology D}
 
 variable {A : Type w} [Category.{max u v} A] [Limits.HasLimits A]
 
-variable (Hd : CoverDense K G) (Hp : CoverPreserving J K G) (Hl : CoverLifting J K G)
+variable (Hd : CategoryTheory.Functor.IsCoverDense K G) (Hp : CoverPreserving J K G)
+  (Hl : CategoryTheory.Functor.IsCocontinuous J K G)
 
-#print CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting /-
+#print CategoryTheory.Functor.IsCoverDense.sheafEquivOfCoverPreservingCoverLifting /-
 /-- Given a functor between small sites that is cover-dense, cover-preserving, and cover-lifting,
 it induces an equivalence of category of sheaves valued in a complete category.
 -/
 @[simps Functor inverse]
-noncomputable def sheafEquivOfCoverPreservingCoverLifting : Sheaf J A ≌ Sheaf K A :=
-  by
+noncomputable def CategoryTheory.Functor.IsCoverDense.sheafEquivOfCoverPreservingCoverLifting :
+    Sheaf J A ≌ Sheaf K A := by
   symm
-  let α := Sites.pullbackCopullbackAdjunction.{w, v, u} A Hp Hl Hd.compatible_preserving
+  let α := Functor.sheafAdjunctionCocontinuous.{w, v, u} A Hp Hl Hd.compatible_preserving
   have : ∀ X : Sheaf J A, is_iso (α.counit.app X) :=
     by
     intro ℱ
@@ -562,8 +594,8 @@ noncomputable def sheafEquivOfCoverPreservingCoverLifting : Sheaf J A ≌ Sheaf
       unitIso := as_iso α.unit
       counitIso := as_iso α.counit
       functor_unitIso_comp' := fun ℱ => by convert α.left_triangle_components }
-#align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting
+#align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.Functor.IsCoverDense.sheafEquivOfCoverPreservingCoverLifting
 -/
 
-end CategoryTheory.CoverDense
+end CategoryTheory.Functor.IsCoverDense
 
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 -/
-import Mathbin.CategoryTheory.Sites.Sheaf
-import Mathbin.CategoryTheory.Sites.CoverLifting
-import Mathbin.CategoryTheory.Adjunction.FullyFaithful
+import CategoryTheory.Sites.Sheaf
+import CategoryTheory.Sites.CoverLifting
+import CategoryTheory.Adjunction.FullyFaithful
 
 #align_import category_theory.sites.dense_subsite from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
 
Diff
@@ -68,8 +68,6 @@ structure Presieve.CoverByImageStructure (G : C ⥤ D) {V U : D} (f : V ⟶ U) w
 #align category_theory.presieve.cover_by_image_structure CategoryTheory.Presieve.CoverByImageStructure
 -/
 
-restate_axiom presieve.cover_by_image_structure.fac'
-
 attribute [simp, reassoc] presieve.cover_by_image_structure.fac
 
 #print CategoryTheory.Presieve.coverByImage /-
Diff
@@ -388,7 +388,7 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
     by
     intro X
     apply is_iso_of_reflects_iso _ yoneda
-    use (sheaf_yoneda_hom H i.inv).app X
+    use(sheaf_yoneda_hom H i.inv).app X
     constructor <;> ext x : 2 <;>
       simp only [sheaf_hom, nat_trans.comp_app, nat_trans.id_app, functor.image_preimage]
     exact ((presheaf_iso H (iso_over i (unop x))).app X).hom_inv_id
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module category_theory.sites.dense_subsite
-! leanprover-community/mathlib commit 2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Sites.Sheaf
 import Mathbin.CategoryTheory.Sites.CoverLifting
 import Mathbin.CategoryTheory.Adjunction.FullyFaithful
 
+#align_import category_theory.sites.dense_subsite from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
+
 /-!
 # Dense subsites
 
Diff
@@ -326,7 +326,7 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     where
   app X := presheafHom H (homOver α (unop X))
   naturality' X Y f := by
-    ext (U x)
+    ext U x
     change
       app_hom H (hom_over α (unop Y)) (unop U) (f.unop ≫ x) =
         f.unop ≫ app_hom H (hom_over α (unop X)) (unop U) x
@@ -361,7 +361,7 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ
       { app := fun X => (α.app X).app U
         naturality' := fun X Y f => by simpa using congr_app (α.naturality f) U }
   · intro U V i
-    ext (X x)
+    ext X x
     exact congr_fun ((α.app X).naturality i) x
 #align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
 -/
Diff
@@ -94,10 +94,12 @@ def Sieve.coverByImage (G : C ⥤ D) (U : D) : Sieve U :=
 #align category_theory.sieve.cover_by_image CategoryTheory.Sieve.coverByImage
 -/
 
+#print CategoryTheory.Presieve.in_coverByImage /-
 theorem Presieve.in_coverByImage (G : C ⥤ D) {X : D} {Y : C} (f : G.obj Y ⟶ X) :
     Presieve.coverByImage G X f :=
   ⟨⟨Y, 𝟙 _, f, by simp⟩⟩
 #align category_theory.presieve.in_cover_by_image CategoryTheory.Presieve.in_coverByImage
+-/
 
 #print CategoryTheory.CoverDense /-
 /-- A functor `G : (C, J) ⥤ (D, K)` is called `cover_dense` if for each object in `D`,
@@ -118,6 +120,7 @@ variable {K}
 
 variable {A : Type _} [Category A] {G : C ⥤ D} (H : CoverDense K G)
 
+#print CategoryTheory.CoverDense.ext /-
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
 theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
     (h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t) : s = t :=
@@ -126,7 +129,9 @@ theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.o
   rintro Y _ ⟨Z, f₁, f₂, ⟨rfl⟩⟩
   simp [h f₂]
 #align category_theory.cover_dense.ext CategoryTheory.CoverDense.ext
+-/
 
+#print CategoryTheory.CoverDense.functorPullback_pushforward_covering /-
 theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X : C}
     (T : K (G.obj X)) : (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
   by
@@ -137,7 +142,9 @@ theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X :
   · simpa using T.val.downward_closed hf f'
   · simp
 #align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_covering
+-/
 
+#print CategoryTheory.CoverDense.homOver /-
 /-- (Implementation). Given an hom between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain an hom between the pullbacks of the sheaves of maps from `X`.
 -/
@@ -146,6 +153,7 @@ def homOver {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A} (α : G.op ⋙ ℱ ⟶ G.op
     G.op ⋙ ℱ ⋙ coyoneda.obj (op X) ⟶ G.op ⋙ (sheafOver ℱ' X).val :=
   whiskerRight α (coyoneda.obj (op X))
 #align category_theory.cover_dense.hom_over CategoryTheory.CoverDense.homOver
+-/
 
 #print CategoryTheory.CoverDense.isoOver /-
 /-- (Implementation). Given an iso between the pullbacks of two sheaves, we can whisker it with
@@ -158,11 +166,13 @@ def isoOver {ℱ ℱ' : Sheaf K A} (α : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val)
 #align category_theory.cover_dense.iso_over CategoryTheory.CoverDense.isoOver
 -/
 
+#print CategoryTheory.CoverDense.sheaf_eq_amalgamation /-
 theorem sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D} {T : Sieve U} (hT)
     (x : FamilyOfElements _ T) (hx) (t) (h : x.IsAmalgamation t) :
     t = (ℱ.cond X T hT).amalgamate x hx :=
   (ℱ.cond X T hT).IsSeparatedFor x t _ h ((ℱ.cond X T hT).IsAmalgamation hx)
 #align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.CoverDense.sheaf_eq_amalgamation
+-/
 
 variable [Full G]
 
@@ -170,6 +180,7 @@ namespace Types
 
 variable {ℱ : Dᵒᵖ ⥤ Type v} {ℱ' : SheafOfTypes.{v} K} (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val)
 
+#print CategoryTheory.CoverDense.Types.pushforwardFamily /-
 /--
 (Implementation). Given a section of `ℱ` on `X`, we can obtain a family of elements valued in `ℱ'`
 that is defined on a cover generated by the images of `G`. -/
@@ -178,9 +189,9 @@ noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
     FamilyOfElements ℱ'.val (coverByImage G X) := fun Y f hf =>
   ℱ'.val.map hf.some.lift.op <| α.app (op _) (ℱ.map hf.some.map.op x : _)
 #align category_theory.cover_dense.types.pushforward_family CategoryTheory.CoverDense.Types.pushforwardFamily
+-/
 
-include H
-
+#print CategoryTheory.CoverDense.Types.pushforwardFamily_compatible /-
 /-- (Implementation). The `pushforward_family` defined is compatible. -/
 theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFamily α x).Compatible :=
   by
@@ -199,14 +210,16 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFami
   congr 3
   simp [e]
 #align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.CoverDense.Types.pushforwardFamily_compatible
+-/
 
-omit H
-
+#print CategoryTheory.CoverDense.Types.appHom /-
 /-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforward_family`. -/
 noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
   (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily α x) (pushforwardFamily_compatible H α x)
 #align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHom
+-/
 
+#print CategoryTheory.CoverDense.Types.pushforwardFamily_apply /-
 @[simp]
 theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
     pushforwardFamily α x f (Presieve.in_coverByImage G f) = α.app (op Y) (ℱ.map f.op x) :=
@@ -219,7 +232,9 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
   simp only [← functor.map_comp, ← category.assoc, functor.comp_map, G.image_preimage, G.op_map,
     Quiver.Hom.unop_op, ← op_comp, presieve.cover_by_image_structure.fac]
 #align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_apply
+-/
 
+#print CategoryTheory.CoverDense.Types.appHom_restrict /-
 @[simp]
 theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
     ℱ'.val.map f (appHom H α X x) = α.app (op Y) (ℱ.map f x) :=
@@ -230,12 +245,16 @@ theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
       _
   apply pushforward_family_apply
 #align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrict
+-/
 
+#print CategoryTheory.CoverDense.Types.appHom_valid_glue /-
 @[simp]
 theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
     appHom H α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) := by ext; apply app_hom_restrict
 #align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glue
+-/
 
+#print CategoryTheory.CoverDense.Types.appIso /-
 /--
 (Implementation). The maps given in `app_iso` is inverse to each other and gives a `ℱ(X) ≅ ℱ'(X)`.
 -/
@@ -248,6 +267,7 @@ noncomputable def appIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val 
   hom_inv_id' := by ext x; apply H.ext; intro Y f; simp
   inv_hom_id' := by ext x; apply H.ext; intro Y f; simp
 #align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIso
+-/
 
 #print CategoryTheory.CoverDense.Types.presheafHom /-
 /-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of types, where `G` is full
@@ -297,6 +317,7 @@ open Types
 
 variable {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A}
 
+#print CategoryTheory.CoverDense.sheafCoyonedaHom /-
 /-- (Implementation). The sheaf map given in `types.sheaf_hom` is natural in terms of `X`. -/
 @[simps]
 noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
@@ -323,8 +344,7 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     refine' (app_hom_restrict H (hom_over α (unop X)) hf'.some.map.op x).trans _
     simp
 #align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHom
-
-include H
+-/
 
 #print CategoryTheory.CoverDense.sheafYonedaHom /-
 /--
@@ -346,8 +366,6 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ
 #align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
 -/
 
-omit H
-
 #print CategoryTheory.CoverDense.sheafHom /-
 /-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation
@@ -360,8 +378,6 @@ noncomputable def sheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ 
 #align category_theory.cover_dense.sheaf_hom CategoryTheory.CoverDense.sheafHom
 -/
 
-include H
-
 #print CategoryTheory.CoverDense.presheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
@@ -386,8 +402,6 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
 #align category_theory.cover_dense.presheaf_iso CategoryTheory.CoverDense.presheafIso
 -/
 
-omit H
-
 #print CategoryTheory.CoverDense.sheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
@@ -403,6 +417,7 @@ noncomputable def sheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op
 #align category_theory.cover_dense.sheaf_iso CategoryTheory.CoverDense.sheafIso
 -/
 
+#print CategoryTheory.CoverDense.sheafHom_restrict_eq /-
 /-- The constructed `sheaf_hom α` is equal to `α` when restricted onto `C`.
 -/
 theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whiskerLeft G.op (sheafHom H α) = α :=
@@ -426,7 +441,9 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whisker
   apply α.naturality (G.preimage hf.some.map).op
   infer_instance
 #align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eq
+-/
 
+#print CategoryTheory.CoverDense.sheafHom_eq /-
 /-- If the pullback map is obtained via whiskering,
 then the result `sheaf_hom (whisker_left G.op α)` is equal to `α`.
 -/
@@ -445,6 +462,7 @@ theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom H (whiskerLeft G.op α) =
   dsimp
   simp
 #align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.CoverDense.sheafHom_eq
+-/
 
 #print CategoryTheory.CoverDense.restrictHomEquivHom /-
 /-- A full and cover-dense functor `G` induces an equivalence between morphisms into a sheaf and
@@ -459,8 +477,7 @@ noncomputable def restrictHomEquivHom : (G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) ≃
 #align category_theory.cover_dense.restrict_hom_equiv_hom CategoryTheory.CoverDense.restrictHomEquivHom
 -/
 
-include H
-
+#print CategoryTheory.CoverDense.iso_of_restrict_iso /-
 /-- Given a full and cover-dense functor `G` and a natural transformation of sheaves `α : ℱ ⟶ ℱ'`,
 if the pullback of `α` along `G` is iso, then `α` is also iso.
 -/
@@ -471,7 +488,9 @@ theorem iso_of_restrict_iso {ℱ ℱ' : Sheaf K A} (α : ℱ ⟶ ℱ') (i : IsIs
   ext1
   apply (sheaf_hom_eq _ _).symm
 #align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.CoverDense.iso_of_restrict_iso
+-/
 
+#print CategoryTheory.CoverDense.compatiblePreserving /-
 /-- A fully faithful cover-dense functor preserves compatible families. -/
 theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
   by
@@ -486,8 +505,7 @@ theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
   apply G.map_injective
   simp [Eq]
 #align category_theory.cover_dense.compatible_preserving CategoryTheory.CoverDense.compatiblePreserving
-
-omit H
+-/
 
 #print CategoryTheory.CoverDense.Sites.Pullback.full /-
 noncomputable instance Sites.Pullback.full [Faithful G] (Hp : CoverPreserving J K G) :
@@ -528,8 +546,7 @@ variable {A : Type w} [Category.{max u v} A] [Limits.HasLimits A]
 
 variable (Hd : CoverDense K G) (Hp : CoverPreserving J K G) (Hl : CoverLifting J K G)
 
-include Hd Hp Hl
-
+#print CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting /-
 /-- Given a functor between small sites that is cover-dense, cover-preserving, and cover-lifting,
 it induces an equivalence of category of sheaves valued in a complete category.
 -/
@@ -551,6 +568,7 @@ noncomputable def sheafEquivOfCoverPreservingCoverLifting : Sheaf J A ≌ Sheaf
       counitIso := as_iso α.counit
       functor_unitIso_comp' := fun ℱ => by convert α.left_triangle_components }
 #align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting
+-/
 
 end CategoryTheory.CoverDense
 
Diff
@@ -504,7 +504,7 @@ instance Sites.Pullback.faithful [Faithful G] (Hp : CoverPreserving J K G) :
     where map_injective' := by
     intro ℱ ℱ' α β e
     ext1
-    apply_fun fun e => e.val  at e 
+    apply_fun fun e => e.val at e 
     dsimp at e 
     rw [← H.sheaf_hom_eq α.val, ← H.sheaf_hom_eq β.val, e]
 #align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.CoverDense.Sites.Pullback.faithful
Diff
@@ -313,7 +313,7 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     apply sheaf_eq_amalgamation
     apply H.is_cover
     intro Y' f' hf'
-    change unop X ⟶ ℱ.obj (op (unop _)) at x
+    change unop X ⟶ ℱ.obj (op (unop _)) at x 
     dsimp
     simp only [pushforward_family, functor.comp_map, coyoneda_obj_map, hom_over_app, category.assoc]
     congr 1
@@ -504,8 +504,8 @@ instance Sites.Pullback.faithful [Faithful G] (Hp : CoverPreserving J K G) :
     where map_injective' := by
     intro ℱ ℱ' α β e
     ext1
-    apply_fun fun e => e.val  at e
-    dsimp at e
+    apply_fun fun e => e.val  at e 
+    dsimp at e 
     rw [← H.sheaf_hom_eq α.val, ← H.sheaf_hom_eq β.val, e]
 #align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.CoverDense.Sites.Pullback.faithful
 -/
Diff
@@ -94,12 +94,6 @@ def Sieve.coverByImage (G : C ⥤ D) (U : D) : Sieve U :=
 #align category_theory.sieve.cover_by_image CategoryTheory.Sieve.coverByImage
 -/
 
-/- warning: category_theory.presieve.in_cover_by_image -> CategoryTheory.Presieve.in_coverByImage is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] (G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2) {X : D} {Y : C} (f : Quiver.Hom.{succ u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X), CategoryTheory.Presieve.coverByImage.{u1, u2, u3, u4} C _inst_1 D _inst_2 G X (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) f
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u3, u1} D] (G : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2) {X : D} {Y : C} (f : Quiver.Hom.{succ u3, u1} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) Y) X), CategoryTheory.Presieve.coverByImage.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) Y) f
-Case conversion may be inaccurate. Consider using '#align category_theory.presieve.in_cover_by_image CategoryTheory.Presieve.in_coverByImageₓ'. -/
 theorem Presieve.in_coverByImage (G : C ⥤ D) {X : D} {Y : C} (f : G.obj Y ⟶ X) :
     Presieve.coverByImage G X f :=
   ⟨⟨Y, 𝟙 _, f, by simp⟩⟩
@@ -124,9 +118,6 @@ variable {K}
 
 variable {A : Type _} [Category A] {G : C ⥤ D} (H : CoverDense K G)
 
-/- warning: category_theory.cover_dense.ext -> CategoryTheory.CoverDense.ext is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.ext CategoryTheory.CoverDense.extₓ'. -/
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
 theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
     (h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t) : s = t :=
@@ -136,9 +127,6 @@ theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.o
   simp [h f₂]
 #align category_theory.cover_dense.ext CategoryTheory.CoverDense.ext
 
-/- warning: category_theory.cover_dense.functor_pullback_pushforward_covering -> CategoryTheory.CoverDense.functorPullback_pushforward_covering is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_coveringₓ'. -/
 theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X : C}
     (T : K (G.obj X)) : (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
   by
@@ -150,12 +138,6 @@ theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X :
   · simp
 #align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_covering
 
-/- warning: category_theory.cover_dense.hom_over -> CategoryTheory.CoverDense.homOver is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (forall (X : A), Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Functor.comp.{u4, u6, u6, u3, u5, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6} ℱ (CategoryTheory.Functor.obj.{u6, max u5 u6, u5, max u6 u5 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (Opposite.op.{succ u5} A X)))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u6, u4, u3} D _inst_2 K (CategoryTheory.sheafOver.{u4, u6, u3, u5} D _inst_2 A _inst_4 K ℱ' X))))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{max (succ u1) (succ u6), max (max (max u5 u1) u6) u2} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (forall (X : A), Quiver.Hom.{max (succ u1) (succ u6), max (max (max (succ u6) u1) u6) u2} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max (max u1 u2) (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max (max u1 u2) (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Functor.comp.{u4, u6, u6, u3, u5, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6} ℱ (Prefunctor.obj.{succ u6, max (succ u5) (succ u6), u5, max u5 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.CategoryStruct.toQuiver.{u6, u5} (Opposite.{succ u5} A) (CategoryTheory.Category.toCategoryStruct.{u6, u5} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4))) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u6, max u5 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Category.toCategoryStruct.{max u5 u6, max u5 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}))) (CategoryTheory.Functor.toPrefunctor.{u6, max u5 u6, u5, max u5 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4)) (Opposite.op.{succ u5} A X)))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u6, u4, u3} D _inst_2 K (CategoryTheory.sheafOver.{u4, u6, u3, u5} D _inst_2 A _inst_4 K ℱ' X))))
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.hom_over CategoryTheory.CoverDense.homOverₓ'. -/
 /-- (Implementation). Given an hom between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain an hom between the pullbacks of the sheaves of maps from `X`.
 -/
@@ -176,9 +158,6 @@ def isoOver {ℱ ℱ' : Sheaf K A} (α : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val)
 #align category_theory.cover_dense.iso_over CategoryTheory.CoverDense.isoOver
 -/
 
-/- warning: category_theory.cover_dense.sheaf_eq_amalgamation -> CategoryTheory.CoverDense.sheaf_eq_amalgamation is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.CoverDense.sheaf_eq_amalgamationₓ'. -/
 theorem sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D} {T : Sieve U} (hT)
     (x : FamilyOfElements _ T) (hx) (t) (h : x.IsAmalgamation t) :
     t = (ℱ.cond X T hT).amalgamate x hx :=
@@ -191,12 +170,6 @@ namespace Types
 
 variable {ℱ : Dᵒᵖ ⥤ Type v} {ℱ' : SheafOfTypes.{v} K} (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val)
 
-/- warning: category_theory.cover_dense.types.pushforward_family -> CategoryTheory.CoverDense.Types.pushforwardFamily is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall {X : D}, (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) -> (CategoryTheory.Presieve.FamilyOfElements.{u1, u5, u4} D _inst_2 X (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (CategoryTheory.Presieve.coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G X)))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} {_inst_5 : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{max (succ u1) (succ u2), max (max (max (succ u1) u2) u1) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) _inst_5) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ))) -> (forall {α : D}, (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} _inst_5) (Opposite.op.{succ u4} D α)) -> (CategoryTheory.Presieve.FamilyOfElements.{u1, u5, u4} D _inst_2 α (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ) (CategoryTheory.Presieve.coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G α)))
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.pushforward_family CategoryTheory.CoverDense.Types.pushforwardFamilyₓ'. -/
 /--
 (Implementation). Given a section of `ℱ` on `X`, we can obtain a family of elements valued in `ℱ'`
 that is defined on a cover generated by the images of `G`. -/
@@ -208,12 +181,6 @@ noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
 
 include H
 
-/- warning: category_theory.cover_dense.types.pushforward_family_compatible -> CategoryTheory.CoverDense.Types.pushforwardFamily_compatible is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} (x : CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u1, u5, u4} D _inst_2 (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') X (CategoryTheory.Presieve.coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G X) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G _inst_5 ℱ ℱ' α X x))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u1, u4, u2, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u1, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u1, u4, u2, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u2), max (max (max (succ u5) u2) u5) u1} (CategoryTheory.Functor.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u2, max (max (succ u5) u2) u1} (CategoryTheory.Functor.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u2, max (max (succ u5) u2) u1} (CategoryTheory.Functor.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u1, u4, u5, u2, u3, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u1, u4, u2, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u1, u4, u5, u2, u3, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u1, u4, u2, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} (x : Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u5, u4, u3} D _inst_2 (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ') X (CategoryTheory.Presieve.coverByImage.{u2, u1, u3, u4} C _inst_1 D _inst_2 G X) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u5, u2, u1, u3, u4} C _inst_1 D _inst_2 K G ℱ ℱ' α X x))
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.CoverDense.Types.pushforwardFamily_compatibleₓ'. -/
 /-- (Implementation). The `pushforward_family` defined is compatible. -/
 theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFamily α x).Compatible :=
   by
@@ -235,20 +202,11 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFami
 
 omit H
 
-/- warning: category_theory.cover_dense.types.app_hom -> CategoryTheory.CoverDense.Types.appHom is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X))))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{max (succ u1) (succ u2), max (max (max (succ u1) u2) u1) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ) (Opposite.op.{succ u4} D X)) (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) (Opposite.op.{succ u4} D X))))
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHomₓ'. -/
 /-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforward_family`. -/
 noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
   (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily α x) (pushforwardFamily_compatible H α x)
 #align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHom
 
-/- warning: category_theory.cover_dense.types.pushforward_family_apply -> CategoryTheory.CoverDense.Types.pushforwardFamily_apply is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_applyₓ'. -/
 @[simp]
 theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
     pushforwardFamily α x f (Presieve.in_coverByImage G f) = α.app (op Y) (ℱ.map f.op x) :=
@@ -262,9 +220,6 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
     Quiver.Hom.unop_op, ← op_comp, presieve.cover_by_image_structure.fac]
 #align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_apply
 
-/- warning: category_theory.cover_dense.types.app_hom_restrict -> CategoryTheory.CoverDense.Types.appHom_restrict is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrictₓ'. -/
 @[simp]
 theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
     ℱ'.val.map f (appHom H α X x) = α.app (op Y) (ℱ.map f x) :=
@@ -276,20 +231,11 @@ theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
   apply pushforward_family_apply
 #align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrict
 
-/- warning: category_theory.cover_dense.types.app_hom_valid_glue -> CategoryTheory.CoverDense.Types.appHom_valid_glue is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glueₓ'. -/
 @[simp]
 theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
     appHom H α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) := by ext; apply app_hom_restrict
 #align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glue
 
-/- warning: category_theory.cover_dense.types.app_iso -> CategoryTheory.CoverDense.Types.appIso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (CategoryTheory.Iso.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ)) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ) (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X))))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (CategoryTheory.Iso.{max u1 u2, max (max (max (succ u1) u2) u1) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ)) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ)) (Opposite.op.{succ u4} D X)) (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) (Opposite.op.{succ u4} D X))))
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIsoₓ'. -/
 /--
 (Implementation). The maps given in `app_iso` is inverse to each other and gives a `ℱ(X) ≅ ℱ'(X)`.
 -/
@@ -351,9 +297,6 @@ open Types
 
 variable {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A}
 
-/- warning: category_theory.cover_dense.sheaf_coyoneda_hom -> CategoryTheory.CoverDense.sheafCoyonedaHom is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHomₓ'. -/
 /-- (Implementation). The sheaf map given in `types.sheaf_hom` is natural in terms of `X`. -/
 @[simps]
 noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
@@ -460,12 +403,6 @@ noncomputable def sheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op
 #align category_theory.cover_dense.sheaf_iso CategoryTheory.CoverDense.sheafIso
 -/
 
-/- warning: category_theory.cover_dense.sheaf_hom_restrict_eq -> CategoryTheory.CoverDense.sheafHom_restrict_eq is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} (α : Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))), Eq.{succ (max u1 u6)} (Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) (CategoryTheory.whiskerLeft.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.CoverDense.sheafHom.{u1, u2, u3, u4, u5, u6} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' α)) α
-but is expected to have type
-  forall {C : Type.{u6}} [_inst_1 : CategoryTheory.Category.{u3, u6} C] {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u2, u1} D] {K : CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2} {A : Type.{u4}} [_inst_4 : CategoryTheory.Category.{u5, u4} A] {G : CategoryTheory.Functor.{u3, u2, u6, u1} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u6, u3, u1, u2} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u3, u2, u6, u1} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u2, u5, u1, u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u2, u5, u1, u4} D _inst_2 K A _inst_4} (α : Quiver.Hom.{max (succ u6) (succ u5), max (max (max u4 u6) u5) u3} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u3) u4) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u3) u4) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u2, u5, u1, u4} D _inst_2 K A _inst_4 ℱ'))), Eq.{max (succ u6) (succ u5)} (Quiver.Hom.{max (succ u6) (succ u5), max (max (max u4 u6) u5) u3} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u2, u5, u1, u4} D _inst_2 K A _inst_4 ℱ'))) (CategoryTheory.whiskerLeft.{u6, u3, u1, u2, u4, u5} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u2, u5, u1, u4} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.CoverDense.sheafHom.{u6, u3, u1, u2, u4, u5} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' α)) α
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eqₓ'. -/
 /-- The constructed `sheaf_hom α` is equal to `α` when restricted onto `C`.
 -/
 theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whiskerLeft G.op (sheafHom H α) = α :=
@@ -490,12 +427,6 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whisker
   infer_instance
 #align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eq
 
-/- warning: category_theory.cover_dense.sheaf_hom_eq -> CategoryTheory.CoverDense.sheafHom_eq is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} (α : Quiver.Hom.{succ (max u3 u6), max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')), Eq.{succ (max u3 u6)} (Quiver.Hom.{succ (max u3 u6), max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.CoverDense.sheafHom.{u1, u2, u3, u4, u5, u6} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' (CategoryTheory.whiskerLeft.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ') α)) α
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {D : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u4, u6} D] {K : CategoryTheory.GrothendieckTopology.{u4, u6} D _inst_2} {A : Type.{u3}} [_inst_4 : CategoryTheory.Category.{u5, u3} A] {G : CategoryTheory.Functor.{u1, u4, u2, u6} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u2, u1, u6, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u1, u4, u2, u6} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u5, u6, u3} D _inst_2 K A _inst_4} (α : Quiver.Hom.{max (succ u6) (succ u5), max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u5, u6, u3} D _inst_2 K A _inst_4 ℱ')), Eq.{max (succ u6) (succ u5)} (Quiver.Hom.{max (succ u6) (succ u5), max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u5, u6, u3} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.CoverDense.sheafHom.{u2, u1, u6, u4, u3, u5} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' (CategoryTheory.whiskerLeft.{u2, u1, u6, u4, u3, u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u4, u2, u6} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u4, u5, u6, u3} D _inst_2 K A _inst_4 ℱ') α)) α
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.CoverDense.sheafHom_eqₓ'. -/
 /-- If the pullback map is obtained via whiskering,
 then the result `sheaf_hom (whisker_left G.op α)` is equal to `α`.
 -/
@@ -530,12 +461,6 @@ noncomputable def restrictHomEquivHom : (G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) ≃
 
 include H
 
-/- warning: category_theory.cover_dense.iso_of_restrict_iso -> CategoryTheory.CoverDense.iso_of_restrict_iso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} (α : Quiver.Hom.{succ (max u3 u6), max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.CategoryTheory.category.{u4, u6, u3, u5} D _inst_2 K A _inst_4))) ℱ ℱ'), (CategoryTheory.IsIso.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ)) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.whiskerLeft.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.Sheaf.Hom.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ ℱ' α))) -> (CategoryTheory.IsIso.{max u3 u6, max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.CategoryTheory.category.{u4, u6, u3, u5} D _inst_2 K A _inst_4) ℱ ℱ' α))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u6, u4} D] {K : CategoryTheory.GrothendieckTopology.{u6, u4} D _inst_2} {A : Type.{u3}} [_inst_4 : CategoryTheory.Category.{u5, u3} A] {G : CategoryTheory.Functor.{u1, u6, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u1, u4, u6} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u1, u6, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4} (α : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.instCategorySheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4))) ℱ ℱ'), (CategoryTheory.IsIso.{max u2 u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u1, u5, u2, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u1, u5, u2, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) A _inst_4) (CategoryTheory.Functor.comp.{u1, u6, u5, u2, u4, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u6, u4} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u6, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ)) (CategoryTheory.Functor.comp.{u1, u6, u5, u2, u4, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u6, u4} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u6, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.whiskerLeft.{u2, u1, u4, u6, u3, u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u6, u4} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u6, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.Sheaf.Hom.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ ℱ' α))) -> (CategoryTheory.IsIso.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.instCategorySheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) ℱ ℱ' α))
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.CoverDense.iso_of_restrict_isoₓ'. -/
 /-- Given a full and cover-dense functor `G` and a natural transformation of sheaves `α : ℱ ⟶ ℱ'`,
 if the pullback of `α` along `G` is iso, then `α` is also iso.
 -/
@@ -547,12 +472,6 @@ theorem iso_of_restrict_iso {ℱ ℱ' : Sheaf K A} (α : ℱ ⟶ ℱ') (i : IsIs
   apply (sheaf_hom_eq _ _).symm
 #align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.CoverDense.iso_of_restrict_iso
 
-/- warning: category_theory.cover_dense.compatible_preserving -> CategoryTheory.CoverDense.compatiblePreserving is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] [_inst_6 : CategoryTheory.Faithful.{u2, u4, u1, u3} C _inst_1 D _inst_2 G], CategoryTheory.CompatiblePreserving.{u5, u2, u4, u1, u3} C _inst_1 D _inst_2 K G)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u5, u3} C] {D : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u4, u2} D] {K : CategoryTheory.GrothendieckTopology.{u4, u2} D _inst_2} {G : CategoryTheory.Functor.{u5, u4, u3, u2} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u3, u5, u2, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u5, u4, u3, u2} C _inst_1 D _inst_2 G] [_inst_6 : CategoryTheory.Faithful.{u5, u4, u3, u2} C _inst_1 D _inst_2 G], CategoryTheory.CompatiblePreserving.{u1, u5, u4, u3, u2} C _inst_1 D _inst_2 K G)
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.compatible_preserving CategoryTheory.CoverDense.compatiblePreservingₓ'. -/
 /-- A fully faithful cover-dense functor preserves compatible families. -/
 theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
   by
@@ -611,12 +530,6 @@ variable (Hd : CoverDense K G) (Hp : CoverPreserving J K G) (Hl : CoverLifting J
 
 include Hd Hp Hl
 
-/- warning: category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting -> CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} {D : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Category.{u2, u3} D] {G : CategoryTheory.Functor.{u2, u2, u3, u3} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] [_inst_4 : CategoryTheory.Faithful.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {K : CategoryTheory.GrothendieckTopology.{u2, u3} D _inst_2} {A : Type.{u1}} [_inst_5 : CategoryTheory.Category.{max u3 u2, u1} A] [_inst_6 : CategoryTheory.Limits.HasLimits.{max u3 u2, u1} A _inst_5], (CategoryTheory.CoverDense.{u3, u2, u3, u2} C _inst_1 D _inst_2 K G) -> (CategoryTheory.CoverPreserving.{u2, u2, u3, u3} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.CoverLifting.{u3, u2, u3, u2} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.Equivalence.{max u3 u2, max u3 u2, max u3 u1 u3 u2, max u3 u1 u3 u2} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5))
-but is expected to have type
-  forall {C : Type.{u3}} {D : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Category.{u2, u3} D] {G : CategoryTheory.Functor.{u2, u2, u3, u3} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] [_inst_4 : CategoryTheory.Faithful.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {K : CategoryTheory.GrothendieckTopology.{u2, u3} D _inst_2} {A : Type.{u1}} [_inst_5 : CategoryTheory.Category.{max u3 u2, u1} A] [_inst_6 : CategoryTheory.Limits.HasLimits.{max u3 u2, u1} A _inst_5], (CategoryTheory.CoverDense.{u3, u2, u3, u2} C _inst_1 D _inst_2 K G) -> (CategoryTheory.CoverPreserving.{u2, u2, u3, u3} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.CoverLifting.{u3, u2, u3, u2} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.Equivalence.{max u3 u2, max u3 u2, max (max (max u1 u3) u3 u2) u2, max (max (max u1 u3) u3 u2) u2} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5))
-Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLiftingₓ'. -/
 /-- Given a functor between small sites that is cover-dense, cover-preserving, and cover-lifting,
 it induces an equivalence of category of sheaves valued in a complete category.
 -/
Diff
@@ -281,10 +281,7 @@ theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glueₓ'. -/
 @[simp]
 theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
-    appHom H α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) :=
-  by
-  ext
-  apply app_hom_restrict
+    appHom H α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) := by ext; apply app_hom_restrict
 #align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glue
 
 /- warning: category_theory.cover_dense.types.app_iso -> CategoryTheory.CoverDense.Types.appIso is a dubious translation:
@@ -302,16 +299,8 @@ noncomputable def appIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val 
     where
   Hom := appHom H i.Hom X
   inv := appHom H i.inv X
-  hom_inv_id' := by
-    ext x
-    apply H.ext
-    intro Y f
-    simp
-  inv_hom_id' := by
-    ext x
-    apply H.ext
-    intro Y f
-    simp
+  hom_inv_id' := by ext x; apply H.ext; intro Y f; simp
+  inv_hom_id' := by ext x; apply H.ext; intro Y f; simp
 #align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIso
 
 #print CategoryTheory.CoverDense.Types.presheafHom /-
@@ -351,12 +340,8 @@ noncomputable def sheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val
     where
   Hom := ⟨(presheafIso H i).Hom⟩
   inv := ⟨(presheafIso H i).inv⟩
-  hom_inv_id' := by
-    ext1
-    apply (presheaf_iso H i).hom_inv_id
-  inv_hom_id' := by
-    ext1
-    apply (presheaf_iso H i).inv_hom_id
+  hom_inv_id' := by ext1; apply (presheaf_iso H i).hom_inv_id
+  inv_hom_id' := by ext1; apply (presheaf_iso H i).inv_hom_id
 #align category_theory.cover_dense.types.sheaf_iso CategoryTheory.CoverDense.Types.sheafIso
 -/
 
@@ -470,12 +455,8 @@ noncomputable def sheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op
     where
   Hom := ⟨(presheafIso H i).Hom⟩
   inv := ⟨(presheafIso H i).inv⟩
-  hom_inv_id' := by
-    ext1
-    apply (presheaf_iso H i).hom_inv_id
-  inv_hom_id' := by
-    ext1
-    apply (presheaf_iso H i).inv_hom_id
+  hom_inv_id' := by ext1; apply (presheaf_iso H i).hom_inv_id
+  inv_hom_id' := by ext1; apply (presheaf_iso H i).inv_hom_id
 #align category_theory.cover_dense.sheaf_iso CategoryTheory.CoverDense.sheafIso
 -/
 
Diff
@@ -125,10 +125,7 @@ variable {K}
 variable {A : Type _} [Category A] {G : C ⥤ D} (H : CoverDense K G)
 
 /- warning: category_theory.cover_dense.ext -> CategoryTheory.CoverDense.ext is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall (ℱ : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K) (X : D) {s : CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X)} {t : CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X)}, (forall {{Y : C}} (f : Quiver.Hom.{succ u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X), Eq.{succ u5} (CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.map.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y)) (Quiver.Hom.op.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X f) s) (CategoryTheory.Functor.map.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y)) (Quiver.Hom.op.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X f) t)) -> (Eq.{succ u5} (CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X)) s t))
-but is expected to have type
-  forall {C : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u4, u5} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u2, u3} D] {K : CategoryTheory.GrothendieckTopology.{u2, u3} D _inst_2} {G : CategoryTheory.Functor.{u4, u2, u5, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u5, u4, u3, u2} C _inst_1 D _inst_2 K G) -> (forall (ℱ : CategoryTheory.SheafOfTypes.{u1, u2, u3} D _inst_2 K) (X : D) {s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X)} {t : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X)}, (forall {{Y : C}} (f : Quiver.Hom.{succ u2, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y) X), Eq.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y))) (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y)) (Quiver.Hom.op.{u3, succ u2} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y) X f) s) (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y)) (Quiver.Hom.op.{u3, succ u2} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y) X f) t)) -> (Eq.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X)) s t))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.ext CategoryTheory.CoverDense.extₓ'. -/
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
 theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
@@ -140,10 +137,7 @@ theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.o
 #align category_theory.cover_dense.ext CategoryTheory.CoverDense.ext
 
 /- warning: category_theory.cover_dense.functor_pullback_pushforward_covering -> CategoryTheory.CoverDense.functorPullback_pushforward_covering is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G], (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall {X : C} (T : coeSort.{succ (max u3 u4), succ (succ (max u3 u4))} (Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) Type.{max u3 u4} (Set.hasCoeToSort.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ (max u3 u4))} (CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) => forall (X : D), Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u4, u3} D _inst_2) K (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))), Membership.Mem.{max u3 u4, max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) (Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (Set.hasMem.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (CategoryTheory.Sieve.functorPushforward.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X (CategoryTheory.Sieve.functorPullback.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X (Subtype.val.{succ (max u3 u4)} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) (fun (x : CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) => Membership.Mem.{max u3 u4, max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) (Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (Set.hasMem.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) x (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ (max u3 u4))} (CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) => forall (X : D), Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u4, u3} D _inst_2) K (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) T))) (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ (max u3 u4))} (CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) => forall (X : D), Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u4, u3} D _inst_2) K (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u3, u1} D] {K : CategoryTheory.GrothendieckTopology.{u3, u1} D _inst_2} {G : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u4, u3, u2, u1} C _inst_1 D _inst_2 G], (CategoryTheory.CoverDense.{u2, u4, u1, u3} C _inst_1 D _inst_2 K G) -> (forall {X : C} (T : Set.Elem.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (CategoryTheory.GrothendieckTopology.sieves.{u3, u1} D _inst_2 K (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))), Membership.mem.{max u1 u3, max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (Set.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) (Set.instMembershipSet.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) (CategoryTheory.Sieve.functorPushforward.{u4, u3, u2, u1} C _inst_1 D _inst_2 G X (CategoryTheory.Sieve.functorPullback.{u4, u3, u2, u1} C _inst_1 D _inst_2 G X (Subtype.val.{max (succ u1) (succ u3)} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (fun (x : CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) => Membership.mem.{max u1 u3, max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (Set.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) (Set.instMembershipSet.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) x (CategoryTheory.GrothendieckTopology.sieves.{u3, u1} D _inst_2 K (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) T))) (CategoryTheory.GrothendieckTopology.sieves.{u3, u1} D _inst_2 K (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_coveringₓ'. -/
 theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X : C}
     (T : K (G.obj X)) : (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
@@ -183,10 +177,7 @@ def isoOver {ℱ ℱ' : Sheaf K A} (α : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val)
 -/
 
 /- warning: category_theory.cover_dense.sheaf_eq_amalgamation -> CategoryTheory.CoverDense.sheaf_eq_amalgamation is a dubious translation:
-lean 3 declaration is
-  forall {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u2, u1} D] {K : CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2} {A : Type.{u3}} [_inst_4 : CategoryTheory.Category.{u4, u3} A] (ℱ : CategoryTheory.Sheaf.{u2, u4, u1, u3} D _inst_2 K A _inst_4) {X : A} {U : D} {T : CategoryTheory.Sieve.{u2, u1} D _inst_2 U} (hT : Membership.Mem.{max u1 u2, max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (Set.{max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U)) (Set.hasMem.{max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U)) T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ (max u1 u2))} (CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2) => forall (X : D), Set.{max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u2, u1} D _inst_2) K U)) (x : CategoryTheory.Presieve.FamilyOfElements.{u4, u2, u1} D _inst_2 U (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T)) (hx : CategoryTheory.Presieve.FamilyOfElements.Compatible.{u4, u2, u1} D _inst_2 (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) U (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T) x) (t : CategoryTheory.Functor.obj.{u2, u4, u1, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) (Opposite.op.{succ u1} D U)), (CategoryTheory.Presieve.FamilyOfElements.IsAmalgamation.{u4, u2, u1} D _inst_2 (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) U (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T) x t) -> (Eq.{succ u4} (CategoryTheory.Functor.obj.{u2, u4, u1, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) (Opposite.op.{succ u1} D U)) t (CategoryTheory.Presieve.IsSheafFor.amalgamate.{u4, u2, u1} D _inst_2 (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) U (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T) (CategoryTheory.Sheaf.cond.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ X U T hT) x hx))
-but is expected to have type
-  forall {D : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u4, u2} D] {K : CategoryTheory.GrothendieckTopology.{u4, u2} D _inst_2} {A : Type.{u1}} [_inst_4 : CategoryTheory.Category.{u3, u1} A] (ℱ : CategoryTheory.Sheaf.{u4, u3, u2, u1} D _inst_2 K A _inst_4) {X : A} {U : D} {T : CategoryTheory.Sieve.{u4, u2} D _inst_2 U} (hT : Membership.mem.{max u2 u4, max u2 u4} (CategoryTheory.Sieve.{u4, u2} D _inst_2 U) (Set.{max u2 u4} (CategoryTheory.Sieve.{u4, u2} D _inst_2 U)) (Set.instMembershipSet.{max u2 u4} (CategoryTheory.Sieve.{u4, u2} D _inst_2 U)) T (CategoryTheory.GrothendieckTopology.sieves.{u4, u2} D _inst_2 K U)) (x : CategoryTheory.Presieve.FamilyOfElements.{u3, u4, u2} D _inst_2 U (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T)) (hx : CategoryTheory.Presieve.FamilyOfElements.Compatible.{u3, u4, u2} D _inst_2 (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) U (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T) x) (t : Prefunctor.obj.{succ u4, succ u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.toCategoryStruct.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2))) Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X)))) (Opposite.op.{succ u2} D U)), (CategoryTheory.Presieve.FamilyOfElements.IsAmalgamation.{u3, u4, u2} D _inst_2 (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) U (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T) x t) -> (Eq.{succ u3} (Prefunctor.obj.{succ u4, succ u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.toCategoryStruct.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2))) Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X)))) (Opposite.op.{succ u2} D U)) t (CategoryTheory.Presieve.IsSheafFor.amalgamate.{u3, u4, u2} D _inst_2 (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) U (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T) (CategoryTheory.Sheaf.cond.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ X U T hT) x hx))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.CoverDense.sheaf_eq_amalgamationₓ'. -/
 theorem sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D} {T : Sieve U} (hT)
     (x : FamilyOfElements _ T) (hx) (t) (h : x.IsAmalgamation t) :
@@ -256,10 +247,7 @@ noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun
 #align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHom
 
 /- warning: category_theory.cover_dense.types.pushforward_family_apply -> CategoryTheory.CoverDense.Types.pushforwardFamily_apply is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} (x : CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) {Y : C} (f : Quiver.Hom.{succ u5, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y) X), Eq.{succ u1} (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G _inst_5 ℱ ℱ' α X x (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y) f (CategoryTheory.Presieve.in_coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G X Y f)) (CategoryTheory.NatTrans.app.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) α (Opposite.op.{succ u2} C Y) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (Opposite.op.{succ u2} C Y)) (Quiver.Hom.op.{u4, succ u5} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y) X f) x))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u1), max (max (max (succ u5) u1) u5) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} (x : Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) {Y : C} (f : Quiver.Hom.{succ u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y) X), Eq.{succ u5} (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u5, u1, u2, u3, u4} C _inst_1 D _inst_2 K G ℱ ℱ' α X x (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y) f (CategoryTheory.Presieve.in_coverByImage.{u3, u1, u4, u2} C _inst_1 D _inst_2 G X Y f)) (CategoryTheory.NatTrans.app.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) α (Opposite.op.{succ u1} C Y) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) (Quiver.Hom.op.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y) X f) x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_applyₓ'. -/
 @[simp]
 theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
@@ -275,10 +263,7 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
 #align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_apply
 
 /- warning: category_theory.cover_dense.types.app_hom_restrict -> CategoryTheory.CoverDense.Types.appHom_restrict is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u5, u4} (Opposite.{succ u4} D) (Quiver.opposite.{u4, succ u5} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2))) (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (x : CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)), Eq.{succ u1} (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)) f (CategoryTheory.CoverDense.Types.appHom.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X x)) (CategoryTheory.NatTrans.app.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) α (Opposite.op.{succ u2} C Y) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (Opposite.op.{succ u2} C Y)) f x))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u1), max (max (max (succ u5) u1) u5) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u4, u3} (Opposite.{succ u3} D) (Quiver.opposite.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2))) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (x : Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)), Eq.{succ u5} (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f (CategoryTheory.CoverDense.Types.appHom.{u5, u1, u2, u3, u4} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X x)) (CategoryTheory.NatTrans.app.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) α (Opposite.op.{succ u1} C Y) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f x))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrictₓ'. -/
 @[simp]
 theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
@@ -292,10 +277,7 @@ theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
 #align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrict
 
 /- warning: category_theory.cover_dense.types.app_hom_valid_glue -> CategoryTheory.CoverDense.Types.appHom_valid_glue is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u5, u4} (Opposite.{succ u4} D) (Quiver.opposite.{u4, succ u5} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2))) (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))), Eq.{succ u1} (Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)))) (CategoryTheory.CategoryStruct.comp.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.CoverDense.Types.appHom.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)) f)) (CategoryTheory.CategoryStruct.comp.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)) f) (CategoryTheory.NatTrans.app.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) α (Opposite.op.{succ u2} C Y)))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u1), max (max (max (succ u5) u1) u5) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u4, u3} (Opposite.{succ u3} D) (Quiver.opposite.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2))) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))), Eq.{succ u5} (Quiver.Hom.{succ u5, succ u5} Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)))) (CategoryTheory.CategoryStruct.comp.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5}) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (CategoryTheory.CoverDense.Types.appHom.{u5, u1, u2, u3, u4} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f)) (CategoryTheory.CategoryStruct.comp.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5}) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (Prefunctor.obj.{succ u2, succ u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) (Opposite.op.{succ u1} C Y)) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f) (CategoryTheory.NatTrans.app.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) α (Opposite.op.{succ u1} C Y)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glueₓ'. -/
 @[simp]
 theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
@@ -385,10 +367,7 @@ open Types
 variable {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A}
 
 /- warning: category_theory.cover_dense.sheaf_coyoneda_hom -> CategoryTheory.CoverDense.sheafCoyonedaHom is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (Quiver.Hom.{succ (max u5 u3 u6), max u6 (max u3 u6) u5 u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u3 u6, max u6 (max u3 u6) u5 u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max u5 u3 u6, max u6 (max u3 u6) u5 u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (CategoryTheory.Functor.obj.{max u3 u6, max (max u6 u5 (succ u6)) u3 u6, max u4 u6 u3 u5, max (max u5 u6) (max u3 u6) (max u6 u5 (succ u6)) u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6}) ℱ)) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (CategoryTheory.Functor.obj.{max u3 u6, max (max u6 u5 (succ u6)) u3 u6, max u4 u6 u3 u5, max (max u5 u6) (max u3 u6) (max u6 u5 (succ u6)) u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')))))
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{max (succ u1) (succ u6), max (max (max u5 u1) u6) u2} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (Quiver.Hom.{max (max (succ u3) (succ u5)) (succ u6), max (max (max (max (max u3 u4) (succ u6)) u5) u3 u6) u6} (CategoryTheory.Functor.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u5) u6, max (max (max u3 u4) u5) (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u5) u6, max (max (max u3 u4) u5) (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u5 (succ u6), max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (Prefunctor.obj.{max (succ u3) (succ u6), max (max (max (succ u3) (succ u5)) (succ u6)) (succ (succ u6)), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.toPrefunctor.{max u3 u6, max (max (max u3 u5) u6) (succ u6), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6})) ℱ)) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u5 (succ u6), max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (Prefunctor.obj.{max (succ u3) (succ u6), max (max (max (succ u3) (succ u5)) (succ u6)) (succ (succ u6)), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.toPrefunctor.{max u3 u6, max (max (max u3 u5) u6) (succ u6), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHomₓ'. -/
 /-- (Implementation). The sheaf map given in `types.sheaf_hom` is natural in terms of `X`. -/
 @[simps]
Diff
@@ -73,7 +73,7 @@ structure Presieve.CoverByImageStructure (G : C ⥤ D) {V U : D} (f : V ⟶ U) w
 
 restate_axiom presieve.cover_by_image_structure.fac'
 
-attribute [simp, reassoc.1] presieve.cover_by_image_structure.fac
+attribute [simp, reassoc] presieve.cover_by_image_structure.fac
 
 #print CategoryTheory.Presieve.coverByImage /-
 /-- For a functor `G : C ⥤ D`, and an object `U : D`, `presieve.cover_by_image G U` is the presieve
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 
 ! This file was ported from Lean 3 source module category_theory.sites.dense_subsite
-! leanprover-community/mathlib commit 1d650c2e131f500f3c17f33b4d19d2ea15987f2c
+! leanprover-community/mathlib commit 2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe
 ! 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.Adjunction.FullyFaithful
 /-!
 # Dense subsites
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We define `cover_dense` functors into sites as functors such that there exists a covering sieve
 that factors through images of the functor for each object in `D`.
 
Diff
@@ -56,6 +56,7 @@ variable (J : GrothendieckTopology C) (K : GrothendieckTopology D)
 
 variable {L : GrothendieckTopology E}
 
+#print CategoryTheory.Presieve.CoverByImageStructure /-
 /-- An auxiliary structure that witnesses the fact that `f` factors through an image object of `G`.
 -/
 @[nolint has_nonempty_instance]
@@ -65,18 +66,22 @@ structure Presieve.CoverByImageStructure (G : C ⥤ D) {V U : D} (f : V ⟶ U) w
   map : G.obj obj ⟶ U
   fac : lift ≫ map = f := by obviously
 #align category_theory.presieve.cover_by_image_structure CategoryTheory.Presieve.CoverByImageStructure
+-/
 
 restate_axiom presieve.cover_by_image_structure.fac'
 
 attribute [simp, reassoc.1] presieve.cover_by_image_structure.fac
 
+#print CategoryTheory.Presieve.coverByImage /-
 /-- For a functor `G : C ⥤ D`, and an object `U : D`, `presieve.cover_by_image G U` is the presieve
 of `U` consisting of those arrows that factor through images of `G`.
 -/
 def Presieve.coverByImage (G : C ⥤ D) (U : D) : Presieve U := fun Y f =>
   Nonempty (Presieve.CoverByImageStructure G f)
 #align category_theory.presieve.cover_by_image CategoryTheory.Presieve.coverByImage
+-/
 
+#print CategoryTheory.Sieve.coverByImage /-
 /-- For a functor `G : C ⥤ D`, and an object `U : D`, `sieve.cover_by_image G U` is the sieve of `U`
 consisting of those arrows that factor through images of `G`.
 -/
@@ -84,12 +89,20 @@ def Sieve.coverByImage (G : C ⥤ D) (U : D) : Sieve U :=
   ⟨Presieve.coverByImage G U, fun X Y f ⟨⟨Z, f₁, f₂, (e : _ = _)⟩⟩ g =>
     ⟨⟨Z, g ≫ f₁, f₂, show (g ≫ f₁) ≫ f₂ = g ≫ f by rw [category.assoc, ← e]⟩⟩⟩
 #align category_theory.sieve.cover_by_image CategoryTheory.Sieve.coverByImage
+-/
 
+/- warning: category_theory.presieve.in_cover_by_image -> CategoryTheory.Presieve.in_coverByImage is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] (G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2) {X : D} {Y : C} (f : Quiver.Hom.{succ u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X), CategoryTheory.Presieve.coverByImage.{u1, u2, u3, u4} C _inst_1 D _inst_2 G X (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) f
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u3, u1} D] (G : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2) {X : D} {Y : C} (f : Quiver.Hom.{succ u3, u1} D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) Y) X), CategoryTheory.Presieve.coverByImage.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) Y) f
+Case conversion may be inaccurate. Consider using '#align category_theory.presieve.in_cover_by_image CategoryTheory.Presieve.in_coverByImageₓ'. -/
 theorem Presieve.in_coverByImage (G : C ⥤ D) {X : D} {Y : C} (f : G.obj Y ⟶ X) :
     Presieve.coverByImage G X f :=
   ⟨⟨Y, 𝟙 _, f, by simp⟩⟩
 #align category_theory.presieve.in_cover_by_image CategoryTheory.Presieve.in_coverByImage
 
+#print CategoryTheory.CoverDense /-
 /-- A functor `G : (C, J) ⥤ (D, K)` is called `cover_dense` if for each object in `D`,
   there exists a covering sieve in `D` that factors through images of `G`.
 
@@ -98,6 +111,7 @@ This definition can be found in https://ncatlab.org/nlab/show/dense+sub-site Def
 structure CoverDense (K : GrothendieckTopology D) (G : C ⥤ D) : Prop where
   is_cover : ∀ U : D, Sieve.coverByImage G U ∈ K U
 #align category_theory.cover_dense CategoryTheory.CoverDense
+-/
 
 open Presieve Opposite
 
@@ -107,6 +121,12 @@ variable {K}
 
 variable {A : Type _} [Category A] {G : C ⥤ D} (H : CoverDense K G)
 
+/- warning: category_theory.cover_dense.ext -> CategoryTheory.CoverDense.ext is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall (ℱ : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K) (X : D) {s : CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X)} {t : CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X)}, (forall {{Y : C}} (f : Quiver.Hom.{succ u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X), Eq.{succ u5} (CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.map.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y)) (Quiver.Hom.op.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X f) s) (CategoryTheory.Functor.map.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y)) (Quiver.Hom.op.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G Y) X f) t)) -> (Eq.{succ u5} (CategoryTheory.Functor.obj.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ) (Opposite.op.{succ u3} D X)) s t))
+but is expected to have type
+  forall {C : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u4, u5} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u2, u3} D] {K : CategoryTheory.GrothendieckTopology.{u2, u3} D _inst_2} {G : CategoryTheory.Functor.{u4, u2, u5, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u5, u4, u3, u2} C _inst_1 D _inst_2 K G) -> (forall (ℱ : CategoryTheory.SheafOfTypes.{u1, u2, u3} D _inst_2 K) (X : D) {s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X)} {t : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X)}, (forall {{Y : C}} (f : Quiver.Hom.{succ u2, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y) X), Eq.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y))) (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y)) (Quiver.Hom.op.{u3, succ u2} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y) X f) s) (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y)) (Quiver.Hom.op.{u3, succ u2} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (Prefunctor.obj.{succ u4, succ u2, u5, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u5} C (CategoryTheory.Category.toCategoryStruct.{u4, u5} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} D (CategoryTheory.Category.toCategoryStruct.{u2, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u2, u5, u3} C _inst_1 D _inst_2 G) Y) X f) t)) -> (Eq.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u2, u1, u3, succ u1} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u2, u3} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u2, u3} D _inst_2 K ℱ)) (Opposite.op.{succ u3} D X)) s t))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.ext CategoryTheory.CoverDense.extₓ'. -/
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
 theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
     (h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t) : s = t :=
@@ -116,6 +136,12 @@ theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.o
   simp [h f₂]
 #align category_theory.cover_dense.ext CategoryTheory.CoverDense.ext
 
+/- warning: category_theory.cover_dense.functor_pullback_pushforward_covering -> CategoryTheory.CoverDense.functorPullback_pushforward_covering is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G], (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall {X : C} (T : coeSort.{succ (max u3 u4), succ (succ (max u3 u4))} (Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) Type.{max u3 u4} (Set.hasCoeToSort.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ (max u3 u4))} (CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) => forall (X : D), Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u4, u3} D _inst_2) K (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))), Membership.Mem.{max u3 u4, max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) (Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (Set.hasMem.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (CategoryTheory.Sieve.functorPushforward.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X (CategoryTheory.Sieve.functorPullback.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X (Subtype.val.{succ (max u3 u4)} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) (fun (x : CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) => Membership.Mem.{max u3 u4, max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)) (Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) (Set.hasMem.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) x (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ (max u3 u4))} (CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) => forall (X : D), Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u4, u3} D _inst_2) K (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X))) T))) (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ (max u3 u4))} (CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2) => forall (X : D), Set.{max u3 u4} (CategoryTheory.Sieve.{u4, u3} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u4, u3} D _inst_2) K (CategoryTheory.Functor.obj.{u2, u4, u1, u3} C _inst_1 D _inst_2 G X)))
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u3, u1} D] {K : CategoryTheory.GrothendieckTopology.{u3, u1} D _inst_2} {G : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u4, u3, u2, u1} C _inst_1 D _inst_2 G], (CategoryTheory.CoverDense.{u2, u4, u1, u3} C _inst_1 D _inst_2 K G) -> (forall {X : C} (T : Set.Elem.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (CategoryTheory.GrothendieckTopology.sieves.{u3, u1} D _inst_2 K (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))), Membership.mem.{max u1 u3, max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (Set.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) (Set.instMembershipSet.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) (CategoryTheory.Sieve.functorPushforward.{u4, u3, u2, u1} C _inst_1 D _inst_2 G X (CategoryTheory.Sieve.functorPullback.{u4, u3, u2, u1} C _inst_1 D _inst_2 G X (Subtype.val.{max (succ u1) (succ u3)} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (fun (x : CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) => Membership.mem.{max u1 u3, max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)) (Set.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) (Set.instMembershipSet.{max u1 u3} (CategoryTheory.Sieve.{u3, u1} D _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) x (CategoryTheory.GrothendieckTopology.sieves.{u3, u1} D _inst_2 K (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X))) T))) (CategoryTheory.GrothendieckTopology.sieves.{u3, u1} D _inst_2 K (Prefunctor.obj.{succ u4, succ u3, u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} C (CategoryTheory.Category.toCategoryStruct.{u4, u2} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} D (CategoryTheory.Category.toCategoryStruct.{u3, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, u1} C _inst_1 D _inst_2 G) X)))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_coveringₓ'. -/
 theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X : C}
     (T : K (G.obj X)) : (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) :=
   by
@@ -127,6 +153,12 @@ theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X :
   · simp
 #align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_covering
 
+/- warning: category_theory.cover_dense.hom_over -> CategoryTheory.CoverDense.homOver is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (forall (X : A), Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Functor.comp.{u4, u6, u6, u3, u5, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6} ℱ (CategoryTheory.Functor.obj.{u6, max u5 u6, u5, max u6 u5 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (Opposite.op.{succ u5} A X)))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u6, u4, u3} D _inst_2 K (CategoryTheory.sheafOver.{u4, u6, u3, u5} D _inst_2 A _inst_4 K ℱ' X))))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{max (succ u1) (succ u6), max (max (max u5 u1) u6) u2} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (forall (X : A), Quiver.Hom.{max (succ u1) (succ u6), max (max (max (succ u6) u1) u6) u2} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max (max u1 u2) (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max (max u1 u2) (succ u6)} (CategoryTheory.Functor.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u2, u6, u1, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u6} CategoryTheory.types.{u6}))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Functor.comp.{u4, u6, u6, u3, u5, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6} ℱ (Prefunctor.obj.{succ u6, max (succ u5) (succ u6), u5, max u5 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.CategoryStruct.toQuiver.{u6, u5} (Opposite.{succ u5} A) (CategoryTheory.Category.toCategoryStruct.{u6, u5} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4))) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u6, max u5 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Category.toCategoryStruct.{max u5 u6, max u5 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}))) (CategoryTheory.Functor.toPrefunctor.{u6, max u5 u6, u5, max u5 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4)) (Opposite.op.{succ u5} A X)))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, succ u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u6, u4, u3} D _inst_2 K (CategoryTheory.sheafOver.{u4, u6, u3, u5} D _inst_2 A _inst_4 K ℱ' X))))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.hom_over CategoryTheory.CoverDense.homOverₓ'. -/
 /-- (Implementation). Given an hom between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain an hom between the pullbacks of the sheaves of maps from `X`.
 -/
@@ -136,6 +168,7 @@ def homOver {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A} (α : G.op ⋙ ℱ ⟶ G.op
   whiskerRight α (coyoneda.obj (op X))
 #align category_theory.cover_dense.hom_over CategoryTheory.CoverDense.homOver
 
+#print CategoryTheory.CoverDense.isoOver /-
 /-- (Implementation). Given an iso between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain an iso between the pullbacks of the sheaves of maps from `X`.
 -/
@@ -144,7 +177,14 @@ def isoOver {ℱ ℱ' : Sheaf K A} (α : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val)
     G.op ⋙ (sheafOver ℱ X).val ≅ G.op ⋙ (sheafOver ℱ' X).val :=
   isoWhiskerRight α (coyoneda.obj (op X))
 #align category_theory.cover_dense.iso_over CategoryTheory.CoverDense.isoOver
+-/
 
+/- warning: category_theory.cover_dense.sheaf_eq_amalgamation -> CategoryTheory.CoverDense.sheaf_eq_amalgamation is a dubious translation:
+lean 3 declaration is
+  forall {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u2, u1} D] {K : CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2} {A : Type.{u3}} [_inst_4 : CategoryTheory.Category.{u4, u3} A] (ℱ : CategoryTheory.Sheaf.{u2, u4, u1, u3} D _inst_2 K A _inst_4) {X : A} {U : D} {T : CategoryTheory.Sieve.{u2, u1} D _inst_2 U} (hT : Membership.Mem.{max u1 u2, max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (Set.{max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U)) (Set.hasMem.{max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U)) T (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ (max u1 u2))} (CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2) (fun (_x : CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2) => forall (X : D), Set.{max u1 u2} (CategoryTheory.Sieve.{u2, u1} D _inst_2 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u2, u1} D _inst_2) K U)) (x : CategoryTheory.Presieve.FamilyOfElements.{u4, u2, u1} D _inst_2 U (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T)) (hx : CategoryTheory.Presieve.FamilyOfElements.Compatible.{u4, u2, u1} D _inst_2 (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) U (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T) x) (t : CategoryTheory.Functor.obj.{u2, u4, u1, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) (Opposite.op.{succ u1} D U)), (CategoryTheory.Presieve.FamilyOfElements.IsAmalgamation.{u4, u2, u1} D _inst_2 (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) U (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T) x t) -> (Eq.{succ u4} (CategoryTheory.Functor.obj.{u2, u4, u1, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) (Opposite.op.{succ u1} D U)) t (CategoryTheory.Presieve.IsSheafFor.amalgamate.{u4, u2, u1} D _inst_2 (CategoryTheory.Functor.comp.{u2, u4, u4, u1, u3, succ u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 Type.{u4} CategoryTheory.types.{u4} (CategoryTheory.Sheaf.val.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Functor.obj.{u4, max u3 u4, u3, max u4 u3 (succ u4)} (Opposite.{succ u3} A) (CategoryTheory.Category.opposite.{u4, u3} A _inst_4) (CategoryTheory.Functor.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.Functor.category.{u4, u4, u3, succ u4} A _inst_4 Type.{u4} CategoryTheory.types.{u4}) (CategoryTheory.coyoneda.{u4, u3} A _inst_4) (Opposite.op.{succ u3} A X))) U (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (CategoryTheory.Sieve.{u2, u1} D _inst_2 U) (fun (_x : CategoryTheory.Sieve.{u2, u1} D _inst_2 U) => CategoryTheory.Presieve.{u2, u1} D _inst_2 U) (CategoryTheory.Sieve.hasCoeToFun.{u2, u1} D _inst_2 U) T) (CategoryTheory.Sheaf.cond.{u2, u4, u1, u3} D _inst_2 K A _inst_4 ℱ X U T hT) x hx))
+but is expected to have type
+  forall {D : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u4, u2} D] {K : CategoryTheory.GrothendieckTopology.{u4, u2} D _inst_2} {A : Type.{u1}} [_inst_4 : CategoryTheory.Category.{u3, u1} A] (ℱ : CategoryTheory.Sheaf.{u4, u3, u2, u1} D _inst_2 K A _inst_4) {X : A} {U : D} {T : CategoryTheory.Sieve.{u4, u2} D _inst_2 U} (hT : Membership.mem.{max u2 u4, max u2 u4} (CategoryTheory.Sieve.{u4, u2} D _inst_2 U) (Set.{max u2 u4} (CategoryTheory.Sieve.{u4, u2} D _inst_2 U)) (Set.instMembershipSet.{max u2 u4} (CategoryTheory.Sieve.{u4, u2} D _inst_2 U)) T (CategoryTheory.GrothendieckTopology.sieves.{u4, u2} D _inst_2 K U)) (x : CategoryTheory.Presieve.FamilyOfElements.{u3, u4, u2} D _inst_2 U (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T)) (hx : CategoryTheory.Presieve.FamilyOfElements.Compatible.{u3, u4, u2} D _inst_2 (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) U (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T) x) (t : Prefunctor.obj.{succ u4, succ u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.toCategoryStruct.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2))) Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X)))) (Opposite.op.{succ u2} D U)), (CategoryTheory.Presieve.FamilyOfElements.IsAmalgamation.{u3, u4, u2} D _inst_2 (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) U (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T) x t) -> (Eq.{succ u3} (Prefunctor.obj.{succ u4, succ u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.toCategoryStruct.{u4, u2} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2))) Type.{u3} (CategoryTheory.CategoryStruct.toQuiver.{u3, succ u3} Type.{u3} (CategoryTheory.Category.toCategoryStruct.{u3, succ u3} Type.{u3} CategoryTheory.types.{u3})) (CategoryTheory.Functor.toPrefunctor.{u4, u3, u2, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X)))) (Opposite.op.{succ u2} D U)) t (CategoryTheory.Presieve.IsSheafFor.amalgamate.{u3, u4, u2} D _inst_2 (CategoryTheory.Functor.comp.{u4, u3, u3, u2, u1, succ u3} (Opposite.{succ u2} D) (CategoryTheory.Category.opposite.{u4, u2} D _inst_2) A _inst_4 Type.{u3} CategoryTheory.types.{u3} (CategoryTheory.Sheaf.val.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ) (Prefunctor.obj.{succ u3, max (succ u1) (succ u3), u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.toCategoryStruct.{u3, u1} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4))) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Category.toCategoryStruct.{max u1 u3, max u1 (succ u3)} (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}))) (CategoryTheory.Functor.toPrefunctor.{u3, max u1 u3, u1, max u1 (succ u3)} (Opposite.{succ u1} A) (CategoryTheory.Category.opposite.{u3, u1} A _inst_4) (CategoryTheory.Functor.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.Functor.category.{u3, u3, u1, succ u3} A _inst_4 Type.{u3} CategoryTheory.types.{u3}) (CategoryTheory.coyoneda.{u3, u1} A _inst_4)) (Opposite.op.{succ u1} A X))) U (CategoryTheory.Sieve.arrows.{u4, u2} D _inst_2 U T) (CategoryTheory.Sheaf.cond.{u4, u3, u2, u1} D _inst_2 K A _inst_4 ℱ X U T hT) x hx))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.CoverDense.sheaf_eq_amalgamationₓ'. -/
 theorem sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D} {T : Sieve U} (hT)
     (x : FamilyOfElements _ T) (hx) (t) (h : x.IsAmalgamation t) :
     t = (ℱ.cond X T hT).amalgamate x hx :=
@@ -157,6 +197,12 @@ namespace Types
 
 variable {ℱ : Dᵒᵖ ⥤ Type v} {ℱ' : SheafOfTypes.{v} K} (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val)
 
+/- warning: category_theory.cover_dense.types.pushforward_family -> CategoryTheory.CoverDense.Types.pushforwardFamily is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall {X : D}, (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) -> (CategoryTheory.Presieve.FamilyOfElements.{u1, u5, u4} D _inst_2 X (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (CategoryTheory.Presieve.coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G X)))
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} {_inst_5 : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{max (succ u1) (succ u2), max (max (max (succ u1) u2) u1) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) _inst_5) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ))) -> (forall {α : D}, (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} _inst_5) (Opposite.op.{succ u4} D α)) -> (CategoryTheory.Presieve.FamilyOfElements.{u1, u5, u4} D _inst_2 α (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ) (CategoryTheory.Presieve.coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G α)))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.pushforward_family CategoryTheory.CoverDense.Types.pushforwardFamilyₓ'. -/
 /--
 (Implementation). Given a section of `ℱ` on `X`, we can obtain a family of elements valued in `ℱ'`
 that is defined on a cover generated by the images of `G`. -/
@@ -168,6 +214,12 @@ noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
 
 include H
 
+/- warning: category_theory.cover_dense.types.pushforward_family_compatible -> CategoryTheory.CoverDense.Types.pushforwardFamily_compatible is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} (x : CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u1, u5, u4} D _inst_2 (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') X (CategoryTheory.Presieve.coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G X) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G _inst_5 ℱ ℱ' α X x))
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u1, u4, u2, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u1, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u1, u4, u2, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u2), max (max (max (succ u5) u2) u5) u1} (CategoryTheory.Functor.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u2, max (max (succ u5) u2) u1} (CategoryTheory.Functor.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u2, max (max (succ u5) u2) u1} (CategoryTheory.Functor.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u1, u5, u2, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u1, u4, u5, u2, u3, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u1, u4, u2, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u1, u4, u5, u2, u3, succ u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u1, u4, u2, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} (x : Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u5, u4, u3} D _inst_2 (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ') X (CategoryTheory.Presieve.coverByImage.{u2, u1, u3, u4} C _inst_1 D _inst_2 G X) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u5, u2, u1, u3, u4} C _inst_1 D _inst_2 K G ℱ ℱ' α X x))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.CoverDense.Types.pushforwardFamily_compatibleₓ'. -/
 /-- (Implementation). The `pushforward_family` defined is compatible. -/
 theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFamily α x).Compatible :=
   by
@@ -189,11 +241,23 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFami
 
 omit H
 
+/- warning: category_theory.cover_dense.types.app_hom -> CategoryTheory.CoverDense.Types.appHom is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X))))
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (Quiver.Hom.{max (succ u1) (succ u2), max (max (max (succ u1) u2) u1) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u1 u2, max (max (succ u1) u2) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ) (Opposite.op.{succ u4} D X)) (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) (Opposite.op.{succ u4} D X))))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHomₓ'. -/
 /-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforward_family`. -/
 noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
   (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily α x) (pushforwardFamily_compatible H α x)
 #align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHom
 
+/- warning: category_theory.cover_dense.types.pushforward_family_apply -> CategoryTheory.CoverDense.Types.pushforwardFamily_apply is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} (x : CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) {Y : C} (f : Quiver.Hom.{succ u5, u4} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y) X), Eq.{succ u1} (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G _inst_5 ℱ ℱ' α X x (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y) f (CategoryTheory.Presieve.in_coverByImage.{u2, u3, u4, u5} C _inst_1 D _inst_2 G X Y f)) (CategoryTheory.NatTrans.app.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) α (Opposite.op.{succ u2} C Y) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (Opposite.op.{succ u2} C Y)) (Quiver.Hom.op.{u4, succ u5} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2)) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y) X f) x))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u1), max (max (max (succ u5) u1) u5) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} (x : Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) {Y : C} (f : Quiver.Hom.{succ u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y) X), Eq.{succ u5} (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (CategoryTheory.CoverDense.Types.pushforwardFamily.{u5, u1, u2, u3, u4} C _inst_1 D _inst_2 K G ℱ ℱ' α X x (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y) f (CategoryTheory.Presieve.in_coverByImage.{u3, u1, u4, u2} C _inst_1 D _inst_2 G X Y f)) (CategoryTheory.NatTrans.app.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) α (Opposite.op.{succ u1} C Y) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) (Quiver.Hom.op.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y) X f) x))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_applyₓ'. -/
 @[simp]
 theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
     pushforwardFamily α x f (Presieve.in_coverByImage G f) = α.app (op Y) (ℱ.map f.op x) :=
@@ -207,6 +271,12 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
     Quiver.Hom.unop_op, ← op_comp, presieve.cover_by_image_structure.fac]
 #align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_apply
 
+/- warning: category_theory.cover_dense.types.app_hom_restrict -> CategoryTheory.CoverDense.Types.appHom_restrict is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u5, u4} (Opposite.{succ u4} D) (Quiver.opposite.{u4, succ u5} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2))) (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (x : CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)), Eq.{succ u1} (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)) f (CategoryTheory.CoverDense.Types.appHom.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X x)) (CategoryTheory.NatTrans.app.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) α (Opposite.op.{succ u2} C Y) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X) (CategoryTheory.Functor.obj.{u3, u5, u2, u4} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (Opposite.op.{succ u2} C Y)) f x))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u1), max (max (max (succ u5) u1) u5) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u4, u3} (Opposite.{succ u3} D) (Quiver.opposite.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2))) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (x : Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)), Eq.{succ u5} (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f (CategoryTheory.CoverDense.Types.appHom.{u5, u1, u2, u3, u4} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X x)) (CategoryTheory.NatTrans.app.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) α (Opposite.op.{succ u1} C Y) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f x))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrictₓ'. -/
 @[simp]
 theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
     ℱ'.val.map f (appHom H α X x) = α.app (op Y) (ℱ.map f x) :=
@@ -218,6 +288,12 @@ theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
   apply pushforward_family_apply
 #align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrict
 
+/- warning: category_theory.cover_dense.types.app_hom_valid_glue -> CategoryTheory.CoverDense.Types.appHom_valid_glue is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1}} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} (α : Quiver.Hom.{succ (max u2 u1), max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u5, u4} (Opposite.{succ u4} D) (Quiver.opposite.{u4, succ u5} D (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} D (CategoryTheory.Category.toCategoryStruct.{u5, u4} D _inst_2))) (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))), Eq.{succ u1} (Quiver.Hom.{succ u1, succ u1} Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)))) (CategoryTheory.CategoryStruct.comp.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.CoverDense.Types.appHom.{u1, u2, u3, u4, u5} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)) f)) (CategoryTheory.CategoryStruct.comp.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y))) (CategoryTheory.Functor.map.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} ℱ (Opposite.op.{succ u4} D X) (Opposite.op.{succ u4} D (CategoryTheory.Functor.obj.{u3, u5, u2, u4} C _inst_1 D _inst_2 G Y)) f) (CategoryTheory.NatTrans.app.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) α (Opposite.op.{succ u2} C Y)))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5}} {ℱ' : CategoryTheory.SheafOfTypes.{u5, u4, u3} D _inst_2 K} (α : Quiver.Hom.{max (succ u5) (succ u1), max (max (max (succ u5) u1) u5) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Category.toCategoryStruct.{max u5 u1, max (max (succ u5) u1) u2} (CategoryTheory.Functor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}) (CategoryTheory.Functor.category.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5}))) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) {X : D} {Y : C} (f : Quiver.Hom.{succ u4, u3} (Opposite.{succ u3} D) (Quiver.opposite.{u3, succ u4} D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2))) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))), Eq.{succ u5} (Quiver.Hom.{succ u5, succ u5} Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)))) (CategoryTheory.CategoryStruct.comp.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5}) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (CategoryTheory.CoverDense.Types.appHom.{u5, u1, u2, u3, u4} C _inst_1 D _inst_2 K G H _inst_5 ℱ ℱ' α X) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f)) (CategoryTheory.CategoryStruct.comp.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5}) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X)) (Prefunctor.obj.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y))) (Prefunctor.obj.{succ u2, succ u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.toCategoryStruct.{u2, u1} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ'))) (Opposite.op.{succ u1} C Y)) (Prefunctor.map.{succ u4, succ u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.toCategoryStruct.{u4, u3} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2))) Type.{u5} (CategoryTheory.CategoryStruct.toQuiver.{u5, succ u5} Type.{u5} (CategoryTheory.Category.toCategoryStruct.{u5, succ u5} Type.{u5} CategoryTheory.types.{u5})) (CategoryTheory.Functor.toPrefunctor.{u4, u5, u3, succ u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} ℱ) (Opposite.op.{succ u3} D X) (Opposite.op.{succ u3} D (Prefunctor.obj.{succ u2, succ u4, u1, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} D (CategoryTheory.Category.toCategoryStruct.{u4, u3} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) Y)) f) (CategoryTheory.NatTrans.app.{u2, u5, u1, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u5, u1, u3, succ u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u5} CategoryTheory.types.{u5} (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u5, u4, u3} D _inst_2 K ℱ')) α (Opposite.op.{succ u1} C Y)))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glueₓ'. -/
 @[simp]
 theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
     appHom H α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) :=
@@ -226,6 +302,12 @@ theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
   apply app_hom_restrict
 #align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glue
 
+/- warning: category_theory.cover_dense.types.app_iso -> CategoryTheory.CoverDense.Types.appIso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (CategoryTheory.Iso.{max u2 u1, max u3 u1 u2 (succ u1)} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ)) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ) (Opposite.op.{succ u4} D X)) (CategoryTheory.Functor.obj.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ') (Opposite.op.{succ u4} D X))))
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u5, u4} D] {K : CategoryTheory.GrothendieckTopology.{u5, u4} D _inst_2} {G : CategoryTheory.Functor.{u3, u5, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u3, u4, u5} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u3, u5, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K} {ℱ' : CategoryTheory.SheafOfTypes.{u1, u5, u4} D _inst_2 K}, (CategoryTheory.Iso.{max u1 u2, max (max (max (succ u1) u2) u1) u3} (CategoryTheory.Functor.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u3, u1, u2, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ)) (CategoryTheory.Functor.comp.{u3, u5, u1, u2, u4, succ u1} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u3, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.Functor.op.{u3, u5, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ'))) -> (forall (X : D), CategoryTheory.Iso.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1} (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ)) (Opposite.op.{succ u4} D X)) (Prefunctor.obj.{succ u5, succ u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.CategoryStruct.toQuiver.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.toCategoryStruct.{u5, u4} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2))) Type.{u1} (CategoryTheory.CategoryStruct.toQuiver.{u1, succ u1} Type.{u1} (CategoryTheory.Category.toCategoryStruct.{u1, succ u1} Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.Functor.toPrefunctor.{u5, u1, u4, succ u1} (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u5, u4} D _inst_2) Type.{u1} CategoryTheory.types.{u1} (CategoryTheory.SheafOfTypes.val.{u1, u5, u4} D _inst_2 K ℱ')) (Opposite.op.{succ u4} D X))))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIsoₓ'. -/
 /--
 (Implementation). The maps given in `app_iso` is inverse to each other and gives a `ℱ(X) ≅ ℱ'(X)`.
 -/
@@ -247,6 +329,7 @@ noncomputable def appIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val 
     simp
 #align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIso
 
+#print CategoryTheory.CoverDense.Types.presheafHom /-
 /-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of types, where `G` is full
 and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation between sheaves.
 -/
@@ -261,7 +344,9 @@ noncomputable def presheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ 
     simp only [app_hom_restrict, types_comp_apply, ← functor_to_types.map_comp_apply]
     rw [app_hom_restrict H α (f ≫ f'.op : op (unop X) ⟶ _)]
 #align category_theory.cover_dense.types.presheaf_hom CategoryTheory.CoverDense.Types.presheafHom
+-/
 
+#print CategoryTheory.CoverDense.Types.presheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full and
 cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between presheaves.
 -/
@@ -270,7 +355,9 @@ noncomputable def presheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.
     ℱ.val ≅ ℱ'.val :=
   NatIso.ofComponents (fun X => appIso H i (unop X)) (presheafHom H i.Hom).naturality
 #align category_theory.cover_dense.types.presheaf_iso CategoryTheory.CoverDense.Types.presheafIso
+-/
 
+#print CategoryTheory.CoverDense.Types.sheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full and
 cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between sheaves.
 -/
@@ -286,6 +373,7 @@ noncomputable def sheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val
     ext1
     apply (presheaf_iso H i).inv_hom_id
 #align category_theory.cover_dense.types.sheaf_iso CategoryTheory.CoverDense.Types.sheafIso
+-/
 
 end Types
 
@@ -293,6 +381,12 @@ open Types
 
 variable {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A}
 
+/- warning: category_theory.cover_dense.sheaf_coyoneda_hom -> CategoryTheory.CoverDense.sheafCoyonedaHom is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (Quiver.Hom.{succ (max u5 u3 u6), max u6 (max u3 u6) u5 u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max u5 u3 u6, max u6 (max u3 u6) u5 u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max u5 u3 u6, max u6 (max u3 u6) u5 u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{u6, max u3 u6, u5, max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (CategoryTheory.Functor.obj.{max u3 u6, max (max u6 u5 (succ u6)) u3 u6, max u4 u6 u3 u5, max (max u5 u6) (max u3 u6) (max u6 u5 (succ u6)) u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6}) ℱ)) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (CategoryTheory.Functor.obj.{max u3 u6, max (max u6 u5 (succ u6)) u3 u6, max u4 u6 u3 u5, max (max u5 u6) (max u3 u6) (max u6 u5 (succ u6)) u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max u6 u5 (succ u6), max u4 u6 u3 (succ u6)} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')))))
+but is expected to have type
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4}, (Quiver.Hom.{max (succ u1) (succ u6), max (max (max u5 u1) u6) u2} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max (max (max u1 u2) u5) u6} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) -> (Quiver.Hom.{max (max (succ u3) (succ u5)) (succ u6), max (max (max (max (max u3 u4) (succ u6)) u5) u3 u6) u6} (CategoryTheory.Functor.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max (max u3 u5) u6, max (max (max u3 u4) u5) (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max (max u3 u5) u6, max (max (max u3 u4) u5) (succ u6)} (CategoryTheory.Functor.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{u6, max u3 u6, u5, max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u5 (succ u6), max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (Prefunctor.obj.{max (succ u3) (succ u6), max (max (max (succ u3) (succ u5)) (succ u6)) (succ (succ u6)), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.toPrefunctor.{max u3 u6, max (max (max u3 u5) u6) (succ u6), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6})) ℱ)) (CategoryTheory.Functor.comp.{u6, max u5 u6, max u3 u6, u5, max u5 (succ u6), max (max u3 u4) (succ u6)} (Opposite.{succ u5} A) (CategoryTheory.Category.opposite.{u6, u5} A _inst_4) (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.coyoneda.{u6, u5} A _inst_4) (Prefunctor.obj.{max (succ u3) (succ u6), max (max (max (succ u3) (succ u5)) (succ u6)) (succ (succ u6)), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max (max (max u3 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.CategoryStruct.toQuiver.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Category.toCategoryStruct.{max (max (max u3 u5) u6) (succ u6), max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})))) (CategoryTheory.Functor.toPrefunctor.{max u3 u6, max (max (max u3 u5) u6) (succ u6), max (max (max u3 u4) u5) u6, max (max (max (max u3 u4) u5) u6) (succ u6)} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.{max u5 u6, max u3 u6, max (max (succ u6) u5) u6, max (max (max (succ u6) u3) u6) u4} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Functor.category.{max u5 u6, max u3 u6, max (max u5 (succ u6)) u6, max (max (max u3 (succ u6)) u4) u6} (CategoryTheory.Functor.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u6, u6, u5, succ u6} A _inst_4 Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6}) (CategoryTheory.Functor.category.{u4, u6, u3, succ u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.whiskeringLeft.{u3, u4, u5, u6, succ u6, u6} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 Type.{u6} CategoryTheory.types.{u6})) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')))))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHomₓ'. -/
 /-- (Implementation). The sheaf map given in `types.sheaf_hom` is natural in terms of `X`. -/
 @[simps]
 noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
@@ -322,6 +416,7 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
 
 include H
 
+#print CategoryTheory.CoverDense.sheafYonedaHom /-
 /--
 (Implementation). `sheaf_coyoneda_hom` but the order of the arguments of the functor are swapped.
 -/
@@ -339,9 +434,11 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ
     ext (X x)
     exact congr_fun ((α.app X).naturality i) x
 #align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
+-/
 
 omit H
 
+#print CategoryTheory.CoverDense.sheafHom /-
 /-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation
 between presheaves.
@@ -351,9 +448,11 @@ noncomputable def sheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ 
   { app := fun X => yoneda.preimage (α'.app X)
     naturality' := fun X Y f => yoneda.map_injective (by simpa using α'.naturality f) }
 #align category_theory.cover_dense.sheaf_hom CategoryTheory.CoverDense.sheafHom
+-/
 
 include H
 
+#print CategoryTheory.CoverDense.presheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
@@ -375,9 +474,11 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
   haveI : is_iso (sheaf_hom H i.hom) := by apply nat_iso.is_iso_of_is_iso_app
   apply as_iso (sheaf_hom H i.hom)
 #align category_theory.cover_dense.presheaf_iso CategoryTheory.CoverDense.presheafIso
+-/
 
 omit H
 
+#print CategoryTheory.CoverDense.sheafIso /-
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
@@ -394,7 +495,14 @@ noncomputable def sheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op
     ext1
     apply (presheaf_iso H i).inv_hom_id
 #align category_theory.cover_dense.sheaf_iso CategoryTheory.CoverDense.sheafIso
+-/
 
+/- warning: category_theory.cover_dense.sheaf_hom_restrict_eq -> CategoryTheory.CoverDense.sheafHom_restrict_eq is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} (α : Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))), Eq.{succ (max u1 u6)} (Quiver.Hom.{succ (max u1 u6), max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ'))) (CategoryTheory.whiskerLeft.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.CoverDense.sheafHom.{u1, u2, u3, u4, u5, u6} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' α)) α
+but is expected to have type
+  forall {C : Type.{u6}} [_inst_1 : CategoryTheory.Category.{u3, u6} C] {D : Type.{u1}} [_inst_2 : CategoryTheory.Category.{u2, u1} D] {K : CategoryTheory.GrothendieckTopology.{u2, u1} D _inst_2} {A : Type.{u4}} [_inst_4 : CategoryTheory.Category.{u5, u4} A] {G : CategoryTheory.Functor.{u3, u2, u6, u1} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u6, u3, u1, u2} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u3, u2, u6, u1} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u2, u5, u1, u4} (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u2, u5, u1, u4} D _inst_2 K A _inst_4} (α : Quiver.Hom.{max (succ u6) (succ u5), max (max (max u4 u6) u5) u3} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u3) u4) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u3) u4) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u2, u5, u1, u4} D _inst_2 K A _inst_4 ℱ'))), Eq.{max (succ u6) (succ u5)} (Quiver.Hom.{max (succ u6) (succ u5), max (max (max u4 u6) u5) u3} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u3, u5, u6, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) A _inst_4))) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) ℱ) (CategoryTheory.Functor.comp.{u3, u2, u5, u6, u1, u4} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u2, u5, u1, u4} D _inst_2 K A _inst_4 ℱ'))) (CategoryTheory.whiskerLeft.{u6, u3, u1, u2, u4, u5} (Opposite.{succ u6} C) (CategoryTheory.Category.opposite.{u3, u6} C _inst_1) (Opposite.{succ u1} D) (CategoryTheory.Category.opposite.{u2, u1} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u3, u2, u6, u1} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u2, u5, u1, u4} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.CoverDense.sheafHom.{u6, u3, u1, u2, u4, u5} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' α)) α
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eqₓ'. -/
 /-- The constructed `sheaf_hom α` is equal to `α` when restricted onto `C`.
 -/
 theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whiskerLeft G.op (sheafHom H α) = α :=
@@ -419,6 +527,12 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : whisker
   infer_instance
 #align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eq
 
+/- warning: category_theory.cover_dense.sheaf_hom_eq -> CategoryTheory.CoverDense.sheafHom_eq is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} (α : Quiver.Hom.{succ (max u3 u6), max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')), Eq.{succ (max u3 u6)} (Quiver.Hom.{succ (max u3 u6), max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max u4 u6 u3 u5} (CategoryTheory.Functor.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u6, u3, u5} (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.CoverDense.sheafHom.{u1, u2, u3, u4, u5, u6} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' (CategoryTheory.whiskerLeft.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ') α)) α
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {D : Type.{u6}} [_inst_2 : CategoryTheory.Category.{u4, u6} D] {K : CategoryTheory.GrothendieckTopology.{u4, u6} D _inst_2} {A : Type.{u3}} [_inst_4 : CategoryTheory.Category.{u5, u3} A] {G : CategoryTheory.Functor.{u1, u4, u2, u6} C _inst_1 D _inst_2} (H : CategoryTheory.CoverDense.{u2, u1, u6, u4} C _inst_1 D _inst_2 K G) [_inst_5 : CategoryTheory.Full.{u1, u4, u2, u6} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u5, u6, u3} D _inst_2 K A _inst_4} (α : Quiver.Hom.{max (succ u6) (succ u5), max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u5, u6, u3} D _inst_2 K A _inst_4 ℱ')), Eq.{max (succ u6) (succ u5)} (Quiver.Hom.{max (succ u6) (succ u5), max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u6 u5, max (max (max u6 u4) u3) u5} (CategoryTheory.Functor.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4) (CategoryTheory.Functor.category.{u4, u5, u6, u3} (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4))) ℱ (CategoryTheory.Sheaf.val.{u4, u5, u6, u3} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.CoverDense.sheafHom.{u2, u1, u6, u4, u3, u5} C _inst_1 D _inst_2 K A _inst_4 G H _inst_5 ℱ ℱ' (CategoryTheory.whiskerLeft.{u2, u1, u6, u4, u3, u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u6} D) (CategoryTheory.Category.opposite.{u4, u6} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u4, u2, u6} C _inst_1 D _inst_2 G) ℱ (CategoryTheory.Sheaf.val.{u4, u5, u6, u3} D _inst_2 K A _inst_4 ℱ') α)) α
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.CoverDense.sheafHom_eqₓ'. -/
 /-- If the pullback map is obtained via whiskering,
 then the result `sheaf_hom (whisker_left G.op α)` is equal to `α`.
 -/
@@ -438,6 +552,7 @@ theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom H (whiskerLeft G.op α) =
   simp
 #align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.CoverDense.sheafHom_eq
 
+#print CategoryTheory.CoverDense.restrictHomEquivHom /-
 /-- A full and cover-dense functor `G` induces an equivalence between morphisms into a sheaf and
 morphisms over the restrictions via `G`.
 -/
@@ -448,9 +563,16 @@ noncomputable def restrictHomEquivHom : (G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) ≃
   left_inv := sheafHom_restrict_eq H
   right_inv := sheafHom_eq H
 #align category_theory.cover_dense.restrict_hom_equiv_hom CategoryTheory.CoverDense.restrictHomEquivHom
+-/
 
 include H
 
+/- warning: category_theory.cover_dense.iso_of_restrict_iso -> CategoryTheory.CoverDense.iso_of_restrict_iso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {A : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} A] {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4} (α : Quiver.Hom.{succ (max u3 u6), max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u6, max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u3 u6, max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.CategoryTheory.category.{u4, u6, u3, u5} D _inst_2 K A _inst_4))) ℱ ℱ'), (CategoryTheory.IsIso.{max u1 u6, max u2 u6 u1 u5} (CategoryTheory.Functor.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u2, u6, u1, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) A _inst_4) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ)) (CategoryTheory.Functor.comp.{u2, u4, u6, u1, u3, u5} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.whiskerLeft.{u1, u2, u3, u4, u5, u6} (Opposite.{succ u1} C) (CategoryTheory.Category.opposite.{u2, u1} C _inst_1) (Opposite.{succ u3} D) (CategoryTheory.Category.opposite.{u4, u3} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u2, u4, u1, u3} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Sheaf.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.Sheaf.Hom.val.{u4, u6, u3, u5} D _inst_2 K A _inst_4 ℱ ℱ' α))) -> (CategoryTheory.IsIso.{max u3 u6, max u3 u5 u4 u6} (CategoryTheory.Sheaf.{u4, u6, u3, u5} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.CategoryTheory.category.{u4, u6, u3, u5} D _inst_2 K A _inst_4) ℱ ℱ' α))
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u6, u4} D] {K : CategoryTheory.GrothendieckTopology.{u6, u4} D _inst_2} {A : Type.{u3}} [_inst_4 : CategoryTheory.Category.{u5, u3} A] {G : CategoryTheory.Functor.{u1, u6, u2, u4} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u2, u1, u4, u6} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u1, u6, u2, u4} C _inst_1 D _inst_2 G] {ℱ : CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4} {ℱ' : CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4} (α : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.instCategorySheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4))) ℱ ℱ'), (CategoryTheory.IsIso.{max u2 u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u1, u5, u2, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) A _inst_4) (CategoryTheory.Functor.category.{u1, u5, u2, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) A _inst_4) (CategoryTheory.Functor.comp.{u1, u6, u5, u2, u4, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u6, u4} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u6, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ)) (CategoryTheory.Functor.comp.{u1, u6, u5, u2, u4, u3} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u6, u4} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u6, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ')) (CategoryTheory.whiskerLeft.{u2, u1, u4, u6, u3, u5} (Opposite.{succ u2} C) (CategoryTheory.Category.opposite.{u1, u2} C _inst_1) (Opposite.{succ u4} D) (CategoryTheory.Category.opposite.{u6, u4} D _inst_2) A _inst_4 (CategoryTheory.Functor.op.{u1, u6, u2, u4} C _inst_1 D _inst_2 G) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ) (CategoryTheory.Sheaf.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ') (CategoryTheory.Sheaf.Hom.val.{u6, u5, u4, u3} D _inst_2 K A _inst_4 ℱ ℱ' α))) -> (CategoryTheory.IsIso.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Sheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) (CategoryTheory.Sheaf.instCategorySheaf.{u6, u5, u4, u3} D _inst_2 K A _inst_4) ℱ ℱ' α))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.CoverDense.iso_of_restrict_isoₓ'. -/
 /-- Given a full and cover-dense functor `G` and a natural transformation of sheaves `α : ℱ ⟶ ℱ'`,
 if the pullback of `α` along `G` is iso, then `α` is also iso.
 -/
@@ -462,6 +584,12 @@ theorem iso_of_restrict_iso {ℱ ℱ' : Sheaf K A} (α : ℱ ⟶ ℱ') (i : IsIs
   apply (sheaf_hom_eq _ _).symm
 #align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.CoverDense.iso_of_restrict_iso
 
+/- warning: category_theory.cover_dense.compatible_preserving -> CategoryTheory.CoverDense.compatiblePreserving is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {D : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} D] {K : CategoryTheory.GrothendieckTopology.{u4, u3} D _inst_2} {G : CategoryTheory.Functor.{u2, u4, u1, u3} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u1, u2, u3, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u2, u4, u1, u3} C _inst_1 D _inst_2 G] [_inst_6 : CategoryTheory.Faithful.{u2, u4, u1, u3} C _inst_1 D _inst_2 G], CategoryTheory.CompatiblePreserving.{u5, u2, u4, u1, u3} C _inst_1 D _inst_2 K G)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u5, u3} C] {D : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u4, u2} D] {K : CategoryTheory.GrothendieckTopology.{u4, u2} D _inst_2} {G : CategoryTheory.Functor.{u5, u4, u3, u2} C _inst_1 D _inst_2}, (CategoryTheory.CoverDense.{u3, u5, u2, u4} C _inst_1 D _inst_2 K G) -> (forall [_inst_5 : CategoryTheory.Full.{u5, u4, u3, u2} C _inst_1 D _inst_2 G] [_inst_6 : CategoryTheory.Faithful.{u5, u4, u3, u2} C _inst_1 D _inst_2 G], CategoryTheory.CompatiblePreserving.{u1, u5, u4, u3, u2} C _inst_1 D _inst_2 K G)
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.compatible_preserving CategoryTheory.CoverDense.compatiblePreservingₓ'. -/
 /-- A fully faithful cover-dense functor preserves compatible families. -/
 theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
   by
@@ -479,13 +607,16 @@ theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
 
 omit H
 
+#print CategoryTheory.CoverDense.Sites.Pullback.full /-
 noncomputable instance Sites.Pullback.full [Faithful G] (Hp : CoverPreserving J K G) :
     Full (Sites.pullback A H.CompatiblePreserving Hp)
     where
   preimage ℱ ℱ' α := ⟨H.sheafHom α.val⟩
   witness' ℱ ℱ' α := Sheaf.Hom.ext _ _ <| H.sheafHom_restrict_eq α.val
 #align category_theory.cover_dense.sites.pullback.full CategoryTheory.CoverDense.Sites.Pullback.full
+-/
 
+#print CategoryTheory.CoverDense.Sites.Pullback.faithful /-
 instance Sites.Pullback.faithful [Faithful G] (Hp : CoverPreserving J K G) :
     Faithful (Sites.pullback A H.CompatiblePreserving Hp)
     where map_injective' := by
@@ -495,6 +626,7 @@ instance Sites.Pullback.faithful [Faithful G] (Hp : CoverPreserving J K G) :
     dsimp at e
     rw [← H.sheaf_hom_eq α.val, ← H.sheaf_hom_eq β.val, e]
 #align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.CoverDense.Sites.Pullback.faithful
+-/
 
 end CoverDense
 
@@ -516,6 +648,12 @@ variable (Hd : CoverDense K G) (Hp : CoverPreserving J K G) (Hl : CoverLifting J
 
 include Hd Hp Hl
 
+/- warning: category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting -> CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} {D : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Category.{u2, u3} D] {G : CategoryTheory.Functor.{u2, u2, u3, u3} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] [_inst_4 : CategoryTheory.Faithful.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {K : CategoryTheory.GrothendieckTopology.{u2, u3} D _inst_2} {A : Type.{u1}} [_inst_5 : CategoryTheory.Category.{max u3 u2, u1} A] [_inst_6 : CategoryTheory.Limits.HasLimits.{max u3 u2, u1} A _inst_5], (CategoryTheory.CoverDense.{u3, u2, u3, u2} C _inst_1 D _inst_2 K G) -> (CategoryTheory.CoverPreserving.{u2, u2, u3, u3} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.CoverLifting.{u3, u2, u3, u2} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.Equivalence.{max u3 u2, max u3 u2, max u3 u1 u3 u2, max u3 u1 u3 u2} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5) (CategoryTheory.Sheaf.CategoryTheory.category.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5))
+but is expected to have type
+  forall {C : Type.{u3}} {D : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] [_inst_2 : CategoryTheory.Category.{u2, u3} D] {G : CategoryTheory.Functor.{u2, u2, u3, u3} C _inst_1 D _inst_2} [_inst_3 : CategoryTheory.Full.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] [_inst_4 : CategoryTheory.Faithful.{u2, u2, u3, u3} C _inst_1 D _inst_2 G] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {K : CategoryTheory.GrothendieckTopology.{u2, u3} D _inst_2} {A : Type.{u1}} [_inst_5 : CategoryTheory.Category.{max u3 u2, u1} A] [_inst_6 : CategoryTheory.Limits.HasLimits.{max u3 u2, u1} A _inst_5], (CategoryTheory.CoverDense.{u3, u2, u3, u2} C _inst_1 D _inst_2 K G) -> (CategoryTheory.CoverPreserving.{u2, u2, u3, u3} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.CoverLifting.{u3, u2, u3, u2} C _inst_1 D _inst_2 J K G) -> (CategoryTheory.Equivalence.{max u3 u2, max u3 u2, max (max (max u1 u3) u3 u2) u2, max (max (max u1 u3) u3 u2) u2} (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} C _inst_1 J A _inst_5) (CategoryTheory.Sheaf.instCategorySheaf.{u2, max u3 u2, u3, u1} D _inst_2 K A _inst_5))
+Case conversion may be inaccurate. Consider using '#align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLiftingₓ'. -/
 /-- Given a functor between small sites that is cover-dense, cover-preserving, and cover-lifting,
 it induces an equivalence of category of sheaves valued in a complete category.
 -/
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 
 ! This file was ported from Lean 3 source module category_theory.sites.dense_subsite
-! leanprover-community/mathlib commit 14b69e9f3c16630440a2cbd46f1ddad0d561dee7
+! leanprover-community/mathlib commit 1d650c2e131f500f3c17f33b4d19d2ea15987f2c
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -151,8 +151,6 @@ theorem sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D} {T : Sieve U} (h
   (ℱ.cond X T hT).IsSeparatedFor x t _ h ((ℱ.cond X T hT).IsAmalgamation hx)
 #align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.CoverDense.sheaf_eq_amalgamation
 
-include H
-
 variable [Full G]
 
 namespace Types
@@ -168,9 +166,10 @@ noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
   ℱ'.val.map hf.some.lift.op <| α.app (op _) (ℱ.map hf.some.map.op x : _)
 #align category_theory.cover_dense.types.pushforward_family CategoryTheory.CoverDense.Types.pushforwardFamily
 
+include H
+
 /-- (Implementation). The `pushforward_family` defined is compatible. -/
-theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
-    (pushforwardFamily H α x).Compatible :=
+theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) : (pushforwardFamily α x).Compatible :=
   by
   intro Y₁ Y₂ Z g₁ g₂ f₁ f₂ h₁ h₂ e
   apply H.ext
@@ -188,15 +187,16 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
   simp [e]
 #align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.CoverDense.Types.pushforwardFamily_compatible
 
+omit H
+
 /-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforward_family`. -/
 noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
-  (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily H α x)
-    (pushforwardFamily_compatible H α x)
+  (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily α x) (pushforwardFamily_compatible H α x)
 #align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHom
 
 @[simp]
 theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
-    pushforwardFamily H α x f (Presieve.in_coverByImage G f) = α.app (op Y) (ℱ.map f.op x) :=
+    pushforwardFamily α x f (Presieve.in_coverByImage G f) = α.app (op Y) (ℱ.map f.op x) :=
   by
   unfold pushforward_family
   refine' congr_fun _ x
@@ -320,6 +320,8 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     simp
 #align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHom
 
+include H
+
 /--
 (Implementation). `sheaf_coyoneda_hom` but the order of the arguments of the functor are swapped.
 -/
@@ -338,6 +340,8 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ
     exact congr_fun ((α.app X).naturality i) x
 #align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
 
+omit H
+
 /-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation
 between presheaves.
@@ -348,6 +352,8 @@ noncomputable def sheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ 
     naturality' := fun X Y f => yoneda.map_injective (by simpa using α'.naturality f) }
 #align category_theory.cover_dense.sheaf_hom CategoryTheory.CoverDense.sheafHom
 
+include H
+
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
@@ -370,6 +376,8 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
   apply as_iso (sheaf_hom H i.hom)
 #align category_theory.cover_dense.presheaf_iso CategoryTheory.CoverDense.presheafIso
 
+omit H
+
 /-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
@@ -441,6 +449,8 @@ noncomputable def restrictHomEquivHom : (G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) ≃
   right_inv := sheafHom_eq H
 #align category_theory.cover_dense.restrict_hom_equiv_hom CategoryTheory.CoverDense.restrictHomEquivHom
 
+include H
+
 /-- Given a full and cover-dense functor `G` and a natural transformation of sheaves `α : ℱ ⟶ ℱ'`,
 if the pullback of `α` along `G` is iso, then `α` is also iso.
 -/
@@ -467,6 +477,8 @@ theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G :=
   simp [Eq]
 #align category_theory.cover_dense.compatible_preserving CategoryTheory.CoverDense.compatiblePreserving
 
+omit H
+
 noncomputable instance Sites.Pullback.full [Faithful G] (Hp : CoverPreserving J K G) :
     Full (Sites.pullback A H.CompatiblePreserving Hp)
     where
Diff
@@ -63,7 +63,7 @@ structure Presieve.CoverByImageStructure (G : C ⥤ D) {V U : D} (f : V ⟶ U) w
   obj : C
   lift : V ⟶ G.obj obj
   map : G.obj obj ⟶ U
-  fac' : lift ≫ map = f := by obviously
+  fac : lift ≫ map = f := by obviously
 #align category_theory.presieve.cover_by_image_structure CategoryTheory.Presieve.CoverByImageStructure
 
 restate_axiom presieve.cover_by_image_structure.fac'

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
@@ -195,13 +195,13 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
   intro Y f
   simp only [pushforwardFamily, ← FunctorToTypes.map_comp_apply, ← op_comp]
   change (ℱ.map _ ≫ α.app (op _) ≫ ℱ'.val.map _) _ = (ℱ.map _ ≫ α.app (op _) ≫ ℱ'.val.map _) _
-  rw [← G.image_preimage (f ≫ g₁ ≫ _)]
-  rw [← G.image_preimage (f ≫ g₂ ≫ _)]
+  rw [← G.map_preimage (f ≫ g₁ ≫ _)]
+  rw [← G.map_preimage (f ≫ g₂ ≫ _)]
   erw [← α.naturality (G.preimage _).op]
   erw [← α.naturality (G.preimage _).op]
   refine' congr_fun _ x
   simp only [Functor.comp_map, ← Category.assoc, Functor.op_map, Quiver.Hom.unop_op,
-    ← ℱ.map_comp, ← op_comp, G.image_preimage]
+    ← ℱ.map_comp, ← op_comp, G.map_preimage]
   congr 3
   simp [e]
 #align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_compatible
@@ -224,10 +224,10 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
       (α.app (op (Nonempty.some (_ : coverByImage G X f)).1)
         (ℱ.map ((Nonempty.some (_ : coverByImage G X f)).map.op) t))) =
     (fun t => α.app (op Y) (ℱ.map (f.op) t))) x
-  rw [← G.image_preimage (Nonempty.some _ : Presieve.CoverByImageStructure _ _).lift]
+  rw [← G.map_preimage (Nonempty.some _ : Presieve.CoverByImageStructure _ _).lift]
   change ℱ.map _ ≫ α.app (op _) ≫ ℱ'.val.map _ = ℱ.map f.op ≫ α.app (op Y)
   erw [← α.naturality (G.preimage _).op]
-  simp only [← Functor.map_comp, ← Category.assoc, Functor.comp_map, G.image_preimage, G.op_map,
+  simp only [← Functor.map_comp, ← Category.assoc, Functor.comp_map, G.map_preimage, G.op_map,
     Quiver.Hom.unop_op, ← op_comp, Presieve.CoverByImageStructure.fac]
 #align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_apply
 
@@ -383,7 +383,7 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
       apply isIso_of_reflects_iso _ yoneda
     use (sheafYonedaHom i.inv).app X
     constructor <;> ext x : 2 <;>
-      simp only [sheafHom, NatTrans.comp_app, NatTrans.id_app, Functor.image_preimage]
+      simp only [sheafHom, NatTrans.comp_app, NatTrans.id_app, Functor.map_preimage]
     · exact ((Types.presheafIso (isoOver i (unop x))).app X).hom_inv_id
     · exact ((Types.presheafIso (isoOver i (unop x))).app X).inv_hom_id
     -- Porting note: Lean 4 proof is finished, Lean 3 needed `inferInstance`
@@ -414,8 +414,8 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
   ext X
   apply yoneda.map_injective
   ext U
-  -- Porting note: didn't need to provide the input to `image_preimage` in Lean 3
-  erw [yoneda.image_preimage ((sheafYonedaHom α).app (G.op.obj X))]
+  -- Porting note: didn't need to provide the input to `map_preimage` in Lean 3
+  erw [yoneda.map_preimage ((sheafYonedaHom α).app (G.op.obj X))]
   symm
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (G.obj (unop X))) from _) = _
   apply sheaf_eq_amalgamation ℱ' (G.is_cover_of_isCoverDense _ _)
@@ -428,7 +428,7 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
   congr 1
   simp only [Category.assoc]
   congr 1
-  rw [← G.image_preimage hf.some.map]
+  rw [← G.map_preimage hf.some.map]
   symm
   apply α.naturality (G.preimage hf.some.map).op
   -- porting note; Lean 3 needed a random `inferInstance` for cleanup here; not necessary in lean 4
@@ -444,8 +444,8 @@ theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom (whiskerLeft G.op α) = 
   apply yoneda.map_injective
   -- Porting note: deleted next line as it's not needed in Lean 4
   ext U
-  -- Porting note: Lean 3 didn't need to be told the explicit input to image_preimage
-  erw [yoneda.image_preimage ((sheafYonedaHom (whiskerLeft G.op α)).app X)]
+  -- Porting note: Lean 3 didn't need to be told the explicit input to map_preimage
+  erw [yoneda.map_preimage ((sheafYonedaHom (whiskerLeft G.op α)).app X)]
   symm
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (unop X)) from _) = _
   apply sheaf_eq_amalgamation ℱ' (G.is_cover_of_isCoverDense _ _)
@@ -488,9 +488,9 @@ lemma compatiblePreserving [Faithful G] : CompatiblePreserving K G := by
   apply Functor.IsCoverDense.ext G
   intro W i
   simp only [← FunctorToTypes.map_comp_apply, ← op_comp]
-  rw [← G.image_preimage (i ≫ f₁)]
-  rw [← G.image_preimage (i ≫ f₂)]
-  apply hx
+  rw [← G.map_preimage (i ≫ f₁)]
+  rw [← G.map_preimage (i ≫ f₂)]
+  apply hx (G.preimage (i ≫ f₁)) ((G.preimage (i ≫ f₂))) hg₁ hg₂
   apply G.map_injective
   simp [eq]
 #align category_theory.cover_dense.compatible_preserving CategoryTheory.Functor.IsCoverDense.compatiblePreserving
@@ -498,11 +498,10 @@ lemma compatiblePreserving [Faithful G] : CompatiblePreserving K G := by
 lemma isContinuous [Faithful G] (Hp : CoverPreserving J K G) : G.IsContinuous J K :=
   isContinuous_of_coverPreserving (compatiblePreserving K G) Hp
 
-noncomputable instance fullSheafPushforwardContinuous [G.IsContinuous J K] :
+instance full_sheafPushforwardContinuous [G.IsContinuous J K] :
     Full (G.sheafPushforwardContinuous A J K) where
-  preimage α := ⟨sheafHom α.val⟩
-  witness α := Sheaf.Hom.ext _ _ <| sheafHom_restrict_eq α.val
-#align category_theory.cover_dense.sites.pullback.full CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous
+  map_surjective α := ⟨⟨sheafHom α.val⟩, Sheaf.Hom.ext _ _ <| sheafHom_restrict_eq α.val⟩
+#align category_theory.cover_dense.sites.pullback.full CategoryTheory.Functor.IsCoverDense.full_sheafPushforwardContinuous
 
 instance faithful_sheafPushforwardContinuous [G.IsContinuous J K] :
     Faithful (G.sheafPushforwardContinuous A J K) where
chore: resolve some simp-related porting notes (#12074)

In all cases, the original proof works now. I presume this is due to simp changes in Lean 4.7, but haven't verified.

Diff
@@ -200,12 +200,8 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
   erw [← α.naturality (G.preimage _).op]
   erw [← α.naturality (G.preimage _).op]
   refine' congr_fun _ x
-  -- Porting note: these next 3 tactics (simp, rw, simp) were just one big `simp only` in Lean 3
-  -- but I can't get `simp` to do the `rw` line.
-  simp only [Functor.comp_map, ← Category.assoc, Functor.op_map, Quiver.Hom.unop_op]
-  rw [← ℱ.map_comp, ← ℱ.map_comp] -- `simp only [← ℱ.map_comp]` does nothing, even if I add
-  -- the relevant explicit inputs
-  simp only [← op_comp, G.image_preimage]
+  simp only [Functor.comp_map, ← Category.assoc, Functor.op_map, Quiver.Hom.unop_op,
+    ← ℱ.map_comp, ← op_comp, G.image_preimage]
   congr 3
   simp [e]
 #align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_compatible
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
@@ -53,7 +53,7 @@ variable {L : GrothendieckTopology E}
 
 /-- An auxiliary structure that witnesses the fact that `f` factors through an image object of `G`.
 -/
--- Porting note: removed `@[nolint has_nonempty_instance]`
+-- Porting note(#5171): removed `@[nolint has_nonempty_instance]`
 structure Presieve.CoverByImageStructure (G : C ⥤ D) {V U : D} (f : V ⟶ U) where
   obj : C
   lift : V ⟶ G.obj obj
feat(CategoryTheory/Sites): a functor into a precoherent category satisfying Functor.EffectivelyEnough is cover dense (#11686)
Diff
@@ -98,6 +98,17 @@ lemma Functor.is_cover_of_isCoverDense (G : C ⥤ D) (K : GrothendieckTopology D
     [G.IsCoverDense K] (U : D) : Sieve.coverByImage G U ∈ K U := by
   apply Functor.IsCoverDense.is_cover
 
+lemma Functor.isCoverDense_of_generate_singleton_functor_π_mem (G : C ⥤ D)
+    (K : GrothendieckTopology D)
+    (h : ∀ B, ∃ (X : C) (f : G.obj X ⟶ B), Sieve.generate (Presieve.singleton f) ∈ K B) :
+    G.IsCoverDense K where
+  is_cover B := by
+    obtain ⟨X, f, h⟩ := h B
+    refine K.superset_covering ?_ h
+    intro Y f ⟨Z, g, _, h, w⟩
+    cases h
+    exact ⟨⟨_, g, _, w⟩⟩
+
 attribute [nolint docBlame] CategoryTheory.Functor.IsCoverDense.is_cover
 
 open Presieve Opposite
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -48,9 +48,7 @@ universe w v u
 namespace CategoryTheory
 
 variable {C : Type*} [Category C] {D : Type*} [Category D] {E : Type*} [Category E]
-
 variable (J : GrothendieckTopology C) (K : GrothendieckTopology D)
-
 variable {L : GrothendieckTopology E}
 
 /-- An auxiliary structure that witnesses the fact that `f` factors through an image object of `G`.
@@ -107,7 +105,6 @@ open Presieve Opposite
 namespace Functor.IsCoverDense
 
 variable {K}
-
 variable {A : Type*} [Category A] (G : C ⥤ D) [G.IsCoverDense K]
 
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
@@ -519,13 +516,9 @@ namespace CategoryTheory.Functor.IsCoverDense
 open CategoryTheory
 
 variable {C D : Type u} [Category.{v} C] [Category.{v} D]
-
 variable (G : C ⥤ D) [Full G] [Faithful G]
-
 variable (J : GrothendieckTopology C) (K : GrothendieckTopology D)
-
 variable {A : Type w} [Category.{max u v} A] [Limits.HasLimits A]
-
 variable [G.IsCoverDense K] [G.IsContinuous J K] [G.IsCocontinuous J K]
 
 instance (Y : Sheaf J A) : IsIso ((G.sheafAdjunctionCocontinuous A J K).counit.app Y) := by
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -55,7 +55,7 @@ variable {L : GrothendieckTopology E}
 
 /-- An auxiliary structure that witnesses the fact that `f` factors through an image object of `G`.
 -/
--- porting note: removed `@[nolint has_nonempty_instance]`
+-- Porting note: removed `@[nolint has_nonempty_instance]`
 structure Presieve.CoverByImageStructure (G : C ⥤ D) {V U : D} (f : V ⟶ U) where
   obj : C
   lift : V ⟶ G.obj obj
@@ -164,16 +164,16 @@ variable {ℱ : Dᵒᵖ ⥤ Type v} {ℱ' : SheafOfTypes.{v} K} (α : G.op ⋙ 
 /--
 (Implementation). Given a section of `ℱ` on `X`, we can obtain a family of elements valued in `ℱ'`
 that is defined on a cover generated by the images of `G`. -/
--- porting note: removed `@[simp, nolint unused_arguments]`
+-- Porting note: removed `@[simp, nolint unused_arguments]`
 noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
     FamilyOfElements ℱ'.val (coverByImage G X) := fun _ _ hf =>
   ℱ'.val.map hf.some.lift.op <| α.app (op _) (ℱ.map hf.some.map.op x : _)
 #align category_theory.cover_dense.types.pushforward_family CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily
 
--- porting note: there are various `include` and `omit`s in this file  (e.g. one is removed here),
+-- Porting note: there are various `include` and `omit`s in this file  (e.g. one is removed here),
 -- none of which are needed in Lean 4.
 
--- porting note: `pushforward_family` was tagged `@[simp]` in Lean 3 so we add the
+-- Porting note: `pushforward_family` was tagged `@[simp]` in Lean 3 so we add the
 -- equation lemma
 @[simp] theorem pushforwardFamily_def {X} (x : ℱ.obj (op X)) :
     pushforwardFamily α x = fun _ _ hf =>
@@ -192,7 +192,7 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
   erw [← α.naturality (G.preimage _).op]
   erw [← α.naturality (G.preimage _).op]
   refine' congr_fun _ x
-  -- porting note: these next 3 tactics (simp, rw, simp) were just one big `simp only` in Lean 3
+  -- Porting note: these next 3 tactics (simp, rw, simp) were just one big `simp only` in Lean 3
   -- but I can't get `simp` to do the `rw` line.
   simp only [Functor.comp_map, ← Category.assoc, Functor.op_map, Quiver.Hom.unop_op]
   rw [← ℱ.map_comp, ← ℱ.map_comp] -- `simp only [← ℱ.map_comp]` does nothing, even if I add
@@ -212,7 +212,7 @@ noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun
 theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
     pushforwardFamily α x f (Presieve.in_coverByImage G f) = α.app (op Y) (ℱ.map f.op x) := by
   unfold pushforwardFamily
-  -- porting note: congr_fun was more powerful in Lean 3; I had to explicitly supply
+  -- Porting note: congr_fun was more powerful in Lean 3; I had to explicitly supply
   -- the type of the first input here even though it's obvious (there is a unique occurrence
   -- of x on each side of the equality)
   refine' congr_fun (_ :
@@ -273,7 +273,7 @@ noncomputable def presheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ 
     apply Functor.IsCoverDense.ext G
     intro Y' f'
     simp only [appHom_restrict, types_comp_apply, ← FunctorToTypes.map_comp_apply]
-    -- porting note: Lean 3 proof continued with a rewrite but we're done here
+    -- Porting note: Lean 3 proof continued with a rewrite but we're done here
 #align category_theory.cover_dense.types.presheaf_hom CategoryTheory.Functor.IsCoverDense.Types.presheafHom
 
 /-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full
@@ -321,7 +321,7 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     symm
     apply sheaf_eq_amalgamation
     apply G.is_cover_of_isCoverDense
-    -- porting note: the following line closes a goal which didn't exist before reenableeta
+    -- Porting note: the following line closes a goal which didn't exist before reenableeta
     · exact pushforwardFamily_compatible (homOver α Y.unop) (f.unop ≫ x)
     intro Y' f' hf'
     change unop X ⟶ ℱ.obj (op (unop _)) at x
@@ -372,7 +372,7 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
     ℱ.val ≅ ℱ'.val := by
   have : ∀ X : Dᵒᵖ, IsIso ((sheafHom i.hom).app X) := by
     intro X
-    -- porting note: somehow `apply` in Lean 3 is leaving a typeclass goal,
+    -- Porting note: somehow `apply` in Lean 3 is leaving a typeclass goal,
     -- perhaps due to elaboration order. The corresponding `apply` in Lean 4 fails
     -- because the instance can't yet be synthesized. I hence reorder the proof.
     suffices IsIso (yoneda.map ((sheafHom i.hom).app X)) by
@@ -382,7 +382,7 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
       simp only [sheafHom, NatTrans.comp_app, NatTrans.id_app, Functor.image_preimage]
     · exact ((Types.presheafIso (isoOver i (unop x))).app X).hom_inv_id
     · exact ((Types.presheafIso (isoOver i (unop x))).app X).inv_hom_id
-    -- porting note: Lean 4 proof is finished, Lean 3 needed `inferInstance`
+    -- Porting note: Lean 4 proof is finished, Lean 3 needed `inferInstance`
   haveI : IsIso (sheafHom i.hom) := by apply NatIso.isIso_of_isIso_app
   apply asIso (sheafHom i.hom)
 #align category_theory.cover_dense.presheaf_iso CategoryTheory.Functor.IsCoverDense.presheafIso
@@ -410,12 +410,12 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
   ext X
   apply yoneda.map_injective
   ext U
-  -- porting note: didn't need to provide the input to `image_preimage` in Lean 3
+  -- Porting note: didn't need to provide the input to `image_preimage` in Lean 3
   erw [yoneda.image_preimage ((sheafYonedaHom α).app (G.op.obj X))]
   symm
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (G.obj (unop X))) from _) = _
   apply sheaf_eq_amalgamation ℱ' (G.is_cover_of_isCoverDense _ _)
-  -- porting note: next line was not needed in mathlib3
+  -- Porting note: next line was not needed in mathlib3
   · exact (pushforwardFamily_compatible _ _)
   intro Y f hf
   conv_lhs => rw [← hf.some.fac]
@@ -438,14 +438,14 @@ then the result `sheaf_hom (whisker_left G.op α)` is equal to `α`.
 theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom (whiskerLeft G.op α) = α := by
   ext X
   apply yoneda.map_injective
-  -- porting note: deleted next line as it's not needed in Lean 4
+  -- Porting note: deleted next line as it's not needed in Lean 4
   ext U
-  -- porting note: Lean 3 didn't need to be told the explicit input to image_preimage
+  -- Porting note: Lean 3 didn't need to be told the explicit input to image_preimage
   erw [yoneda.image_preimage ((sheafYonedaHom (whiskerLeft G.op α)).app X)]
   symm
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (unop X)) from _) = _
   apply sheaf_eq_amalgamation ℱ' (G.is_cover_of_isCoverDense _ _)
-  -- porting note: next line was not needed in mathlib3
+  -- Porting note: next line was not needed in mathlib3
   · exact (pushforwardFamily_compatible _ _)
   intro Y f hf
   conv_lhs => rw [← hf.some.fac]
refactor(CategoryTheory/Sites): sheafification as an abstract left adjoint (#9012)

We define a typeclass HasSheafify which says that presheaves on a site with values in some category can be sheafified, i.e. that the inclusion functor from sheaves to presheaves has a left exact left adjoint. We redefine presheafToSheaf as an arbitrary choice of such a left adjoint.

Diff
@@ -545,14 +545,7 @@ noncomputable def sheafEquivOfCoverPreservingCoverLifting : Sheaf J A ≌ Sheaf
 set_option linter.uppercaseLean3 false in
 #align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.Functor.IsCoverDense.sheafEquivOfCoverPreservingCoverLifting
 
-variable
-  [ConcreteCategory.{max v u} A]
-  [Limits.PreservesLimits (forget A)]
-  [ReflectsIsomorphisms (forget A)]
-  [∀ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)ᵒᵖ (forget A)]
-  [∀ (X : C), Limits.HasColimitsOfShape (J.Cover X)ᵒᵖ A]
-  [∀ (X : D), Limits.PreservesColimitsOfShape (K.Cover X)ᵒᵖ (forget A)]
-  [∀ (X : D), Limits.HasColimitsOfShape (K.Cover X)ᵒᵖ A]
+variable [HasWeakSheafify J A] [HasWeakSheafify K A]
 
 /-- The natural isomorphism exhibiting the compatibility of
 `sheafEquivOfCoverPreservingCoverLifting` with sheafification. -/
refactor(CategoryTheory/Sites): continuous functors (#8408)

This PR introduces the typeclass Functor.IsContinuous which says that the precomposition with a functor preserves the sheaf condition for Grothendieck topologies. It slightly refactors the previous main theorem about CoverPreserving and CompatiblePreserving functors: it now states that such functors are continuous. The pushforward functor for a continuous functor is defined under the Functor.IsContinuous assumption rather than the combination of both CoverPreserving and CompatiblePreserving. The property CoverLifting is renamed IsCocontinuous and it is made a class. The property IsCoverDense is also made a class.

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>

Diff
@@ -11,7 +11,7 @@ import Mathlib.CategoryTheory.Adjunction.FullyFaithful
 /-!
 # Dense subsites
 
-We define `CoverDense` functors into sites as functors such that there exists a covering sieve
+We define `IsCoverDense` functors into sites as functors such that there exists a covering sieve
 that factors through images of the functor for each object in `D`.
 
 We will primarily consider cover-dense functors that are also full, since this notion is in general
@@ -21,15 +21,16 @@ we would need, and some sheafification would be needed for here and there.
 
 ## Main results
 
-- `CategoryTheory.CoverDense.Types.presheafHom`: If `G : C ⥤ (D, K)` is full and cover-dense,
-  then given any presheaf `ℱ` and sheaf `ℱ'` on `D`, and a morphism `α : G ⋙ ℱ ⟶ G ⋙ ℱ'`,
-  we may glue them together to obtain a morphism of presheaves `ℱ ⟶ ℱ'`.
-- `CategoryTheory.CoverDense.sheafIso`: If `ℱ` above is a sheaf and `α` is an iso,
+- `CategoryTheory.Functor.IsCoverDense.Types.presheafHom`: If `G : C ⥤ (D, K)` is full
+  and cover-dense, then given any presheaf `ℱ` and sheaf `ℱ'` on `D`,
+  and a morphism `α : G ⋙ ℱ ⟶ G ⋙ ℱ'`, we may glue them together to obtain
+  a morphism of presheaves `ℱ ⟶ ℱ'`.
+- `CategoryTheory.Functor.IsCoverDense.sheafIso`: If `ℱ` above is a sheaf and `α` is an iso,
   then the result is also an iso.
-- `CategoryTheory.CoverDense.iso_of_restrict_iso`: If `G : C ⥤ (D, K)` is full and cover-dense,
-  then given any sheaves `ℱ, ℱ'` on `D`, and a morphism `α : ℱ ⟶ ℱ'`, then `α` is an iso if
-  `G ⋙ ℱ ⟶ G ⋙ ℱ'` is iso.
-- `CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting`:
+- `CategoryTheory.Functor.IsCoverDense.iso_of_restrict_iso`: If `G : C ⥤ (D, K)` is full
+  and cover-dense, then given any sheaves `ℱ, ℱ'` on `D`, and a morphism `α : ℱ ⟶ ℱ'`,
+  then `α` is an iso if `G ⋙ ℱ ⟶ G ⋙ ℱ'` is iso.
+- `CategoryTheory.Functor.IsCoverDense.sheafEquivOfCoverPreservingCoverLifting`:
   If `G : (C, J) ⥤ (D, K)` is fully-faithful, cover-lifting, cover-preserving, and cover-dense,
   then it will induce an equivalence of categories of sheaves valued in a complete category.
 
@@ -86,42 +87,49 @@ theorem Presieve.in_coverByImage (G : C ⥤ D) {X : D} {Y : C} (f : G.obj Y ⟶
   ⟨⟨Y, 𝟙 _, f, by simp⟩⟩
 #align category_theory.presieve.in_cover_by_image CategoryTheory.Presieve.in_coverByImage
 
-/-- A functor `G : (C, J) ⥤ (D, K)` is called `CoverDense` if for each object in `D`,
+/-- A functor `G : (C, J) ⥤ (D, K)` is cover dense if for each object in `D`,
   there exists a covering sieve in `D` that factors through images of `G`.
 
 This definition can be found in https://ncatlab.org/nlab/show/dense+sub-site Definition 2.2.
 -/
-structure CoverDense (K : GrothendieckTopology D) (G : C ⥤ D) : Prop where
+class Functor.IsCoverDense (G : C ⥤ D) (K : GrothendieckTopology D) : Prop where
   is_cover : ∀ U : D, Sieve.coverByImage G U ∈ K U
-#align category_theory.cover_dense CategoryTheory.CoverDense
+#align category_theory.cover_dense CategoryTheory.Functor.IsCoverDense
 
-attribute [nolint docBlame] CategoryTheory.CoverDense.is_cover
+lemma Functor.is_cover_of_isCoverDense (G : C ⥤ D) (K : GrothendieckTopology D)
+    [G.IsCoverDense K] (U : D) : Sieve.coverByImage G U ∈ K U := by
+  apply Functor.IsCoverDense.is_cover
+
+attribute [nolint docBlame] CategoryTheory.Functor.IsCoverDense.is_cover
 
 open Presieve Opposite
 
-namespace CoverDense
+namespace Functor.IsCoverDense
 
 variable {K}
 
-variable {A : Type*} [Category A] {G : C ⥤ D} (H : CoverDense K G)
+variable {A : Type*} [Category A] (G : C ⥤ D) [G.IsCoverDense K]
 
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
-theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
+theorem ext (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
     (h : ∀ ⦃Y : C⦄ (f : G.obj Y ⟶ X), ℱ.val.map f.op s = ℱ.val.map f.op t) : s = t := by
-  apply (ℱ.cond (Sieve.coverByImage G X) (H.is_cover X)).isSeparatedFor.ext
+  apply (ℱ.cond (Sieve.coverByImage G X) (G.is_cover_of_isCoverDense K X)).isSeparatedFor.ext
   rintro Y _ ⟨Z, f₁, f₂, ⟨rfl⟩⟩
   simp [h f₂]
-#align category_theory.cover_dense.ext CategoryTheory.CoverDense.ext
+#align category_theory.cover_dense.ext CategoryTheory.Functor.IsCoverDense.ext
+
+variable {G}
 
-theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X : C}
+theorem functorPullback_pushforward_covering [Full G] {X : C}
     (T : K (G.obj X)) : (T.val.functorPullback G).functorPushforward G ∈ K (G.obj X) := by
-  refine' K.superset_covering _ (K.bind_covering T.property fun Y f _ => H.is_cover Y)
+  refine' K.superset_covering _ (K.bind_covering T.property
+    fun Y f _ => G.is_cover_of_isCoverDense K Y)
   rintro Y _ ⟨Z, _, f, hf, ⟨W, g, f', ⟨rfl⟩⟩, rfl⟩
   use W; use G.preimage (f' ≫ f); use g
   constructor
   · simpa using T.val.downward_closed hf f'
   · simp
-#align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_covering
+#align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.Functor.IsCoverDense.functorPullback_pushforward_covering
 
 /-- (Implementation). Given a hom between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain a hom between the pullbacks of the sheaves of maps from `X`.
@@ -130,7 +138,7 @@ theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X :
 def homOver {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A} (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) (X : A) :
     G.op ⋙ ℱ ⋙ coyoneda.obj (op X) ⟶ G.op ⋙ (sheafOver ℱ' X).val :=
   whiskerRight α (coyoneda.obj (op X))
-#align category_theory.cover_dense.hom_over CategoryTheory.CoverDense.homOver
+#align category_theory.cover_dense.hom_over CategoryTheory.Functor.IsCoverDense.homOver
 
 /-- (Implementation). Given an iso between the pullbacks of two sheaves, we can whisker it with
 `coyoneda` to obtain an iso between the pullbacks of the sheaves of maps from `X`.
@@ -139,13 +147,13 @@ def homOver {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A} (α : G.op ⋙ ℱ ⟶ G.op
 def isoOver {ℱ ℱ' : Sheaf K A} (α : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) (X : A) :
     G.op ⋙ (sheafOver ℱ X).val ≅ G.op ⋙ (sheafOver ℱ' X).val :=
   isoWhiskerRight α (coyoneda.obj (op X))
-#align category_theory.cover_dense.iso_over CategoryTheory.CoverDense.isoOver
+#align category_theory.cover_dense.iso_over CategoryTheory.Functor.IsCoverDense.isoOver
 
 theorem sheaf_eq_amalgamation (ℱ : Sheaf K A) {X : A} {U : D} {T : Sieve U} (hT)
     (x : FamilyOfElements _ T) (hx) (t) (h : x.IsAmalgamation t) :
     t = (ℱ.cond X T hT).amalgamate x hx :=
   (ℱ.cond X T hT).isSeparatedFor x t _ h ((ℱ.cond X T hT).isAmalgamation hx)
-#align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.CoverDense.sheaf_eq_amalgamation
+#align category_theory.cover_dense.sheaf_eq_amalgamation CategoryTheory.Functor.IsCoverDense.sheaf_eq_amalgamation
 
 variable [Full G]
 
@@ -160,7 +168,7 @@ that is defined on a cover generated by the images of `G`. -/
 noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
     FamilyOfElements ℱ'.val (coverByImage G X) := fun _ _ hf =>
   ℱ'.val.map hf.some.lift.op <| α.app (op _) (ℱ.map hf.some.map.op x : _)
-#align category_theory.cover_dense.types.pushforward_family CategoryTheory.CoverDense.Types.pushforwardFamily
+#align category_theory.cover_dense.types.pushforward_family CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily
 
 -- porting note: there are various `include` and `omit`s in this file  (e.g. one is removed here),
 -- none of which are needed in Lean 4.
@@ -175,7 +183,7 @@ noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
 theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
     (pushforwardFamily α x).Compatible := by
   intro Y₁ Y₂ Z g₁ g₂ f₁ f₂ h₁ h₂ e
-  apply H.ext
+  apply IsCoverDense.ext G
   intro Y f
   simp only [pushforwardFamily, ← FunctorToTypes.map_comp_apply, ← op_comp]
   change (ℱ.map _ ≫ α.app (op _) ≫ ℱ'.val.map _) _ = (ℱ.map _ ≫ α.app (op _) ≫ ℱ'.val.map _) _
@@ -192,13 +200,13 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
   simp only [← op_comp, G.image_preimage]
   congr 3
   simp [e]
-#align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.CoverDense.Types.pushforwardFamily_compatible
+#align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_compatible
 
 /-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforwardFamily`. -/
 noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
-  (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily α x)
-    (pushforwardFamily_compatible H α x)
-#align category_theory.cover_dense.types.app_hom CategoryTheory.CoverDense.Types.appHom
+  (ℱ'.cond _ (G.is_cover_of_isCoverDense _ X)).amalgamate (pushforwardFamily α x)
+    (pushforwardFamily_compatible α x)
+#align category_theory.cover_dense.types.app_hom CategoryTheory.Functor.IsCoverDense.Types.appHom
 
 @[simp]
 theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y ⟶ X) :
@@ -217,24 +225,22 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
   erw [← α.naturality (G.preimage _).op]
   simp only [← Functor.map_comp, ← Category.assoc, Functor.comp_map, G.image_preimage, G.op_map,
     Quiver.Hom.unop_op, ← op_comp, Presieve.CoverByImageStructure.fac]
-#align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.CoverDense.Types.pushforwardFamily_apply
+#align category_theory.cover_dense.types.pushforward_family_apply CategoryTheory.Functor.IsCoverDense.Types.pushforwardFamily_apply
 
 @[simp]
 theorem appHom_restrict {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) (x) :
-    ℱ'.val.map f (appHom H α X x) = α.app (op Y) (ℱ.map f x) := by
-  refine'
-    ((ℱ'.cond _ (H.is_cover X)).valid_glue (pushforwardFamily_compatible H α x) f.unop
-          (Presieve.in_coverByImage G f.unop)).trans
-      _
-  apply pushforwardFamily_apply
-#align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.CoverDense.Types.appHom_restrict
+    ℱ'.val.map f (appHom α X x) = α.app (op Y) (ℱ.map f x) :=
+  ((ℱ'.cond _ (G.is_cover_of_isCoverDense _ X)).valid_glue
+      (pushforwardFamily_compatible α x) f.unop
+          (Presieve.in_coverByImage G f.unop)).trans (pushforwardFamily_apply _ _ _)
+#align category_theory.cover_dense.types.app_hom_restrict CategoryTheory.Functor.IsCoverDense.Types.appHom_restrict
 
 @[simp]
 theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
-    appHom H α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) := by
+    appHom α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app (op Y) := by
   ext
   apply appHom_restrict
-#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glue
+#align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.Functor.IsCoverDense.Types.appHom_valid_glue
 
 /--
 (Implementation). The maps given in `appIso` is inverse to each other and gives a `ℱ(X) ≅ ℱ'(X)`.
@@ -242,33 +248,33 @@ theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
 @[simps]
 noncomputable def appIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val)
     (X : D) : ℱ.val.obj (op X) ≅ ℱ'.val.obj (op X) where
-  hom := appHom H i.hom X
-  inv := appHom H i.inv X
+  hom := appHom i.hom X
+  inv := appHom i.inv X
   hom_inv_id := by
     ext x
-    apply H.ext
+    apply Functor.IsCoverDense.ext G
     intro Y f
     simp
   inv_hom_id := by
     ext x
-    apply H.ext
+    apply Functor.IsCoverDense.ext G
     intro Y f
     simp
-#align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIso
+#align category_theory.cover_dense.types.app_iso CategoryTheory.Functor.IsCoverDense.Types.appIso
 
 /-- Given a natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of types, where `G` is
 full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation between sheaves.
 -/
 @[simps]
 noncomputable def presheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ ℱ'.val where
-  app X := appHom H α (unop X)
+  app X := appHom α (unop X)
   naturality X Y f := by
     ext x
-    apply H.ext ℱ' (unop Y)
+    apply Functor.IsCoverDense.ext G
     intro Y' f'
     simp only [appHom_restrict, types_comp_apply, ← FunctorToTypes.map_comp_apply]
     -- porting note: Lean 3 proof continued with a rewrite but we're done here
-#align category_theory.cover_dense.types.presheaf_hom CategoryTheory.CoverDense.Types.presheafHom
+#align category_theory.cover_dense.types.presheaf_hom CategoryTheory.Functor.IsCoverDense.Types.presheafHom
 
 /-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full
 and cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between presheaves.
@@ -276,8 +282,8 @@ and cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphis
 @[simps!]
 noncomputable def presheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) :
     ℱ.val ≅ ℱ'.val :=
-  NatIso.ofComponents (fun X => appIso H i (unop X)) @(presheafHom H i.hom).naturality
-#align category_theory.cover_dense.types.presheaf_iso CategoryTheory.CoverDense.Types.presheafIso
+  NatIso.ofComponents (fun X => appIso i (unop X)) @(presheafHom i.hom).naturality
+#align category_theory.cover_dense.types.presheaf_iso CategoryTheory.Functor.IsCoverDense.Types.presheafIso
 
 /-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full
 and cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between sheaves.
@@ -285,15 +291,15 @@ and cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphis
 @[simps]
 noncomputable def sheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) :
     ℱ ≅ ℱ' where
-  hom := ⟨(presheafIso H i).hom⟩
-  inv := ⟨(presheafIso H i).inv⟩
+  hom := ⟨(presheafIso i).hom⟩
+  inv := ⟨(presheafIso i).inv⟩
   hom_inv_id := by
     ext1
-    apply (presheafIso H i).hom_inv_id
+    apply (presheafIso i).hom_inv_id
   inv_hom_id := by
     ext1
-    apply (presheafIso H i).inv_hom_id
-#align category_theory.cover_dense.types.sheaf_iso CategoryTheory.CoverDense.Types.sheafIso
+    apply (presheafIso i).inv_hom_id
+#align category_theory.cover_dense.types.sheaf_iso CategoryTheory.Functor.IsCoverDense.Types.sheafIso
 
 end Types
 
@@ -306,17 +312,17 @@ variable {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A}
 noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     coyoneda ⋙ (whiskeringLeft Dᵒᵖ A (Type _)).obj ℱ ⟶
       coyoneda ⋙ (whiskeringLeft Dᵒᵖ A (Type _)).obj ℱ'.val where
-  app X := presheafHom H (homOver α (unop X))
+  app X := presheafHom (homOver α (unop X))
   naturality X Y f := by
     ext U x
     change
-      appHom H (homOver α (unop Y)) (unop U) (f.unop ≫ x) =
-        f.unop ≫ appHom H (homOver α (unop X)) (unop U) x
+      appHom (homOver α (unop Y)) (unop U) (f.unop ≫ x) =
+        f.unop ≫ appHom (homOver α (unop X)) (unop U) x
     symm
     apply sheaf_eq_amalgamation
-    apply H.is_cover
+    apply G.is_cover_of_isCoverDense
     -- porting note: the following line closes a goal which didn't exist before reenableeta
-    · exact pushforwardFamily_compatible H (homOver α Y.unop) (f.unop ≫ x)
+    · exact pushforwardFamily_compatible (homOver α Y.unop) (f.unop ≫ x)
     intro Y' f' hf'
     change unop X ⟶ ℱ.obj (op (unop _)) at x
     dsimp
@@ -325,16 +331,16 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     conv_lhs => rw [← hf'.some.fac]
     simp only [← Category.assoc, op_comp, Functor.map_comp]
     congr 1
-    refine' (appHom_restrict H (homOver α (unop X)) hf'.some.map.op x).trans _
+    refine' (appHom_restrict (homOver α (unop X)) hf'.some.map.op x).trans _
     simp
-#align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHom
+#align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.Functor.IsCoverDense.sheafCoyonedaHom
 
 /--
 (Implementation). `sheafCoyonedaHom` but the order of the arguments of the functor are swapped.
 -/
 noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     ℱ ⋙ yoneda ⟶ ℱ'.val ⋙ yoneda := by
-  let α := sheafCoyonedaHom H α
+  let α := sheafCoyonedaHom α
   refine'
     { app := _
       naturality := _ }
@@ -345,17 +351,17 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
   · intro U V i
     ext X x
     exact congr_fun ((α.app X).naturality i) x
-#align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
+#align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.Functor.IsCoverDense.sheafYonedaHom
 
 /-- Given a natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation
 between presheaves.
 -/
 noncomputable def sheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ ℱ'.val :=
-  let α' := sheafYonedaHom H α
+  let α' := sheafYonedaHom α
   { app := fun X => yoneda.preimage (α'.app X)
     naturality := fun X Y f => yoneda.map_injective (by simpa using α'.naturality f) }
-#align category_theory.cover_dense.sheaf_hom CategoryTheory.CoverDense.sheafHom
+#align category_theory.cover_dense.sheaf_hom CategoryTheory.Functor.IsCoverDense.sheafHom
 
 /-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
@@ -364,22 +370,22 @@ we may obtain a natural isomorphism between presheaves.
 @[simps!]
 noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) :
     ℱ.val ≅ ℱ'.val := by
-  have : ∀ X : Dᵒᵖ, IsIso ((sheafHom H i.hom).app X) := by
+  have : ∀ X : Dᵒᵖ, IsIso ((sheafHom i.hom).app X) := by
     intro X
     -- porting note: somehow `apply` in Lean 3 is leaving a typeclass goal,
     -- perhaps due to elaboration order. The corresponding `apply` in Lean 4 fails
     -- because the instance can't yet be synthesized. I hence reorder the proof.
-    suffices IsIso (yoneda.map ((sheafHom H i.hom).app X)) by
+    suffices IsIso (yoneda.map ((sheafHom i.hom).app X)) by
       apply isIso_of_reflects_iso _ yoneda
-    use (sheafYonedaHom H i.inv).app X
+    use (sheafYonedaHom i.inv).app X
     constructor <;> ext x : 2 <;>
       simp only [sheafHom, NatTrans.comp_app, NatTrans.id_app, Functor.image_preimage]
-    · exact ((Types.presheafIso H (isoOver i (unop x))).app X).hom_inv_id
-    · exact ((Types.presheafIso H (isoOver i (unop x))).app X).inv_hom_id
+    · exact ((Types.presheafIso (isoOver i (unop x))).app X).hom_inv_id
+    · exact ((Types.presheafIso (isoOver i (unop x))).app X).inv_hom_id
     -- porting note: Lean 4 proof is finished, Lean 3 needed `inferInstance`
-  haveI : IsIso (sheafHom H i.hom) := by apply NatIso.isIso_of_isIso_app
-  apply asIso (sheafHom H i.hom)
-#align category_theory.cover_dense.presheaf_iso CategoryTheory.CoverDense.presheafIso
+  haveI : IsIso (sheafHom i.hom) := by apply NatIso.isIso_of_isIso_app
+  apply asIso (sheafHom i.hom)
+#align category_theory.cover_dense.presheaf_iso CategoryTheory.Functor.IsCoverDense.presheafIso
 
 /-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
@@ -387,30 +393,30 @@ we may obtain a natural isomorphism between presheaves.
 -/
 @[simps]
 noncomputable def sheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val) : ℱ ≅ ℱ' where
-  hom := ⟨(presheafIso H i).hom⟩
-  inv := ⟨(presheafIso H i).inv⟩
+  hom := ⟨(presheafIso i).hom⟩
+  inv := ⟨(presheafIso i).inv⟩
   hom_inv_id := by
     ext1
-    apply (presheafIso H i).hom_inv_id
+    apply (presheafIso i).hom_inv_id
   inv_hom_id := by
     ext1
-    apply (presheafIso H i).inv_hom_id
-#align category_theory.cover_dense.sheaf_iso CategoryTheory.CoverDense.sheafIso
+    apply (presheafIso i).inv_hom_id
+#align category_theory.cover_dense.sheaf_iso CategoryTheory.Functor.IsCoverDense.sheafIso
 
 /-- The constructed `sheafHom α` is equal to `α` when restricted onto `C`.
 -/
 theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
-    whiskerLeft G.op (sheafHom H α) = α := by
+    whiskerLeft G.op (sheafHom α) = α := by
   ext X
   apply yoneda.map_injective
   ext U
   -- porting note: didn't need to provide the input to `image_preimage` in Lean 3
-  erw [yoneda.image_preimage ((H.sheafYonedaHom α).app (G.op.obj X))]
+  erw [yoneda.image_preimage ((sheafYonedaHom α).app (G.op.obj X))]
   symm
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (G.obj (unop X))) from _) = _
-  apply sheaf_eq_amalgamation ℱ' (H.is_cover _)
+  apply sheaf_eq_amalgamation ℱ' (G.is_cover_of_isCoverDense _ _)
   -- porting note: next line was not needed in mathlib3
-  · exact (pushforwardFamily_compatible H _ _)
+  · exact (pushforwardFamily_compatible _ _)
   intro Y f hf
   conv_lhs => rw [← hf.some.fac]
   simp only [pushforwardFamily, Functor.comp_map, yoneda_map_app, coyoneda_obj_map, op_comp,
@@ -422,54 +428,60 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
   symm
   apply α.naturality (G.preimage hf.some.map).op
   -- porting note; Lean 3 needed a random `inferInstance` for cleanup here; not necessary in lean 4
-#align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eq
+#align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.Functor.IsCoverDense.sheafHom_restrict_eq
+
+variable (G)
 
 /-- If the pullback map is obtained via whiskering,
 then the result `sheaf_hom (whisker_left G.op α)` is equal to `α`.
 -/
-theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom H (whiskerLeft G.op α) = α := by
+theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom (whiskerLeft G.op α) = α := by
   ext X
   apply yoneda.map_injective
   -- porting note: deleted next line as it's not needed in Lean 4
   ext U
   -- porting note: Lean 3 didn't need to be told the explicit input to image_preimage
-  erw [yoneda.image_preimage ((H.sheafYonedaHom (whiskerLeft G.op α)).app X)]
+  erw [yoneda.image_preimage ((sheafYonedaHom (whiskerLeft G.op α)).app X)]
   symm
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (unop X)) from _) = _
-  apply sheaf_eq_amalgamation ℱ' (H.is_cover _)
+  apply sheaf_eq_amalgamation ℱ' (G.is_cover_of_isCoverDense _ _)
   -- porting note: next line was not needed in mathlib3
-  · exact (pushforwardFamily_compatible H _ _)
+  · exact (pushforwardFamily_compatible _ _)
   intro Y f hf
   conv_lhs => rw [← hf.some.fac]
   dsimp
   simp
-#align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.CoverDense.sheafHom_eq
+#align category_theory.cover_dense.sheaf_hom_eq CategoryTheory.Functor.IsCoverDense.sheafHom_eq
+
+variable {G}
 
 /-- A full and cover-dense functor `G` induces an equivalence between morphisms into a sheaf and
 morphisms over the restrictions via `G`.
 -/
 noncomputable def restrictHomEquivHom : (G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) ≃ (ℱ ⟶ ℱ'.val) where
-  toFun := sheafHom H
+  toFun := sheafHom
   invFun := whiskerLeft G.op
-  left_inv := sheafHom_restrict_eq H
-  right_inv := sheafHom_eq H
-#align category_theory.cover_dense.restrict_hom_equiv_hom CategoryTheory.CoverDense.restrictHomEquivHom
+  left_inv := sheafHom_restrict_eq
+  right_inv := sheafHom_eq _
+#align category_theory.cover_dense.restrict_hom_equiv_hom CategoryTheory.Functor.IsCoverDense.restrictHomEquivHom
 
 /-- Given a full and cover-dense functor `G` and a natural transformation of sheaves `α : ℱ ⟶ ℱ'`,
 if the pullback of `α` along `G` is iso, then `α` is also iso.
 -/
 theorem iso_of_restrict_iso {ℱ ℱ' : Sheaf K A} (α : ℱ ⟶ ℱ') (i : IsIso (whiskerLeft G.op α.val)) :
     IsIso α := by
-  convert IsIso.of_iso (sheafIso H (asIso (whiskerLeft G.op α.val))) using 1
+  convert IsIso.of_iso (sheafIso (asIso (whiskerLeft G.op α.val))) using 1
   ext1
-  apply (sheafHom_eq H _).symm
-#align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.CoverDense.iso_of_restrict_iso
+  apply (sheafHom_eq _ _).symm
+#align category_theory.cover_dense.iso_of_restrict_iso CategoryTheory.Functor.IsCoverDense.iso_of_restrict_iso
+
+variable (G K)
 
 /-- A fully faithful cover-dense functor preserves compatible families. -/
-theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G := by
+lemma compatiblePreserving [Faithful G] : CompatiblePreserving K G := by
   constructor
   intro ℱ Z T x hx Y₁ Y₂ X f₁ f₂ g₁ g₂ hg₁ hg₂ eq
-  apply H.ext
+  apply Functor.IsCoverDense.ext G
   intro W i
   simp only [← FunctorToTypes.map_comp_apply, ← op_comp]
   rw [← G.image_preimage (i ≫ f₁)]
@@ -477,71 +489,61 @@ theorem compatiblePreserving [Faithful G] : CompatiblePreserving K G := by
   apply hx
   apply G.map_injective
   simp [eq]
-#align category_theory.cover_dense.compatible_preserving CategoryTheory.CoverDense.compatiblePreserving
+#align category_theory.cover_dense.compatible_preserving CategoryTheory.Functor.IsCoverDense.compatiblePreserving
+
+lemma isContinuous [Faithful G] (Hp : CoverPreserving J K G) : G.IsContinuous J K :=
+  isContinuous_of_coverPreserving (compatiblePreserving K G) Hp
 
-noncomputable instance Sites.Pullback.full [Faithful G] (Hp : CoverPreserving J K G) :
-    Full (Sites.pullback A H.compatiblePreserving Hp) where
-  preimage α := ⟨H.sheafHom α.val⟩
-  witness α := Sheaf.Hom.ext _ _ <| H.sheafHom_restrict_eq α.val
-#align category_theory.cover_dense.sites.pullback.full CategoryTheory.CoverDense.Sites.Pullback.full
+noncomputable instance fullSheafPushforwardContinuous [G.IsContinuous J K] :
+    Full (G.sheafPushforwardContinuous A J K) where
+  preimage α := ⟨sheafHom α.val⟩
+  witness α := Sheaf.Hom.ext _ _ <| sheafHom_restrict_eq α.val
+#align category_theory.cover_dense.sites.pullback.full CategoryTheory.Functor.IsCoverDense.fullSheafPushforwardContinuous
 
-instance Sites.Pullback.faithful [Faithful G] (Hp : CoverPreserving J K G) :
-    Faithful (Sites.pullback A H.compatiblePreserving Hp) where
+instance faithful_sheafPushforwardContinuous [G.IsContinuous J K] :
+    Faithful (G.sheafPushforwardContinuous A J K) where
   map_injective := by
     intro ℱ ℱ' α β e
     ext1
     apply_fun fun e => e.val at e
-    dsimp at e
-    rw [← H.sheafHom_eq α.val, ← H.sheafHom_eq β.val, e]
-#align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.CoverDense.Sites.Pullback.faithful
+    dsimp [sheafPushforwardContinuous] at e
+    rw [← sheafHom_eq G α.val, ← sheafHom_eq G β.val, e]
+#align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.Functor.IsCoverDense.faithful_sheafPushforwardContinuous
 
-end CoverDense
+end Functor.IsCoverDense
 
 end CategoryTheory
 
-namespace CategoryTheory.CoverDense
+namespace CategoryTheory.Functor.IsCoverDense
 
 open CategoryTheory
 
 variable {C D : Type u} [Category.{v} C] [Category.{v} D]
 
-variable {G : C ⥤ D} [Full G] [Faithful G]
+variable (G : C ⥤ D) [Full G] [Faithful G]
 
-variable {J : GrothendieckTopology C} {K : GrothendieckTopology D}
+variable (J : GrothendieckTopology C) (K : GrothendieckTopology D)
 
 variable {A : Type w} [Category.{max u v} A] [Limits.HasLimits A]
 
-variable (Hd : CoverDense K G) (Hp : CoverPreserving J K G) (Hl : CoverLifting J K G)
+variable [G.IsCoverDense K] [G.IsContinuous J K] [G.IsCocontinuous J K]
+
+instance (Y : Sheaf J A) : IsIso ((G.sheafAdjunctionCocontinuous A J K).counit.app Y) := by
+    let α := G.sheafAdjunctionCocontinuous A J K
+    haveI : IsIso ((sheafToPresheaf J A).map (α.counit.app Y)) :=
+      IsIso.of_iso ((@asIso _ _ _ _ _ (Ran.reflective A G.op)).app Y.val)
+    apply ReflectsIsomorphisms.reflects (sheafToPresheaf J A)
+
+variable (A)
 
 /-- Given a functor between small sites that is cover-dense, cover-preserving, and cover-lifting,
 it induces an equivalence of category of sheaves valued in a complete category.
 -/
 @[simps! functor inverse]
-noncomputable def sheafEquivOfCoverPreservingCoverLifting : Sheaf J A ≌ Sheaf K A := by
-  symm
-  let α := Sites.pullbackCopullbackAdjunction.{w, v, u} A Hp Hl Hd.compatiblePreserving
-  have : ∀ X : Sheaf J A, IsIso (α.counit.app X) := by
-    intro ℱ
-    -- porting note: I don't know how to do `apply_with foo { instances := ff }`
-    -- so I just create the instance first
-    haveI : IsIso ((sheafToPresheaf J A).map (α.counit.app ℱ)) :=
-      IsIso.of_iso ((@asIso _ _ _ _ _ (Ran.reflective A G.op)).app ℱ.val)
-    apply ReflectsIsomorphisms.reflects (sheafToPresheaf J A)
-  -- porting note: a bunch of instances are not synthesized in lean 4 for some reason
-  haveI : IsIso α.counit := NatIso.isIso_of_isIso_app _
-  haveI : Full (Sites.pullback A Hd.compatiblePreserving Hp) :=
-    CoverDense.Sites.Pullback.full J Hd Hp
-  haveI : Faithful (Sites.pullback A Hd.compatiblePreserving Hp) :=
-    CoverDense.Sites.Pullback.faithful J Hd Hp
-  haveI : IsIso α.unit := CategoryTheory.unit_isIso_of_L_fully_faithful α
-  exact
-    { functor := Sites.pullback A Hd.compatiblePreserving Hp
-      inverse := Sites.copullback A Hl
-      unitIso := asIso α.unit
-      counitIso := asIso α.counit
-      functor_unitIso_comp := fun ℱ => by convert α.left_triangle_components }
+noncomputable def sheafEquivOfCoverPreservingCoverLifting : Sheaf J A ≌ Sheaf K A :=
+  (G.sheafAdjunctionCocontinuous A J K).toEquivalence.symm
 set_option linter.uppercaseLean3 false in
-#align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting
+#align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.Functor.IsCoverDense.sheafEquivOfCoverPreservingCoverLifting
 
 variable
   [ConcreteCategory.{max v u} A]
@@ -556,8 +558,8 @@ variable
 `sheafEquivOfCoverPreservingCoverLifting` with sheafification. -/
 noncomputable
 abbrev sheafEquivOfCoverPreservingCoverLiftingSheafificationCompatibility :
-  (whiskeringLeft _ _ A).obj G.op ⋙ presheafToSheaf _ _ ≅
-  presheafToSheaf _ _ ⋙ (sheafEquivOfCoverPreservingCoverLifting Hd Hp Hl).inverse :=
-Sites.pullbackSheafificationCompatibility _ _ Hl _
+    (whiskeringLeft _ _ A).obj G.op ⋙ presheafToSheaf _ _ ≅
+      presheafToSheaf _ _ ⋙ (sheafEquivOfCoverPreservingCoverLifting G J K A).inverse := by
+  apply Functor.pushforwardContinuousSheafificationCompatibility
 
-end CategoryTheory.CoverDense
+end CategoryTheory.Functor.IsCoverDense
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
@@ -46,7 +46,7 @@ universe w v u
 
 namespace CategoryTheory
 
-variable {C : Type _} [Category C] {D : Type _} [Category D] {E : Type _} [Category E]
+variable {C : Type*} [Category C] {D : Type*} [Category D] {E : Type*} [Category E]
 
 variable (J : GrothendieckTopology C) (K : GrothendieckTopology D)
 
@@ -103,7 +103,7 @@ namespace CoverDense
 
 variable {K}
 
-variable {A : Type _} [Category A] {G : C ⥤ D} (H : CoverDense K G)
+variable {A : Type*} [Category A] {G : C ⥤ D} (H : CoverDense K G)
 
 -- this is not marked with `@[ext]` because `H` can not be inferred from the type
 theorem ext (H : CoverDense K G) (ℱ : SheafOfTypes K) (X : D) {s t : ℱ.val.obj (op X)}
feat: CategoryTheory/Sites/CoverLifting -- compatibility between sheafification and pullback (#6009)

I'll close https://github.com/leanprover-community/mathlib/pull/14512 once this is merged.

Diff
@@ -543,4 +543,21 @@ noncomputable def sheafEquivOfCoverPreservingCoverLifting : Sheaf J A ≌ Sheaf
 set_option linter.uppercaseLean3 false in
 #align category_theory.cover_dense.Sheaf_equiv_of_cover_preserving_cover_lifting CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLifting
 
+variable
+  [ConcreteCategory.{max v u} A]
+  [Limits.PreservesLimits (forget A)]
+  [ReflectsIsomorphisms (forget A)]
+  [∀ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)ᵒᵖ (forget A)]
+  [∀ (X : C), Limits.HasColimitsOfShape (J.Cover X)ᵒᵖ A]
+  [∀ (X : D), Limits.PreservesColimitsOfShape (K.Cover X)ᵒᵖ (forget A)]
+  [∀ (X : D), Limits.HasColimitsOfShape (K.Cover X)ᵒᵖ A]
+
+/-- The natural isomorphism exhibiting the compatibility of
+`sheafEquivOfCoverPreservingCoverLifting` with sheafification. -/
+noncomputable
+abbrev sheafEquivOfCoverPreservingCoverLiftingSheafificationCompatibility :
+  (whiskeringLeft _ _ A).obj G.op ⋙ presheafToSheaf _ _ ≅
+  presheafToSheaf _ _ ⋙ (sheafEquivOfCoverPreservingCoverLifting Hd Hp Hl).inverse :=
+Sites.pullbackSheafificationCompatibility _ _ Hl _
+
 end CategoryTheory.CoverDense
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,15 +2,12 @@
 Copyright (c) 2021 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
-
-! This file was ported from Lean 3 source module category_theory.sites.dense_subsite
-! leanprover-community/mathlib commit 1d650c2e131f500f3c17f33b4d19d2ea15987f2c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Sites.Sheaf
 import Mathlib.CategoryTheory.Sites.CoverLifting
 import Mathlib.CategoryTheory.Adjunction.FullyFaithful
+
+#align_import category_theory.sites.dense_subsite from "leanprover-community/mathlib"@"1d650c2e131f500f3c17f33b4d19d2ea15987f2c"
 /-!
 # Dense subsites
 
chore: remove superfluous parentheses in calls to ext (#5258)

Co-authored-by: Xavier Roblot <46200072+xroblot@users.noreply.github.com> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr> Co-authored-by: Riccardo Brasca <riccardo.brasca@gmail.com> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Pol'tta / Miyahara Kō <pol_tta@outlook.jp> Co-authored-by: Jason Yuen <jason_yuen2007@hotmail.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: Jireh Loreaux <loreaujy@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> Co-authored-by: Jujian Zhang <jujian.zhang1998@outlook.com> Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -311,7 +311,7 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
       coyoneda ⋙ (whiskeringLeft Dᵒᵖ A (Type _)).obj ℱ'.val where
   app X := presheafHom H (homOver α (unop X))
   naturality X Y f := by
-    ext (U x)
+    ext U x
     change
       appHom H (homOver α (unop Y)) (unop U) (f.unop ≫ x) =
         f.unop ≫ appHom H (homOver α (unop X)) (unop U) x
@@ -346,7 +346,7 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
       { app := fun X => (α.app X).app U
         naturality := fun X Y f => by simpa using congr_app (α.naturality f) U }
   · intro U V i
-    ext (X x)
+    ext X x
     exact congr_fun ((α.app X).naturality i) x
 #align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
 
chore: fix grammar 2/3 (#5002)

Part 2 of #5001

Diff
@@ -126,8 +126,8 @@ theorem functorPullback_pushforward_covering [Full G] (H : CoverDense K G) {X :
   · simp
 #align category_theory.cover_dense.functor_pullback_pushforward_covering CategoryTheory.CoverDense.functorPullback_pushforward_covering
 
-/-- (Implementation). Given an hom between the pullbacks of two sheaves, we can whisker it with
-`coyoneda` to obtain an hom between the pullbacks of the sheaves of maps from `X`.
+/-- (Implementation). Given a hom between the pullbacks of two sheaves, we can whisker it with
+`coyoneda` to obtain a hom between the pullbacks of the sheaves of maps from `X`.
 -/
 @[simps!]
 def homOver {ℱ : Dᵒᵖ ⥤ A} {ℱ' : Sheaf K A} (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) (X : A) :
@@ -259,7 +259,7 @@ noncomputable def appIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val 
     simp
 #align category_theory.cover_dense.types.app_iso CategoryTheory.CoverDense.Types.appIso
 
-/-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of types, where `G` is
+/-- Given a natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of types, where `G` is
 full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation between sheaves.
 -/
 @[simps]
@@ -273,7 +273,7 @@ noncomputable def presheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ 
     -- porting note: Lean 3 proof continued with a rewrite but we're done here
 #align category_theory.cover_dense.types.presheaf_hom CategoryTheory.CoverDense.Types.presheafHom
 
-/-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full
+/-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full
 and cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between presheaves.
 -/
 @[simps!]
@@ -282,7 +282,7 @@ noncomputable def presheafIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.
   NatIso.ofComponents (fun X => appIso H i (unop X)) @(presheafHom H i.hom).naturality
 #align category_theory.cover_dense.types.presheaf_iso CategoryTheory.CoverDense.Types.presheafIso
 
-/-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full
+/-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of types, where `G` is full
 and cover-dense, and `ℱ, ℱ'` are sheaves, we may obtain a natural isomorphism between sheaves.
 -/
 @[simps]
@@ -350,7 +350,7 @@ noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     exact congr_fun ((α.app X).naturality i) x
 #align category_theory.cover_dense.sheaf_yoneda_hom CategoryTheory.CoverDense.sheafYonedaHom
 
-/-- Given an natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of arbitrary category,
+/-- Given a natural transformation `G ⋙ ℱ ⟶ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ'` is a sheaf, we may obtain a natural transformation
 between presheaves.
 -/
@@ -360,7 +360,7 @@ noncomputable def sheafHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) : ℱ ⟶ 
     naturality := fun X Y f => yoneda.map_injective (by simpa using α'.naturality f) }
 #align category_theory.cover_dense.sheaf_hom CategoryTheory.CoverDense.sheafHom
 
-/-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
+/-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
 -/
@@ -384,7 +384,7 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
   apply asIso (sheafHom H i.hom)
 #align category_theory.cover_dense.presheaf_iso CategoryTheory.CoverDense.presheafIso
 
-/-- Given an natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
+/-- Given a natural isomorphism `G ⋙ ℱ ≅ G ⋙ ℱ'` between presheaves of arbitrary category,
 where `G` is full and cover-dense, and `ℱ', ℱ` are sheaves,
 we may obtain a natural isomorphism between presheaves.
 -/
chore: fix many typos (#4967)

These are all doc fixes

Diff
@@ -371,7 +371,7 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
     intro X
     -- porting note: somehow `apply` in Lean 3 is leaving a typeclass goal,
     -- perhaps due to elaboration order. The corresponding `apply` in Lean 4 fails
-    -- because the instance can't yet be synthezised. I hence reorder the proof.
+    -- because the instance can't yet be synthesized. I hence reorder the proof.
     suffices IsIso (yoneda.map ((sheafHom H i.hom).app X)) by
       apply isIso_of_reflects_iso _ yoneda
     use (sheafYonedaHom H i.inv).app X
chore: tidy various files (#4003)
Diff
@@ -14,7 +14,7 @@ import Mathlib.CategoryTheory.Adjunction.FullyFaithful
 /-!
 # Dense subsites
 
-We define `cover_dense` functors into sites as functors such that there exists a covering sieve
+We define `CoverDense` functors into sites as functors such that there exists a covering sieve
 that factors through images of the functor for each object in `D`.
 
 We will primarily consider cover-dense functors that are also full, since this notion is in general
@@ -69,14 +69,14 @@ attribute [nolint docBlame] Presieve.CoverByImageStructure.obj Presieve.CoverByI
 
 attribute [reassoc (attr := simp)] Presieve.CoverByImageStructure.fac
 
-/-- For a functor `G : C ⥤ D`, and an object `U : D`, `presieve.cover_by_image G U` is the presieve
+/-- For a functor `G : C ⥤ D`, and an object `U : D`, `Presieve.coverByImage G U` is the presieve
 of `U` consisting of those arrows that factor through images of `G`.
 -/
 def Presieve.coverByImage (G : C ⥤ D) (U : D) : Presieve U := fun _ f =>
   Nonempty (Presieve.CoverByImageStructure G f)
 #align category_theory.presieve.cover_by_image CategoryTheory.Presieve.coverByImage
 
-/-- For a functor `G : C ⥤ D`, and an object `U : D`, `sieve.cover_by_image G U` is the sieve of `U`
+/-- For a functor `G : C ⥤ D`, and an object `U : D`, `Sieve.coverByImage G U` is the sieve of `U`
 consisting of those arrows that factor through images of `G`.
 -/
 def Sieve.coverByImage (G : C ⥤ D) (U : D) : Sieve U :=
@@ -89,7 +89,7 @@ theorem Presieve.in_coverByImage (G : C ⥤ D) {X : D} {Y : C} (f : G.obj Y ⟶
   ⟨⟨Y, 𝟙 _, f, by simp⟩⟩
 #align category_theory.presieve.in_cover_by_image CategoryTheory.Presieve.in_coverByImage
 
-/-- A functor `G : (C, J) ⥤ (D, K)` is called `cover_dense` if for each object in `D`,
+/-- A functor `G : (C, J) ⥤ (D, K)` is called `CoverDense` if for each object in `D`,
   there exists a covering sieve in `D` that factors through images of `G`.
 
 This definition can be found in https://ncatlab.org/nlab/show/dense+sub-site Definition 2.2.
@@ -174,7 +174,7 @@ noncomputable def pushforwardFamily {X} (x : ℱ.obj (op X)) :
     pushforwardFamily α x = fun _ _ hf =>
   ℱ'.val.map hf.some.lift.op <| α.app (op _) (ℱ.map hf.some.map.op x : _) := rfl
 
-/-- (Implementation). The `pushforward_family` defined is compatible. -/
+/-- (Implementation). The `pushforwardFamily` defined is compatible. -/
 theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
     (pushforwardFamily α x).Compatible := by
   intro Y₁ Y₂ Z g₁ g₂ f₁ f₂ h₁ h₂ e
@@ -197,7 +197,7 @@ theorem pushforwardFamily_compatible {X} (x : ℱ.obj (op X)) :
   simp [e]
 #align category_theory.cover_dense.types.pushforward_family_compatible CategoryTheory.CoverDense.Types.pushforwardFamily_compatible
 
-/-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforward_family`. -/
+/-- (Implementation). The morphism `ℱ(X) ⟶ ℱ'(X)` given by gluing the `pushforwardFamily`. -/
 noncomputable def appHom (X : D) : ℱ.obj (op X) ⟶ ℱ'.val.obj (op X) := fun x =>
   (ℱ'.cond _ (H.is_cover X)).amalgamate (pushforwardFamily α x)
     (pushforwardFamily_compatible H α x)
@@ -210,10 +210,11 @@ theorem pushforwardFamily_apply {X} (x : ℱ.obj (op X)) {Y : C} (f : G.obj Y 
   -- porting note: congr_fun was more powerful in Lean 3; I had to explicitly supply
   -- the type of the first input here even though it's obvious (there is a unique occurrence
   -- of x on each side of the equality)
-  refine' congr_fun (_ : (λ t => ℱ'.val.map ((Nonempty.some (_ : coverByImage G X f)).lift.op)
-    (α.app (op (Nonempty.some (_ : coverByImage G X f)).1)
-      (ℱ.map ((Nonempty.some (_ : coverByImage G X f)).map.op) t))) =
-  (λ t => α.app (op Y) (ℱ.map (f.op) t))) x
+  refine' congr_fun (_ :
+    (fun t => ℱ'.val.map ((Nonempty.some (_ : coverByImage G X f)).lift.op)
+      (α.app (op (Nonempty.some (_ : coverByImage G X f)).1)
+        (ℱ.map ((Nonempty.some (_ : coverByImage G X f)).map.op) t))) =
+    (fun t => α.app (op Y) (ℱ.map (f.op) t))) x
   rw [← G.image_preimage (Nonempty.some _ : Presieve.CoverByImageStructure _ _).lift]
   change ℱ.map _ ≫ α.app (op _) ≫ ℱ'.val.map _ = ℱ.map f.op ≫ α.app (op Y)
   erw [← α.naturality (G.preimage _).op]
@@ -239,7 +240,7 @@ theorem appHom_valid_glue {X : D} {Y : C} (f : op X ⟶ op (G.obj Y)) :
 #align category_theory.cover_dense.types.app_hom_valid_glue CategoryTheory.CoverDense.Types.appHom_valid_glue
 
 /--
-(Implementation). The maps given in `app_iso` is inverse to each other and gives a `ℱ(X) ≅ ℱ'(X)`.
+(Implementation). The maps given in `appIso` is inverse to each other and gives a `ℱ(X) ≅ ℱ'(X)`.
 -/
 @[simps]
 noncomputable def appIso {ℱ ℱ' : SheafOfTypes.{v} K} (i : G.op ⋙ ℱ.val ≅ G.op ⋙ ℱ'.val)
@@ -332,7 +333,7 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
 #align category_theory.cover_dense.sheaf_coyoneda_hom CategoryTheory.CoverDense.sheafCoyonedaHom
 
 /--
-(Implementation). `sheaf_coyoneda_hom` but the order of the arguments of the functor are swapped.
+(Implementation). `sheafCoyonedaHom` but the order of the arguments of the functor are swapped.
 -/
 noncomputable def sheafYonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     ℱ ⋙ yoneda ⟶ ℱ'.val ⋙ yoneda := by
@@ -376,9 +377,9 @@ noncomputable def presheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G
     use (sheafYonedaHom H i.inv).app X
     constructor <;> ext x : 2 <;>
       simp only [sheafHom, NatTrans.comp_app, NatTrans.id_app, Functor.image_preimage]
-    exact ((Types.presheafIso H (isoOver i (unop x))).app X).hom_inv_id
-    exact ((Types.presheafIso H (isoOver i (unop x))).app X).inv_hom_id
-    -- porting note: Lean 4 proof is finished, Lean 3 needed `infer_instance`
+    · exact ((Types.presheafIso H (isoOver i (unop x))).app X).hom_inv_id
+    · exact ((Types.presheafIso H (isoOver i (unop x))).app X).inv_hom_id
+    -- porting note: Lean 4 proof is finished, Lean 3 needed `inferInstance`
   haveI : IsIso (sheafHom H i.hom) := by apply NatIso.isIso_of_isIso_app
   apply asIso (sheafHom H i.hom)
 #align category_theory.cover_dense.presheaf_iso CategoryTheory.CoverDense.presheafIso
@@ -399,7 +400,7 @@ noncomputable def sheafIso {ℱ ℱ' : Sheaf K A} (i : G.op ⋙ ℱ.val ≅ G.op
     apply (presheafIso H i).inv_hom_id
 #align category_theory.cover_dense.sheaf_iso CategoryTheory.CoverDense.sheafIso
 
-/-- The constructed `sheaf_hom α` is equal to `α` when restricted onto `C`.
+/-- The constructed `sheafHom α` is equal to `α` when restricted onto `C`.
 -/
 theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     whiskerLeft G.op (sheafHom H α) = α := by
@@ -412,7 +413,7 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (G.obj (unop X))) from _) = _
   apply sheaf_eq_amalgamation ℱ' (H.is_cover _)
   -- porting note: next line was not needed in mathlib3
-  { exact (pushforwardFamily_compatible H _ _) }
+  · exact (pushforwardFamily_compatible H _ _)
   intro Y f hf
   conv_lhs => rw [← hf.some.fac]
   simp only [pushforwardFamily, Functor.comp_map, yoneda_map_app, coyoneda_obj_map, op_comp,
@@ -423,7 +424,7 @@ theorem sheafHom_restrict_eq (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
   rw [← G.image_preimage hf.some.map]
   symm
   apply α.naturality (G.preimage hf.some.map).op
-  -- porting note; Lean 3 needed a random `infer_instance` for cleanup here; not necessary in lean 4
+  -- porting note; Lean 3 needed a random `inferInstance` for cleanup here; not necessary in lean 4
 #align category_theory.cover_dense.sheaf_hom_restrict_eq CategoryTheory.CoverDense.sheafHom_restrict_eq
 
 /-- If the pullback map is obtained via whiskering,
@@ -440,7 +441,7 @@ theorem sheafHom_eq (α : ℱ ⟶ ℱ'.val) : sheafHom H (whiskerLeft G.op α) =
   change (show (ℱ'.val ⋙ coyoneda.obj (op (unop U))).obj (op (unop X)) from _) = _
   apply sheaf_eq_amalgamation ℱ' (H.is_cover _)
   -- porting note: next line was not needed in mathlib3
-  { exact (pushforwardFamily_compatible H _ _) }
+  · exact (pushforwardFamily_compatible H _ _)
   intro Y f hf
   conv_lhs => rw [← hf.some.fac]
   dsimp
@@ -492,7 +493,7 @@ instance Sites.Pullback.faithful [Faithful G] (Hp : CoverPreserving J K G) :
   map_injective := by
     intro ℱ ℱ' α β e
     ext1
-    apply_fun fun e => e.val  at e
+    apply_fun fun e => e.val at e
     dsimp at e
     rw [← H.sheafHom_eq α.val, ← H.sheafHom_eq β.val, e]
 #align category_theory.cover_dense.sites.pullback.faithful CategoryTheory.CoverDense.Sites.Pullback.faithful
chore: reenable eta, bump to nightly 2023-05-16 (#3414)

Now that leanprover/lean4#2210 has been merged, this PR:

  • removes all the set_option synthInstance.etaExperiment true commands (and some etaExperiment% term elaborators)
  • removes many but not quite all set_option maxHeartbeats commands
  • makes various other changes required to cope with leanprover/lean4#2210.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Matthew Ballard <matt@mrb.email>

Diff
@@ -317,6 +317,8 @@ noncomputable def sheafCoyonedaHom (α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val) :
     symm
     apply sheaf_eq_amalgamation
     apply H.is_cover
+    -- porting note: the following line closes a goal which didn't exist before reenableeta
+    · exact pushforwardFamily_compatible H (homOver α Y.unop) (f.unop ≫ x)
     intro Y' f' hf'
     change unop X ⟶ ℱ.obj (op (unop _)) at x
     dsimp
feat: port CategoryTheory.Sites.DenseSubsite (#3985)

Mostly straightforward. Had to fight with simp once and the typeclass inference system a couple of times.

Dependencies 3 + 337

338 files ported (99.1%)
136609 lines ported (99.2%)
Show graph

The unported dependencies are