category_theory.sites.subsheafMathlib.CategoryTheory.Sites.Subsheaf

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -5,7 +5,7 @@ Authors: Andrew Yang
 -/
 import CategoryTheory.Elementwise
 import CategoryTheory.Adjunction.Evaluation
-import CategoryTheory.Sites.Sheafification
+import CategoryTheory.Sites.ConcreteSheafification
 
 #align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
 
Diff
@@ -250,7 +250,7 @@ theorem Subpresheaf.sheafify_isSheaf (hF : Presieve.IsSheaf J F) :
       intro V' i' hi'
       have hi'' : S' (i' ≫ i) := ⟨_, _, _, hi, hi', rfl⟩
       have := H _ hi''
-      rw [op_comp, F.map_comp] at this 
+      rw [op_comp, F.map_comp] at this
       refine' this.trans (congr_arg Subtype.val (hx _ _ (hi₂ hi'') hi (h₂ hi'')))
   have : x''.compatible := by
     intro V₁ V₂ V₃ g₁ g₂ g₃ g₄ S₁ S₂ e
@@ -338,7 +338,7 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
   ext U ⟨s, hs⟩
   apply (h _ hs).IsSeparatedFor.ext
   rintro V i hi
-  dsimp at hi 
+  dsimp at hi
   erw [← functor_to_types.naturality, ← functor_to_types.naturality]
   exact (congr_fun (congr_app e <| op V) ⟨_, hi⟩ : _)
 #align category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift_unique CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafify_lift_unique
@@ -427,7 +427,7 @@ instance {F F' : Cᵒᵖ ⥤ Type max v w} (f : F ⟶ F') [hf : Mono f] : IsIso
   constructor
   · intro x y e
     have := (nat_trans.mono_iff_mono_app _ _).mp hf X
-    rw [mono_iff_injective] at this 
+    rw [mono_iff_injective] at this
     exact this (congr_arg Subtype.val e : _)
   · rintro ⟨_, ⟨x, rfl⟩⟩; exact ⟨x, rfl⟩
 
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2022 Andrew Yang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Andrew Yang
 -/
-import Mathbin.CategoryTheory.Elementwise
-import Mathbin.CategoryTheory.Adjunction.Evaluation
-import Mathbin.CategoryTheory.Sites.Sheafification
+import CategoryTheory.Elementwise
+import CategoryTheory.Adjunction.Evaluation
+import CategoryTheory.Sites.Sheafification
 
 #align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 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.subsheaf
-! 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.Elementwise
 import Mathbin.CategoryTheory.Adjunction.Evaluation
 import Mathbin.CategoryTheory.Sites.Sheafification
 
+#align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe"
+
 /-!
 
 # Subsheaf of types
Diff
@@ -127,7 +127,7 @@ theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
   by
   constructor
   · rintro rfl; infer_instance
-  · intro H; ext (U x); apply (iff_true_iff _).mpr; rw [← is_iso.inv_hom_id_apply (G.ι.app U) x]
+  · intro H; ext U x; apply (iff_true_iff _).mpr; rw [← is_iso.inv_hom_id_apply (G.ι.app U) x]
     exact ((inv (G.ι.app U)) x).2
 #align category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso
 -/
@@ -325,7 +325,7 @@ noncomputable def Subpresheaf.sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presie
 theorem Subpresheaf.to_sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presieve.IsSheaf J F') :
     Subpresheaf.homOfLe (G.le_sheafify J) ≫ G.sheafifyLift f h = f :=
   by
-  ext (U s)
+  ext U s
   apply (h _ ((subpresheaf.hom_of_le (G.le_sheafify J)).app U s).Prop).IsSeparatedFor.ext
   intro V i hi
   have := elementwise_of f.naturality
@@ -338,7 +338,7 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
     (l₁ l₂ : (G.sheafify J).toPresheaf ⟶ F')
     (e : Subpresheaf.homOfLe (G.le_sheafify J) ≫ l₁ = Subpresheaf.homOfLe (G.le_sheafify J) ≫ l₂) :
     l₁ = l₂ := by
-  ext (U⟨s, hs⟩)
+  ext U ⟨s, hs⟩
   apply (h _ hs).IsSeparatedFor.ext
   rintro V i hi
   dsimp at hi 
@@ -475,7 +475,7 @@ instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Mono (imageSheafι f) :=
 instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Epi (toImageSheaf f) :=
   by
   refine' ⟨fun G' g₁ g₂ e => _⟩
-  ext (U⟨s, hx⟩)
+  ext U ⟨s, hx⟩
   apply ((is_sheaf_iff_is_sheaf_of_type J _).mp G'.2 _ hx).IsSeparatedFor.ext
   rintro V i ⟨y, e'⟩
   change (g₁.val.app _ ≫ G'.val.map _) _ = (g₂.val.app _ ≫ G'.val.map _) _
Diff
@@ -94,11 +94,13 @@ instance : Mono G.ι :=
     NatTrans.ext f₁ f₂ <|
       funext fun U => funext fun x => Subtype.ext <| congr_fun (congr_app e U) x⟩
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe /-
 /-- The inclusion of a subpresheaf to a larger subpresheaf -/
 @[simps]
 def Subpresheaf.homOfLe {G G' : Subpresheaf F} (h : G ≤ G') : G.toPresheaf ⟶ G'.toPresheaf
     where app U x := ⟨x, h U x.Prop⟩
 #align category_theory.grothendieck_topology.subpresheaf.hom_of_le CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe
+-/
 
 instance {G G' : Subpresheaf F} (h : G ≤ G') : Mono (Subpresheaf.homOfLe h) :=
   ⟨fun H f₁ f₂ e =>
@@ -107,10 +109,12 @@ instance {G G' : Subpresheaf F} (h : G ≤ G') : Mono (Subpresheaf.homOfLe h) :=
         funext fun x =>
           Subtype.ext <| (congr_arg Subtype.val <| (congr_fun (congr_app e U) x : _) : _)⟩
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ι /-
 @[simp, reassoc]
 theorem Subpresheaf.homOfLe_ι {G G' : Subpresheaf F} (h : G ≤ G') :
     Subpresheaf.homOfLe h ≫ G'.ι = G.ι := by ext; rfl
 #align category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ι
+-/
 
 instance : IsIso (Subpresheaf.ι (⊤ : Subpresheaf F)) :=
   by
@@ -118,6 +122,7 @@ instance : IsIso (Subpresheaf.ι (⊤ : Subpresheaf F)) :=
   · intro X; rw [is_iso_iff_bijective]
     exact ⟨Subtype.coe_injective, fun x => ⟨⟨x, _root_.trivial⟩, rfl⟩⟩
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso /-
 theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
   by
   constructor
@@ -125,7 +130,9 @@ theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
   · intro H; ext (U x); apply (iff_true_iff _).mpr; rw [← is_iso.inv_hom_id_apply (G.ι.app U) x]
     exact ((inv (G.ι.app U)) x).2
 #align category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.lift /-
 /-- If the image of a morphism falls in a subpresheaf, then the morphism factors through it. -/
 @[simps]
 def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' ⟶ G.toPresheaf
@@ -133,12 +140,16 @@ def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' 
   app U x := ⟨f.app U x, hf U x⟩
   naturality' := by have := elementwise_of f.naturality; intros; ext; simp [this]
 #align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.lift
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι /-
 @[simp, reassoc]
 theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : G.lift f hf ≫ G.ι = f :=
   by ext; rfl
 #align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection /-
 /-- Given a subpresheaf `G` of `F`, an `F`-section `s` on `U`, we may define a sieve of `U`
 consisting of all `f : V ⟶ U` such that the restriction of `s` along `f` is in `G`. -/
 @[simps]
@@ -147,13 +158,17 @@ def Subpresheaf.sieveOfSection {U : Cᵒᵖ} (s : F.obj U) : Sieve (unop U)
   arrows V f := F.map f.op s ∈ G.obj (op V)
   downward_closed' V W i hi j := by rw [op_comp, functor_to_types.map_comp_apply]; exact G.map _ hi
 #align category_theory.grothendieck_topology.subpresheaf.sieve_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection /-
 /-- Given a `F`-section `s` on `U` and a subpresheaf `G`, we may define a family of elements in
 `G` consisting of the restrictions of `s` -/
 def Subpresheaf.familyOfElementsOfSection {U : Cᵒᵖ} (s : F.obj U) :
     (G.sieveOfSection s).1.FamilyOfElements G.toPresheaf := fun V i hi => ⟨F.map i.op s, hi⟩
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible /-
 theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
     (G.familyOfElementsOfSection s).Compatible :=
   by
@@ -162,13 +177,14 @@ theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
   change F.map g₁.op (F.map f₁.op s) = F.map g₂.op (F.map f₂.op s)
   rw [← functor_to_types.map_comp_apply, ← functor_to_types.map_comp_apply, ← op_comp, ← op_comp, e]
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturality /-
 theorem Subpresheaf.nat_trans_naturality (f : F' ⟶ G.toPresheaf) {U V : Cᵒᵖ} (i : U ⟶ V)
     (x : F'.obj U) : (f.app V (F'.map i x)).1 = F.map i (f.app U x).1 :=
   congr_arg Subtype.val (FunctorToTypes.naturality _ _ f i x)
 #align category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturality
-
-include J
+-/
 
 #print CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify /-
 /-- The sheafification of a subpresheaf as a subpresheaf.
@@ -185,6 +201,7 @@ def Subpresheaf.sheafify : Subpresheaf F
 #align category_theory.grothendieck_topology.subpresheaf.sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify
 -/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.le_sheafify /-
 theorem Subpresheaf.le_sheafify : G ≤ G.sheafify J :=
   by
   intro U s hs
@@ -194,6 +211,7 @@ theorem Subpresheaf.le_sheafify : G ≤ G.sheafify J :=
   rintro V i -
   exact G.map i.op hs
 #align category_theory.grothendieck_topology.subpresheaf.le_sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.le_sheafify
+-/
 
 variable {J}
 
@@ -261,6 +279,7 @@ theorem Subpresheaf.eq_sheafify_iff (h : Presieve.IsSheaf J F) :
 #align category_theory.grothendieck_topology.subpresheaf.eq_sheafify_iff CategoryTheory.GrothendieckTopology.Subpresheaf.eq_sheafify_iff
 -/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.isSheaf_iff /-
 theorem Subpresheaf.isSheaf_iff (h : Presieve.IsSheaf J F) :
     Presieve.IsSheaf J G.toPresheaf ↔
       ∀ (U) (s : F.obj U), G.sieveOfSection s ∈ J (unop U) → s ∈ G.obj U :=
@@ -269,6 +288,7 @@ theorem Subpresheaf.isSheaf_iff (h : Presieve.IsSheaf J F) :
   change _ ↔ G.sheafify J ≤ G
   exact ⟨Eq.ge, (G.le_sheafify J).antisymm⟩
 #align category_theory.grothendieck_topology.subpresheaf.is_sheaf_iff CategoryTheory.GrothendieckTopology.Subpresheaf.isSheaf_iff
+-/
 
 #print CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_sheafify /-
 theorem Subpresheaf.sheafify_sheafify (h : Presieve.IsSheaf J F) :
@@ -327,6 +347,7 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
 #align category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift_unique CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafify_lift_unique
 -/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_le /-
 theorem Subpresheaf.sheafify_le (h : G ≤ G') (hF : Presieve.IsSheaf J F)
     (hG' : Presieve.IsSheaf J G'.toPresheaf) : G.sheafify J ≤ G' :=
   by
@@ -341,8 +362,7 @@ theorem Subpresheaf.sheafify_le (h : G ≤ G') (hF : Presieve.IsSheaf J F)
   erw [← subpresheaf.nat_trans_naturality]
   rfl
 #align category_theory.grothendieck_topology.subpresheaf.sheafify_le CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_le
-
-omit J
+-/
 
 section Image
 
@@ -356,14 +376,18 @@ def imagePresheaf (f : F' ⟶ F) : Subpresheaf F
 #align category_theory.grothendieck_topology.image_presheaf CategoryTheory.GrothendieckTopology.imagePresheaf
 -/
 
+#print CategoryTheory.GrothendieckTopology.top_subpresheaf_obj /-
 @[simp]
 theorem top_subpresheaf_obj (U) : (⊤ : Subpresheaf F).obj U = ⊤ :=
   rfl
 #align category_theory.grothendieck_topology.top_subpresheaf_obj CategoryTheory.GrothendieckTopology.top_subpresheaf_obj
+-/
 
+#print CategoryTheory.GrothendieckTopology.imagePresheaf_id /-
 @[simp]
 theorem imagePresheaf_id : imagePresheaf (𝟙 F) = ⊤ := by ext; simp
 #align category_theory.grothendieck_topology.image_presheaf_id CategoryTheory.GrothendieckTopology.imagePresheaf_id
+-/
 
 #print CategoryTheory.GrothendieckTopology.toImagePresheaf /-
 /-- A morphism factors through the image presheaf. -/
@@ -392,9 +416,11 @@ theorem toImagePresheaf_ι (f : F' ⟶ F) : toImagePresheaf f ≫ (imagePresheaf
 #align category_theory.grothendieck_topology.to_image_presheaf_ι CategoryTheory.GrothendieckTopology.toImagePresheaf_ι
 -/
 
+#print CategoryTheory.GrothendieckTopology.imagePresheaf_comp_le /-
 theorem imagePresheaf_comp_le (f₁ : F ⟶ F') (f₂ : F' ⟶ F'') :
     imagePresheaf (f₁ ≫ f₂) ≤ imagePresheaf f₂ := fun U x hx => ⟨f₁.app U hx.some, hx.choose_spec⟩
 #align category_theory.grothendieck_topology.image_presheaf_comp_le CategoryTheory.GrothendieckTopology.imagePresheaf_comp_le
+-/
 
 instance {F F' : Cᵒᵖ ⥤ Type max v w} (f : F ⟶ F') [hf : Mono f] : IsIso (toImagePresheaf f) :=
   by
Diff
@@ -175,7 +175,7 @@ include J
 Note that this is a sheaf only when the whole presheaf is a sheaf. -/
 def Subpresheaf.sheafify : Subpresheaf F
     where
-  obj U := { s | G.sieveOfSection s ∈ J (unop U) }
+  obj U := {s | G.sieveOfSection s ∈ J (unop U)}
   map := by
     rintro U V i s hs
     refine' J.superset_covering _ (J.pullback_stable i.unop hs)
@@ -331,7 +331,7 @@ theorem Subpresheaf.sheafify_le (h : G ≤ G') (hF : Presieve.IsSheaf J F)
     (hG' : Presieve.IsSheaf J G'.toPresheaf) : G.sheafify J ≤ G' :=
   by
   intro U x hx
-  convert((G.sheafify_lift (subpresheaf.hom_of_le h) hG').app U ⟨x, hx⟩).2
+  convert ((G.sheafify_lift (subpresheaf.hom_of_le h) hG').app U ⟨x, hx⟩).2
   apply (hF _ hx).IsSeparatedFor.ext
   intro V i hi
   have :=
Diff
@@ -131,7 +131,7 @@ theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
 def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' ⟶ G.toPresheaf
     where
   app U x := ⟨f.app U x, hf U x⟩
-  naturality' := by have := elementwise_of f.naturality; intros ; ext; simp [this]
+  naturality' := by have := elementwise_of f.naturality; intros; ext; simp [this]
 #align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.lift
 
 @[simp, reassoc]
@@ -180,7 +180,7 @@ def Subpresheaf.sheafify : Subpresheaf F
     rintro U V i s hs
     refine' J.superset_covering _ (J.pullback_stable i.unop hs)
     intro _ _ h
-    dsimp at h⊢
+    dsimp at h ⊢
     rwa [← functor_to_types.map_comp_apply]
 #align category_theory.grothendieck_topology.subpresheaf.sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify
 -/
@@ -235,7 +235,7 @@ theorem Subpresheaf.sheafify_isSheaf (hF : Presieve.IsSheaf J F) :
       intro V' i' hi'
       have hi'' : S' (i' ≫ i) := ⟨_, _, _, hi, hi', rfl⟩
       have := H _ hi''
-      rw [op_comp, F.map_comp] at this
+      rw [op_comp, F.map_comp] at this 
       refine' this.trans (congr_arg Subtype.val (hx _ _ (hi₂ hi'') hi (h₂ hi'')))
   have : x''.compatible := by
     intro V₁ V₂ V₃ g₁ g₂ g₃ g₄ S₁ S₂ e
@@ -293,7 +293,7 @@ noncomputable def Subpresheaf.sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presie
     conv_rhs => rw [← functor_to_types.map_comp_apply]
     change _ = F'.map (j ≫ i.unop).op _
     refine' Eq.trans _ (presieve.is_sheaf_for.valid_glue _ _ _ _).symm
-    · dsimp at hj⊢; rwa [functor_to_types.map_comp_apply]
+    · dsimp at hj ⊢; rwa [functor_to_types.map_comp_apply]
     · dsimp [presieve.family_of_elements.comp_presheaf_map]
       congr 1
       ext1
@@ -321,7 +321,7 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
   ext (U⟨s, hs⟩)
   apply (h _ hs).IsSeparatedFor.ext
   rintro V i hi
-  dsimp at hi
+  dsimp at hi 
   erw [← functor_to_types.naturality, ← functor_to_types.naturality]
   exact (congr_fun (congr_app e <| op V) ⟨_, hi⟩ : _)
 #align category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift_unique CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafify_lift_unique
@@ -404,7 +404,7 @@ instance {F F' : Cᵒᵖ ⥤ Type max v w} (f : F ⟶ F') [hf : Mono f] : IsIso
   constructor
   · intro x y e
     have := (nat_trans.mono_iff_mono_app _ _).mp hf X
-    rw [mono_iff_injective] at this
+    rw [mono_iff_injective] at this 
     exact this (congr_arg Subtype.val e : _)
   · rintro ⟨_, ⟨x, rfl⟩⟩; exact ⟨x, rfl⟩
 
@@ -457,7 +457,7 @@ instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Epi (toImageSheaf f) :=
   have E : (to_image_sheaf f).val.app (op V) y = (image_sheaf f).val.map i.op ⟨s, hx⟩ :=
     Subtype.ext e'
   have := congr_arg (fun f : F ⟶ G' => (Sheaf.hom.val f).app _ y) e
-  dsimp at this⊢
+  dsimp at this ⊢
   convert this <;> exact E.symm
 
 #print CategoryTheory.GrothendieckTopology.imageMonoFactorization /-
Diff
@@ -94,12 +94,6 @@ instance : Mono G.ι :=
     NatTrans.ext f₁ f₂ <|
       funext fun U => funext fun x => Subtype.ext <| congr_fun (congr_app e U) x⟩
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.hom_of_le -> CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F}, (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G G') -> (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G'))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F}, (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G G') -> (Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G'))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.hom_of_le CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLeₓ'. -/
 /-- The inclusion of a subpresheaf to a larger subpresheaf -/
 @[simps]
 def Subpresheaf.homOfLe {G G' : Subpresheaf F} (h : G ≤ G') : G.toPresheaf ⟶ G'.toPresheaf
@@ -113,12 +107,6 @@ instance {G G' : Subpresheaf F} (h : G ≤ G') : Mono (Subpresheaf.homOfLe h) :=
         funext fun x =>
           Subtype.ext <| (congr_arg Subtype.val <| (congr_fun (congr_app e U) x : _) : _)⟩
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι -> CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ι is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} (h : LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G G'), Eq.{succ (max u3 u1)} (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G') F (CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe.{u1, u2, u3} C _inst_1 F G G' h) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G')) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} (h : LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G G'), Eq.{max (succ u3) (succ u1)} (Quiver.Hom.{succ (max u3 u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G') F (CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe.{u1, u2, u3} C _inst_1 F G G' h) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G')) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ιₓ'. -/
 @[simp, reassoc]
 theorem Subpresheaf.homOfLe_ι {G G' : Subpresheaf F} (h : G ≤ G') :
     Subpresheaf.homOfLe h ≫ G'.ι = G.ι := by ext; rfl
@@ -130,12 +118,6 @@ instance : IsIso (Subpresheaf.ι (⊤ : Subpresheaf F)) :=
   · intro X; rw [is_iso_iff_bijective]
     exact ⟨Subtype.coe_injective, fun x => ⟨⟨x, _root_.trivial⟩, rfl⟩⟩
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso -> CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), Iff (Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) G (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.hasTop.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.IsIso.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), Iff (Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) G (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instTopSubpresheaf.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.IsIso.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIsoₓ'. -/
 theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
   by
   constructor
@@ -144,12 +126,6 @@ theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
     exact ((inv (G.ι.app U)) x).2
 #align category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.lift -> CategoryTheory.GrothendieckTopology.Subpresheaf.lift is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F), (forall (U : Opposite.{succ u3} C) (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U), Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) -> (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F), (forall (U : Opposite.{succ u3} C) (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U), Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) -> (Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.liftₓ'. -/
 /-- If the image of a morphism falls in a subpresheaf, then the morphism factors through it. -/
 @[simps]
 def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' ⟶ G.toPresheaf
@@ -158,20 +134,11 @@ def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' 
   naturality' := by have := elementwise_of f.naturality; intros ; ext; simp [this]
 #align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.lift
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.lift_ι -> CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ιₓ'. -/
 @[simp, reassoc]
 theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : G.lift f hf ≫ G.ι = f :=
   by ext; rfl
 #align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.sieve_of_section -> CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) -> (forall {U : Opposite.{succ u3} C}, (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) -> (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) -> (forall {U : Opposite.{succ u3} C}, (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) -> (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.sieve_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSectionₓ'. -/
 /-- Given a subpresheaf `G` of `F`, an `F`-section `s` on `U`, we may define a sieve of `U`
 consisting of all `f : V ⟶ U` such that the restriction of `s` along `f` is in `G`. -/
 @[simps]
@@ -181,24 +148,12 @@ def Subpresheaf.sieveOfSection {U : Cᵒᵖ} (s : F.obj U) : Sieve (unop U)
   downward_closed' V W i hi j := by rw [op_comp, functor_to_types.map_comp_apply]; exact G.map _ hi
 #align category_theory.grothendieck_topology.subpresheaf.sieve_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section -> CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U), CategoryTheory.Presieve.FamilyOfElements.{u1, u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U), CategoryTheory.Presieve.FamilyOfElements.{u1, u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSectionₓ'. -/
 /-- Given a `F`-section `s` on `U` and a subpresheaf `G`, we may define a family of elements in
 `G` consisting of the restrictions of `s` -/
 def Subpresheaf.familyOfElementsOfSection {U : Cᵒᵖ} (s : F.obj U) :
     (G.sieveOfSection s).1.FamilyOfElements G.toPresheaf := fun V i hi => ⟨F.map i.op s, hi⟩
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible -> CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u1, u2, u3} C _inst_1 (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (Opposite.unop.{succ u3} C U) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s)) (CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection.{u1, u2, u3} C _inst_1 F G U s)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u1, u2, u3} C _inst_1 (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (Opposite.unop.{succ u3} C U) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s)) (CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection.{u1, u2, u3} C _inst_1 F G U s)
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatibleₓ'. -/
 theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
     (G.familyOfElementsOfSection s).Compatible :=
   by
@@ -208,9 +163,6 @@ theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
   rw [← functor_to_types.map_comp_apply, ← functor_to_types.map_comp_apply, ← op_comp, ← op_comp, e]
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality -> CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturality is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturalityₓ'. -/
 theorem Subpresheaf.nat_trans_naturality (f : F' ⟶ G.toPresheaf) {U V : Cᵒᵖ} (i : U ⟶ V)
     (x : F'.obj U) : (f.app V (F'.map i x)).1 = F.map i (f.app U x).1 :=
   congr_arg Subtype.val (FunctorToTypes.naturality _ _ f i x)
@@ -233,12 +185,6 @@ def Subpresheaf.sheafify : Subpresheaf F
 #align category_theory.grothendieck_topology.subpresheaf.sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify
 -/
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.le_sheafify -> CategoryTheory.GrothendieckTopology.Subpresheaf.le_sheafify is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G)
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.le_sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.le_sheafifyₓ'. -/
 theorem Subpresheaf.le_sheafify : G ≤ G.sheafify J :=
   by
   intro U s hs
@@ -315,12 +261,6 @@ theorem Subpresheaf.eq_sheafify_iff (h : Presieve.IsSheaf J F) :
 #align category_theory.grothendieck_topology.subpresheaf.eq_sheafify_iff CategoryTheory.GrothendieckTopology.Subpresheaf.eq_sheafify_iff
 -/
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.is_sheaf_iff -> CategoryTheory.GrothendieckTopology.Subpresheaf.isSheaf_iff is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (Iff (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) (forall (U : Opposite.{succ u3} C) (s : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U), (Membership.Mem.{max u3 u2, max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)) (Set.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (Set.hasMem.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ (max u3 u2))} (CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (fun (_x : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) => forall (X : C), Set.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u2, u3} C _inst_1) J (Opposite.unop.{succ u3} C U))) -> (Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) s (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U))))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (Iff (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) (forall (U : Opposite.{succ u3} C) (s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U), (Membership.mem.{max u3 u2, max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)) (Set.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (Set.instMembershipSet.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s) (CategoryTheory.GrothendieckTopology.sieves.{u2, u3} C _inst_1 J (Opposite.unop.{succ u3} C U))) -> (Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) s (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U))))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.is_sheaf_iff CategoryTheory.GrothendieckTopology.Subpresheaf.isSheaf_iffₓ'. -/
 theorem Subpresheaf.isSheaf_iff (h : Presieve.IsSheaf J F) :
     Presieve.IsSheaf J G.toPresheaf ↔
       ∀ (U) (s : F.obj U), G.sieveOfSection s ∈ J (unop U) → s ∈ G.obj U :=
@@ -387,12 +327,6 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
 #align category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift_unique CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafify_lift_unique
 -/
 
-/- warning: category_theory.grothendieck_topology.subpresheaf.sheafify_le -> CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_le is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G G') -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G')) -> (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G) G')
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G G') -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G')) -> (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G) G')
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.sheafify_le CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_leₓ'. -/
 theorem Subpresheaf.sheafify_le (h : G ≤ G') (hF : Presieve.IsSheaf J F)
     (hG' : Presieve.IsSheaf J G'.toPresheaf) : G.sheafify J ≤ G' :=
   by
@@ -422,23 +356,11 @@ def imagePresheaf (f : F' ⟶ F) : Subpresheaf F
 #align category_theory.grothendieck_topology.image_presheaf CategoryTheory.GrothendieckTopology.imagePresheaf
 -/
 
-/- warning: category_theory.grothendieck_topology.top_subpresheaf_obj -> CategoryTheory.GrothendieckTopology.top_subpresheaf_obj is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (U : Opposite.{succ u3} C), Eq.{succ u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.hasTop.{u1, u2, u3} C _inst_1 F)) U) (Top.top.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CompleteLattice.toHasTop.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.completeBooleanAlgebra.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)))))))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (U : Opposite.{succ u3} C), Eq.{succ u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instTopSubpresheaf.{u1, u2, u3} C _inst_1 F)) U) (Top.top.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CompleteLattice.toTop.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instCompleteBooleanAlgebraSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)))))))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.top_subpresheaf_obj CategoryTheory.GrothendieckTopology.top_subpresheaf_objₓ'. -/
 @[simp]
 theorem top_subpresheaf_obj (U) : (⊤ : Subpresheaf F).obj U = ⊤ :=
   rfl
 #align category_theory.grothendieck_topology.top_subpresheaf_obj CategoryTheory.GrothendieckTopology.top_subpresheaf_obj
 
-/- warning: category_theory.grothendieck_topology.image_presheaf_id -> CategoryTheory.GrothendieckTopology.imagePresheaf_id is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F F (CategoryTheory.CategoryStruct.id.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F)) (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.hasTop.{u1, u2, u3} C _inst_1 F))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F F (CategoryTheory.CategoryStruct.id.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F)) (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instTopSubpresheaf.{u1, u2, u3} C _inst_1 F))
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.image_presheaf_id CategoryTheory.GrothendieckTopology.imagePresheaf_idₓ'. -/
 @[simp]
 theorem imagePresheaf_id : imagePresheaf (𝟙 F) = ⊤ := by ext; simp
 #align category_theory.grothendieck_topology.image_presheaf_id CategoryTheory.GrothendieckTopology.imagePresheaf_id
@@ -470,12 +392,6 @@ theorem toImagePresheaf_ι (f : F' ⟶ F) : toImagePresheaf f ≫ (imagePresheaf
 #align category_theory.grothendieck_topology.to_image_presheaf_ι CategoryTheory.GrothendieckTopology.toImagePresheaf_ι
 -/
 
-/- warning: category_theory.grothendieck_topology.image_presheaf_comp_le -> CategoryTheory.GrothendieckTopology.imagePresheaf_comp_le is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F'' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (f₁ : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F F') (f₂ : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F''), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F''))) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F F' F'' f₁ f₂)) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F' f₂)
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F'' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (f₁ : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F F') (f₂ : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F''), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F''))) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F F' F'' f₁ f₂)) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F' f₂)
-Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.image_presheaf_comp_le CategoryTheory.GrothendieckTopology.imagePresheaf_comp_leₓ'. -/
 theorem imagePresheaf_comp_le (f₁ : F ⟶ F') (f₂ : F' ⟶ F'') :
     imagePresheaf (f₁ ≫ f₂) ≤ imagePresheaf f₂ := fun U x hx => ⟨f₁.app U hx.some, hx.choose_spec⟩
 #align category_theory.grothendieck_topology.image_presheaf_comp_le CategoryTheory.GrothendieckTopology.imagePresheaf_comp_le
Diff
@@ -74,16 +74,8 @@ def Subpresheaf.toPresheaf : Cᵒᵖ ⥤ Type w
     where
   obj U := G.obj U
   map U V i x := ⟨F.map i x, G.map i x.Prop⟩
-  map_id' X := by
-    ext ⟨x, _⟩
-    dsimp
-    rw [F.map_id]
-    rfl
-  map_comp' X Y Z i j := by
-    ext ⟨x, _⟩
-    dsimp
-    rw [F.map_comp]
-    rfl
+  map_id' X := by ext ⟨x, _⟩; dsimp; rw [F.map_id]; rfl
+  map_comp' X Y Z i j := by ext ⟨x, _⟩; dsimp; rw [F.map_comp]; rfl
 #align category_theory.grothendieck_topology.subpresheaf.to_presheaf CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf
 -/
 
@@ -129,16 +121,13 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ιₓ'. -/
 @[simp, reassoc]
 theorem Subpresheaf.homOfLe_ι {G G' : Subpresheaf F} (h : G ≤ G') :
-    Subpresheaf.homOfLe h ≫ G'.ι = G.ι := by
-  ext
-  rfl
+    Subpresheaf.homOfLe h ≫ G'.ι = G.ι := by ext; rfl
 #align category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ι
 
 instance : IsIso (Subpresheaf.ι (⊤ : Subpresheaf F)) :=
   by
   apply (config := { instances := false }) nat_iso.is_iso_of_is_iso_app
-  · intro X
-    rw [is_iso_iff_bijective]
+  · intro X; rw [is_iso_iff_bijective]
     exact ⟨Subtype.coe_injective, fun x => ⟨⟨x, _root_.trivial⟩, rfl⟩⟩
 
 /- warning: category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso -> CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso is a dubious translation:
@@ -150,12 +139,8 @@ Case conversion may be inaccurate. Consider using '#align category_theory.grothe
 theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
   by
   constructor
-  · rintro rfl
-    infer_instance
-  · intro H
-    ext (U x)
-    apply (iff_true_iff _).mpr
-    rw [← is_iso.inv_hom_id_apply (G.ι.app U) x]
+  · rintro rfl; infer_instance
+  · intro H; ext (U x); apply (iff_true_iff _).mpr; rw [← is_iso.inv_hom_id_apply (G.ι.app U) x]
     exact ((inv (G.ι.app U)) x).2
 #align category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso
 
@@ -170,11 +155,7 @@ Case conversion may be inaccurate. Consider using '#align category_theory.grothe
 def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' ⟶ G.toPresheaf
     where
   app U x := ⟨f.app U x, hf U x⟩
-  naturality' := by
-    have := elementwise_of f.naturality
-    intros
-    ext
-    simp [this]
+  naturality' := by have := elementwise_of f.naturality; intros ; ext; simp [this]
 #align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.lift
 
 /- warning: category_theory.grothendieck_topology.subpresheaf.lift_ι -> CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι is a dubious translation:
@@ -182,9 +163,7 @@ def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' 
 Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ιₓ'. -/
 @[simp, reassoc]
 theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : G.lift f hf ≫ G.ι = f :=
-  by
-  ext
-  rfl
+  by ext; rfl
 #align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι
 
 /- warning: category_theory.grothendieck_topology.subpresheaf.sieve_of_section -> CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection is a dubious translation:
@@ -199,10 +178,7 @@ consisting of all `f : V ⟶ U` such that the restriction of `s` along `f` is in
 def Subpresheaf.sieveOfSection {U : Cᵒᵖ} (s : F.obj U) : Sieve (unop U)
     where
   arrows V f := F.map f.op s ∈ G.obj (op V)
-  downward_closed' V W i hi j :=
-    by
-    rw [op_comp, functor_to_types.map_comp_apply]
-    exact G.map _ hi
+  downward_closed' V W i hi j := by rw [op_comp, functor_to_types.map_comp_apply]; exact G.map _ hi
 #align category_theory.grothendieck_topology.subpresheaf.sieve_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection
 
 /- warning: category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section -> CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection is a dubious translation:
@@ -280,9 +256,7 @@ theorem Subpresheaf.eq_sheafify (h : Presieve.IsSheaf J F) (hG : Presieve.IsShea
     G = G.sheafify J := by
   apply (G.le_sheafify J).antisymm
   intro U s hs
-  suffices ((hG _ hs).amalgamate _ (G.family_of_elements_compatible s)).1 = s
-    by
-    rw [← this]
+  suffices ((hG _ hs).amalgamate _ (G.family_of_elements_compatible s)).1 = s by rw [← this];
     exact ((hG _ hs).amalgamate _ (G.family_of_elements_compatible s)).2
   apply (h _ hs).IsSeparatedFor.ext
   intro V i hi
@@ -379,8 +353,7 @@ noncomputable def Subpresheaf.sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presie
     conv_rhs => rw [← functor_to_types.map_comp_apply]
     change _ = F'.map (j ≫ i.unop).op _
     refine' Eq.trans _ (presieve.is_sheaf_for.valid_glue _ _ _ _).symm
-    · dsimp at hj⊢
-      rwa [functor_to_types.map_comp_apply]
+    · dsimp at hj⊢; rwa [functor_to_types.map_comp_apply]
     · dsimp [presieve.family_of_elements.comp_presheaf_map]
       congr 1
       ext1
@@ -445,10 +418,7 @@ section Image
 def imagePresheaf (f : F' ⟶ F) : Subpresheaf F
     where
   obj U := Set.range (f.app U)
-  map U V i := by
-    rintro _ ⟨x, rfl⟩
-    have := elementwise_of f.naturality
-    exact ⟨_, this i x⟩
+  map U V i := by rintro _ ⟨x, rfl⟩; have := elementwise_of f.naturality; exact ⟨_, this i x⟩
 #align category_theory.grothendieck_topology.image_presheaf CategoryTheory.GrothendieckTopology.imagePresheaf
 -/
 
@@ -470,10 +440,7 @@ but is expected to have type
   forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F F (CategoryTheory.CategoryStruct.id.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F)) (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instTopSubpresheaf.{u1, u2, u3} C _inst_1 F))
 Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.image_presheaf_id CategoryTheory.GrothendieckTopology.imagePresheaf_idₓ'. -/
 @[simp]
-theorem imagePresheaf_id : imagePresheaf (𝟙 F) = ⊤ :=
-  by
-  ext
-  simp
+theorem imagePresheaf_id : imagePresheaf (𝟙 F) = ⊤ := by ext; simp
 #align category_theory.grothendieck_topology.image_presheaf_id CategoryTheory.GrothendieckTopology.imagePresheaf_id
 
 #print CategoryTheory.GrothendieckTopology.toImagePresheaf /-
@@ -523,8 +490,7 @@ instance {F F' : Cᵒᵖ ⥤ Type max v w} (f : F ⟶ F') [hf : Mono f] : IsIso
     have := (nat_trans.mono_iff_mono_app _ _).mp hf X
     rw [mono_iff_injective] at this
     exact this (congr_arg Subtype.val e : _)
-  · rintro ⟨_, ⟨x, rfl⟩⟩
-    exact ⟨x, rfl⟩
+  · rintro ⟨_, ⟨x, rfl⟩⟩; exact ⟨x, rfl⟩
 
 #print CategoryTheory.GrothendieckTopology.imageSheaf /-
 /-- The image sheaf of a morphism between sheaves, defined to be the sheafification of
@@ -533,10 +499,8 @@ instance {F F' : Cᵒᵖ ⥤ Type max v w} (f : F ⟶ F') [hf : Mono f] : IsIso
 def imageSheaf {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Sheaf J (Type w) :=
   ⟨((imagePresheaf f.1).sheafify J).toPresheaf,
     by
-    rw [is_sheaf_iff_is_sheaf_of_type]
-    apply subpresheaf.sheafify_is_sheaf
-    rw [← is_sheaf_iff_is_sheaf_of_type]
-    exact F'.2⟩
+    rw [is_sheaf_iff_is_sheaf_of_type]; apply subpresheaf.sheafify_is_sheaf
+    rw [← is_sheaf_iff_is_sheaf_of_type]; exact F'.2⟩
 #align category_theory.grothendieck_topology.image_sheaf CategoryTheory.GrothendieckTopology.imageSheaf
 -/
 
@@ -559,17 +523,12 @@ def imageSheafι {F F' : Sheaf J (Type w)} (f : F ⟶ F') : imageSheaf f ⟶ F'
 #print CategoryTheory.GrothendieckTopology.toImageSheaf_ι /-
 @[simp, reassoc]
 theorem toImageSheaf_ι {F F' : Sheaf J (Type w)} (f : F ⟶ F') :
-    toImageSheaf f ≫ imageSheafι f = f := by
-  ext1
-  simp [to_image_presheaf_sheafify]
+    toImageSheaf f ≫ imageSheafι f = f := by ext1; simp [to_image_presheaf_sheafify]
 #align category_theory.grothendieck_topology.to_image_sheaf_ι CategoryTheory.GrothendieckTopology.toImageSheaf_ι
 -/
 
 instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Mono (imageSheafι f) :=
-  (sheafToPresheaf J _).mono_of_mono_map
-    (by
-      dsimp
-      infer_instance)
+  (sheafToPresheaf J _).mono_of_mono_map (by dsimp; infer_instance)
 
 instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Epi (toImageSheaf f) :=
   by
@@ -606,13 +565,10 @@ noncomputable def imageFactorization {F F' : Sheaf J (Type max v u)} (f : F ⟶
         haveI := (Sheaf.hom.mono_iff_presheaf_mono J _ _).mp I.m_mono
         refine' ⟨subpresheaf.hom_of_le _ ≫ inv (to_image_presheaf I.m.1)⟩
         apply subpresheaf.sheafify_le
-        · conv_lhs => rw [← I.fac]
-          apply image_presheaf_comp_le
-        · rw [← is_sheaf_iff_is_sheaf_of_type]
-          exact F'.2
+        · conv_lhs => rw [← I.fac]; apply image_presheaf_comp_le
+        · rw [← is_sheaf_iff_is_sheaf_of_type]; exact F'.2
         · apply presieve.is_sheaf_iso J (as_iso <| to_image_presheaf I.m.1)
-          rw [← is_sheaf_iff_is_sheaf_of_type]
-          exact I.I.2
+          rw [← is_sheaf_iff_is_sheaf_of_type]; exact I.I.2
       lift_fac := fun I => by
         ext1
         dsimp [image_mono_factorization]
Diff
@@ -178,10 +178,7 @@ def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' 
 #align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.lift
 
 /- warning: category_theory.grothendieck_topology.subpresheaf.lift_ι -> CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (hf : forall (U : Opposite.{succ u3} C) (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U), Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)), Eq.{succ (max u3 u1)} (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.lift.{u1, u2, u3} C _inst_1 F F' G f hf) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)) f
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (hf : forall (U : Opposite.{succ u3} C) (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U), Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)), Eq.{max (succ u3) (succ u1)} (Quiver.Hom.{succ (max u3 u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.lift.{u1, u2, u3} C _inst_1 F F' G f hf) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)) f
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ιₓ'. -/
 @[simp, reassoc]
 theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : G.lift f hf ≫ G.ι = f :=
@@ -236,10 +233,7 @@ theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible
 
 /- warning: category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality -> CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturality is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) {U : Opposite.{succ u3} C} {V : Opposite.{succ u3} C} (i : Quiver.Hom.{succ u2, u3} (Opposite.{succ u3} C) (Quiver.opposite.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1))) U V) (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U), Eq.{succ u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) (Subtype.val.{succ u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) (fun (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) => Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G V)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f V (CategoryTheory.Functor.map.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U V i x))) (CategoryTheory.Functor.map.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U V i (Subtype.val.{succ u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (fun (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) => Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f U x)))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) {U : Opposite.{succ u3} C} {V : Opposite.{succ u3} C} (i : Quiver.Hom.{succ u2, u3} (Opposite.{succ u3} C) (Quiver.opposite.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1))) U V) (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U), Eq.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) (Subtype.val.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) (fun (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) => Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G V)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f V (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U V i x))) (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U V i (Subtype.val.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (fun (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) => Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f U x)))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturalityₓ'. -/
 theorem Subpresheaf.nat_trans_naturality (f : F' ⟶ G.toPresheaf) {U V : Cᵒᵖ} (i : U ⟶ V)
     (x : F'.obj U) : (f.app V (F'.map i x)).1 = F.map i (f.app U x).1 :=
Diff
@@ -127,7 +127,7 @@ lean 3 declaration is
 but is expected to have type
   forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} (h : LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G G'), Eq.{max (succ u3) (succ u1)} (Quiver.Hom.{succ (max u3 u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G') F (CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe.{u1, u2, u3} C _inst_1 F G G' h) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G')) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)
 Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ιₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem Subpresheaf.homOfLe_ι {G G' : Subpresheaf F} (h : G ≤ G') :
     Subpresheaf.homOfLe h ≫ G'.ι = G.ι := by
   ext
@@ -183,7 +183,7 @@ lean 3 declaration is
 but is expected to have type
   forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (hf : forall (U : Opposite.{succ u3} C) (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U), Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)), Eq.{max (succ u3) (succ u1)} (Quiver.Hom.{succ (max u3 u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.lift.{u1, u2, u3} C _inst_1 F F' G f hf) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)) f
 Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ιₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : G.lift f hf ≫ G.ι = f :=
   by
   ext
@@ -503,7 +503,7 @@ def toImagePresheafSheafify (f : F' ⟶ F) : F' ⟶ ((imagePresheaf f).sheafify
 variable {J}
 
 #print CategoryTheory.GrothendieckTopology.toImagePresheaf_ι /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem toImagePresheaf_ι (f : F' ⟶ F) : toImagePresheaf f ≫ (imagePresheaf f).ι = f :=
   (imagePresheaf f).lift_ι _ _
 #align category_theory.grothendieck_topology.to_image_presheaf_ι CategoryTheory.GrothendieckTopology.toImagePresheaf_ι
@@ -563,7 +563,7 @@ def imageSheafι {F F' : Sheaf J (Type w)} (f : F ⟶ F') : imageSheaf f ⟶ F'
 -/
 
 #print CategoryTheory.GrothendieckTopology.toImageSheaf_ι /-
-@[simp, reassoc.1]
+@[simp, reassoc]
 theorem toImageSheaf_ι {F F' : Sheaf J (Type w)} (f : F ⟶ F') :
     toImageSheaf f ≫ imageSheafι f = f := by
   ext1
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.subsheaf
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 2ed2c6310e6f1c5562bdf6bfbda55ebbf6891abe
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.Sites.Sheafification
 
 # Subsheaf of types
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We define the sub(pre)sheaf of a type valued presheaf.
 
 ## Main results
Diff
@@ -43,6 +43,7 @@ namespace CategoryTheory.GrothendieckTopology
 
 variable {C : Type u} [Category.{v} C] (J : GrothendieckTopology C)
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf /-
 /-- A subpresheaf of a presheaf consists of a subset of `F.obj U` for every `U`,
 compatible with the restriction maps `F.map i`. -/
 @[ext]
@@ -50,6 +51,7 @@ structure Subpresheaf (F : Cᵒᵖ ⥤ Type w) where
   obj : ∀ U, Set (F.obj U)
   map : ∀ {U V : Cᵒᵖ} (i : U ⟶ V), obj U ⊆ F.map i ⁻¹' obj V
 #align category_theory.grothendieck_topology.subpresheaf CategoryTheory.GrothendieckTopology.Subpresheaf
+-/
 
 variable {F F' F'' : Cᵒᵖ ⥤ Type w} (G G' : Subpresheaf F)
 
@@ -62,6 +64,7 @@ instance : Top (Subpresheaf F) :=
 instance : Nonempty (Subpresheaf F) :=
   inferInstance
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf /-
 /-- The subpresheaf as a presheaf. -/
 @[simps]
 def Subpresheaf.toPresheaf : Cᵒᵖ ⥤ Type w
@@ -79,20 +82,29 @@ def Subpresheaf.toPresheaf : Cᵒᵖ ⥤ Type w
     rw [F.map_comp]
     rfl
 #align category_theory.grothendieck_topology.subpresheaf.to_presheaf CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf
+-/
 
 instance {U} : Coe (G.toPresheaf.obj U) (F.obj U) :=
   coeSubtype
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.ι /-
 /-- The inclusion of a subpresheaf to the original presheaf. -/
 @[simps]
 def Subpresheaf.ι : G.toPresheaf ⟶ F where app U x := x
 #align category_theory.grothendieck_topology.subpresheaf.ι CategoryTheory.GrothendieckTopology.Subpresheaf.ι
+-/
 
 instance : Mono G.ι :=
   ⟨fun H f₁ f₂ e =>
     NatTrans.ext f₁ f₂ <|
       funext fun U => funext fun x => Subtype.ext <| congr_fun (congr_app e U) x⟩
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.hom_of_le -> CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F}, (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G G') -> (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G'))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F}, (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G G') -> (Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G'))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.hom_of_le CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLeₓ'. -/
 /-- The inclusion of a subpresheaf to a larger subpresheaf -/
 @[simps]
 def Subpresheaf.homOfLe {G G' : Subpresheaf F} (h : G ≤ G') : G.toPresheaf ⟶ G'.toPresheaf
@@ -106,6 +118,12 @@ instance {G G' : Subpresheaf F} (h : G ≤ G') : Mono (Subpresheaf.homOfLe h) :=
         funext fun x =>
           Subtype.ext <| (congr_arg Subtype.val <| (congr_fun (congr_app e U) x : _) : _)⟩
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι -> CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ι is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} (h : LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G G'), Eq.{succ (max u3 u1)} (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G') F (CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe.{u1, u2, u3} C _inst_1 F G G' h) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G')) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} {G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F} (h : LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G G'), Eq.{max (succ u3) (succ u1)} (Quiver.Hom.{succ (max u3 u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G') F (CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe.{u1, u2, u3} C _inst_1 F G G' h) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G')) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.hom_of_le_ι CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe_ιₓ'. -/
 @[simp, reassoc.1]
 theorem Subpresheaf.homOfLe_ι {G G' : Subpresheaf F} (h : G ≤ G') :
     Subpresheaf.homOfLe h ≫ G'.ι = G.ι := by
@@ -120,6 +138,12 @@ instance : IsIso (Subpresheaf.ι (⊤ : Subpresheaf F)) :=
     rw [is_iso_iff_bijective]
     exact ⟨Subtype.coe_injective, fun x => ⟨⟨x, _root_.trivial⟩, rfl⟩⟩
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso -> CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), Iff (Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) G (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.hasTop.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.IsIso.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), Iff (Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) G (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instTopSubpresheaf.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.IsIso.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIsoₓ'. -/
 theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
   by
   constructor
@@ -132,6 +156,12 @@ theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι :=
     exact ((inv (G.ι.app U)) x).2
 #align category_theory.grothendieck_topology.subpresheaf.eq_top_iff_is_iso CategoryTheory.GrothendieckTopology.Subpresheaf.eq_top_iff_isIso
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.lift -> CategoryTheory.GrothendieckTopology.Subpresheaf.lift is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F), (forall (U : Opposite.{succ u3} C) (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U), Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) -> (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F), (forall (U : Opposite.{succ u3} C) (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U), Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) -> (Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.liftₓ'. -/
 /-- If the image of a morphism falls in a subpresheaf, then the morphism factors through it. -/
 @[simps]
 def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' ⟶ G.toPresheaf
@@ -144,6 +174,12 @@ def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' 
     simp [this]
 #align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.lift
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.lift_ι -> CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (hf : forall (U : Opposite.{succ u3} C) (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U), Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)), Eq.{succ (max u3 u1)} (Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.lift.{u1, u2, u3} C _inst_1 F F' G f hf) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)) f
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (hf : forall (U : Opposite.{succ u3} C) (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U), Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' F f U x) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)), Eq.{max (succ u3) (succ u1)} (Quiver.Hom.{succ (max u3 u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F) (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) F (CategoryTheory.GrothendieckTopology.Subpresheaf.lift.{u1, u2, u3} C _inst_1 F F' G f hf) (CategoryTheory.GrothendieckTopology.Subpresheaf.ι.{u1, u2, u3} C _inst_1 F G)) f
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ιₓ'. -/
 @[simp, reassoc.1]
 theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : G.lift f hf ≫ G.ι = f :=
   by
@@ -151,6 +187,12 @@ theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U)
   rfl
 #align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.sieve_of_section -> CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) -> (forall {U : Opposite.{succ u3} C}, (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) -> (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) -> (forall {U : Opposite.{succ u3} C}, (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) -> (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.sieve_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSectionₓ'. -/
 /-- Given a subpresheaf `G` of `F`, an `F`-section `s` on `U`, we may define a sieve of `U`
 consisting of all `f : V ⟶ U` such that the restriction of `s` along `f` is in `G`. -/
 @[simps]
@@ -163,12 +205,24 @@ def Subpresheaf.sieveOfSection {U : Cᵒᵖ} (s : F.obj U) : Sieve (unop U)
     exact G.map _ hi
 #align category_theory.grothendieck_topology.subpresheaf.sieve_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section -> CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U), CategoryTheory.Presieve.FamilyOfElements.{u1, u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U), CategoryTheory.Presieve.FamilyOfElements.{u1, u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSectionₓ'. -/
 /-- Given a `F`-section `s` on `U` and a subpresheaf `G`, we may define a family of elements in
 `G` consisting of the restrictions of `s` -/
 def Subpresheaf.familyOfElementsOfSection {U : Cᵒᵖ} (s : F.obj U) :
     (G.sieveOfSection s).1.FamilyOfElements G.toPresheaf := fun V i hi => ⟨F.map i.op s, hi⟩
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible -> CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u1, u2, u3} C _inst_1 (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (Opposite.unop.{succ u3} C U) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s)) (CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection.{u1, u2, u3} C _inst_1 F G U s)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) {U : Opposite.{succ u3} C} (s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U), CategoryTheory.Presieve.FamilyOfElements.Compatible.{u1, u2, u3} C _inst_1 (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) (Opposite.unop.{succ u3} C U) (CategoryTheory.Sieve.arrows.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s)) (CategoryTheory.GrothendieckTopology.Subpresheaf.familyOfElementsOfSection.{u1, u2, u3} C _inst_1 F G U s)
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatibleₓ'. -/
 theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
     (G.familyOfElementsOfSection s).Compatible :=
   by
@@ -178,6 +232,12 @@ theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
   rw [← functor_to_types.map_comp_apply, ← functor_to_types.map_comp_apply, ← op_comp, ← op_comp, e]
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality -> CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturality is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) {U : Opposite.{succ u3} C} {V : Opposite.{succ u3} C} (i : Quiver.Hom.{succ u2, u3} (Opposite.{succ u3} C) (Quiver.opposite.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1))) U V) (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U), Eq.{succ u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) (Subtype.val.{succ u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) (fun (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) => Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F V)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G V)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f V (CategoryTheory.Functor.map.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' U V i x))) (CategoryTheory.Functor.map.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U V i (Subtype.val.{succ u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (fun (x : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) => Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f U x)))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (f : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) {U : Opposite.{succ u3} C} {V : Opposite.{succ u3} C} (i : Quiver.Hom.{succ u2, u3} (Opposite.{succ u3} C) (Quiver.opposite.{u3, succ u2} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1))) U V) (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U), Eq.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) (Subtype.val.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) (fun (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) => Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) V)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G V)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f V (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F') U V i x))) (Prefunctor.map.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U V i (Subtype.val.{succ u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (fun (x : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) => Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) x (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U)) (CategoryTheory.NatTrans.app.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F' (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G) f U x)))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.nat_trans_naturality CategoryTheory.GrothendieckTopology.Subpresheaf.nat_trans_naturalityₓ'. -/
 theorem Subpresheaf.nat_trans_naturality (f : F' ⟶ G.toPresheaf) {U V : Cᵒᵖ} (i : U ⟶ V)
     (x : F'.obj U) : (f.app V (F'.map i x)).1 = F.map i (f.app U x).1 :=
   congr_arg Subtype.val (FunctorToTypes.naturality _ _ f i x)
@@ -185,6 +245,7 @@ theorem Subpresheaf.nat_trans_naturality (f : F' ⟶ G.toPresheaf) {U V : Cᵒ
 
 include J
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify /-
 /-- The sheafification of a subpresheaf as a subpresheaf.
 Note that this is a sheaf only when the whole presheaf is a sheaf. -/
 def Subpresheaf.sheafify : Subpresheaf F
@@ -197,7 +258,14 @@ def Subpresheaf.sheafify : Subpresheaf F
     dsimp at h⊢
     rwa [← functor_to_types.map_comp_apply]
 #align category_theory.grothendieck_topology.subpresheaf.sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify
+-/
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.le_sheafify -> CategoryTheory.GrothendieckTopology.Subpresheaf.le_sheafify is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G)
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.le_sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.le_sheafifyₓ'. -/
 theorem Subpresheaf.le_sheafify : G ≤ G.sheafify J :=
   by
   intro U s hs
@@ -210,6 +278,7 @@ theorem Subpresheaf.le_sheafify : G ≤ G.sheafify J :=
 
 variable {J}
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.eq_sheafify /-
 theorem Subpresheaf.eq_sheafify (h : Presieve.IsSheaf J F) (hG : Presieve.IsSheaf J G.toPresheaf) :
     G = G.sheafify J := by
   apply (G.le_sheafify J).antisymm
@@ -222,7 +291,9 @@ theorem Subpresheaf.eq_sheafify (h : Presieve.IsSheaf J F) (hG : Presieve.IsShea
   intro V i hi
   exact (congr_arg Subtype.val ((hG _ hs).valid_glue (G.family_of_elements_compatible s) _ hi) : _)
 #align category_theory.grothendieck_topology.subpresheaf.eq_sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.eq_sheafify
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_isSheaf /-
 theorem Subpresheaf.sheafify_isSheaf (hF : Presieve.IsSheaf J F) :
     Presieve.IsSheaf J (G.sheafify J).toPresheaf :=
   by
@@ -264,12 +335,21 @@ theorem Subpresheaf.sheafify_isSheaf (hF : Presieve.IsSheaf J F) :
   rw [ht _ hi]
   exact h₁ hi
 #align category_theory.grothendieck_topology.subpresheaf.sheafify_is_sheaf CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_isSheaf
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.eq_sheafify_iff /-
 theorem Subpresheaf.eq_sheafify_iff (h : Presieve.IsSheaf J F) :
     G = G.sheafify J ↔ Presieve.IsSheaf J G.toPresheaf :=
   ⟨fun e => e.symm ▸ G.sheafify_isSheaf h, G.eq_sheafify h⟩
 #align category_theory.grothendieck_topology.subpresheaf.eq_sheafify_iff CategoryTheory.GrothendieckTopology.Subpresheaf.eq_sheafify_iff
+-/
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.is_sheaf_iff -> CategoryTheory.GrothendieckTopology.Subpresheaf.isSheaf_iff is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (Iff (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) (forall (U : Opposite.{succ u3} C) (s : CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U), (Membership.Mem.{max u3 u2, max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)) (Set.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (Set.hasMem.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s) (coeFn.{max (succ u3) (succ u2), max (succ u3) (succ (max u3 u2))} (CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) (fun (_x : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1) => forall (X : C), Set.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 X)) (CategoryTheory.GrothendieckTopology.hasCoeToFun.{u2, u3} C _inst_1) J (Opposite.unop.{succ u3} C U))) -> (Membership.Mem.{u1, u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U) (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.hasMem.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) s (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U))))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (Iff (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G)) (forall (U : Opposite.{succ u3} C) (s : Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U), (Membership.mem.{max u3 u2, max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U)) (Set.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (Set.instMembershipSet.{max u3 u2} (CategoryTheory.Sieve.{u2, u3} C _inst_1 (Opposite.unop.{succ u3} C U))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection.{u1, u2, u3} C _inst_1 F G U s) (CategoryTheory.GrothendieckTopology.sieves.{u2, u3} C _inst_1 J (Opposite.unop.{succ u3} C U))) -> (Membership.mem.{u1, u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U) (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instMembershipSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) s (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F G U))))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.is_sheaf_iff CategoryTheory.GrothendieckTopology.Subpresheaf.isSheaf_iffₓ'. -/
 theorem Subpresheaf.isSheaf_iff (h : Presieve.IsSheaf J F) :
     Presieve.IsSheaf J G.toPresheaf ↔
       ∀ (U) (s : F.obj U), G.sieveOfSection s ∈ J (unop U) → s ∈ G.obj U :=
@@ -279,11 +359,14 @@ theorem Subpresheaf.isSheaf_iff (h : Presieve.IsSheaf J F) :
   exact ⟨Eq.ge, (G.le_sheafify J).antisymm⟩
 #align category_theory.grothendieck_topology.subpresheaf.is_sheaf_iff CategoryTheory.GrothendieckTopology.Subpresheaf.isSheaf_iff
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_sheafify /-
 theorem Subpresheaf.sheafify_sheafify (h : Presieve.IsSheaf J F) :
     (G.sheafify J).sheafify J = G.sheafify J :=
   ((Subpresheaf.eq_sheafify_iff _ h).mpr <| G.sheafify_isSheaf h).symm
 #align category_theory.grothendieck_topology.subpresheaf.sheafify_sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_sheafify
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.sheafifyLift /-
 /-- The lift of a presheaf morphism onto the sheafification subpresheaf.  -/
 noncomputable def Subpresheaf.sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presieve.IsSheaf J F') :
     (G.sheafify J).toPresheaf ⟶ F'
@@ -306,7 +389,9 @@ noncomputable def Subpresheaf.sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presie
       ext1
       exact (functor_to_types.map_comp_apply _ _ _ _).symm
 #align category_theory.grothendieck_topology.subpresheaf.sheafify_lift CategoryTheory.GrothendieckTopology.Subpresheaf.sheafifyLift
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafifyLift /-
 theorem Subpresheaf.to_sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presieve.IsSheaf J F') :
     Subpresheaf.homOfLe (G.le_sheafify J) ≫ G.sheafifyLift f h = f :=
   by
@@ -316,7 +401,9 @@ theorem Subpresheaf.to_sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presieve.IsSh
   have := elementwise_of f.naturality
   exact (presieve.is_sheaf_for.valid_glue _ _ _ hi).trans (this _ _)
 #align category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafifyLift
+-/
 
+#print CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafify_lift_unique /-
 theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
     (l₁ l₂ : (G.sheafify J).toPresheaf ⟶ F')
     (e : Subpresheaf.homOfLe (G.le_sheafify J) ≫ l₁ = Subpresheaf.homOfLe (G.le_sheafify J) ≫ l₂) :
@@ -328,7 +415,14 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
   erw [← functor_to_types.naturality, ← functor_to_types.naturality]
   exact (congr_fun (congr_app e <| op V) ⟨_, hi⟩ : _)
 #align category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift_unique CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafify_lift_unique
+-/
 
+/- warning: category_theory.grothendieck_topology.subpresheaf.sheafify_le -> CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_le is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) G G') -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G')) -> (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G) G')
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {J : CategoryTheory.GrothendieckTopology.{u2, u3} C _inst_1} {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (G : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (G' : CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F), (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) G G') -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J F) -> (CategoryTheory.Presieve.IsSheaf.{u1, u2, u3} C _inst_1 J (CategoryTheory.GrothendieckTopology.Subpresheaf.toPresheaf.{u1, u2, u3} C _inst_1 F G')) -> (LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F))) (CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify.{u1, u2, u3} C _inst_1 J F G) G')
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.subpresheaf.sheafify_le CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_leₓ'. -/
 theorem Subpresheaf.sheafify_le (h : G ≤ G') (hF : Presieve.IsSheaf J F)
     (hG' : Presieve.IsSheaf J G'.toPresheaf) : G.sheafify J ≤ G' :=
   by
@@ -348,6 +442,7 @@ omit J
 
 section Image
 
+#print CategoryTheory.GrothendieckTopology.imagePresheaf /-
 /-- The image presheaf of a morphism, whose components are the set-theoretic images. -/
 @[simps]
 def imagePresheaf (f : F' ⟶ F) : Subpresheaf F
@@ -358,12 +453,25 @@ def imagePresheaf (f : F' ⟶ F) : Subpresheaf F
     have := elementwise_of f.naturality
     exact ⟨_, this i x⟩
 #align category_theory.grothendieck_topology.image_presheaf CategoryTheory.GrothendieckTopology.imagePresheaf
+-/
 
+/- warning: category_theory.grothendieck_topology.top_subpresheaf_obj -> CategoryTheory.GrothendieckTopology.top_subpresheaf_obj is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (U : Opposite.{succ u3} C), Eq.{succ u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.hasTop.{u1, u2, u3} C _inst_1 F)) U) (Top.top.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CompleteLattice.toHasTop.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)) (Set.completeBooleanAlgebra.{u1} (CategoryTheory.Functor.obj.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F U)))))))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (U : Opposite.{succ u3} C), Eq.{succ u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CategoryTheory.GrothendieckTopology.Subpresheaf.obj.{u1, u2, u3} C _inst_1 F (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instTopSubpresheaf.{u1, u2, u3} C _inst_1 F)) U) (Top.top.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CompleteLattice.toTop.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)) (Set.instCompleteBooleanAlgebraSet.{u1} (Prefunctor.obj.{succ u2, succ u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.toCategoryStruct.{u2, u3} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1))) 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} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1} F) U)))))))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.top_subpresheaf_obj CategoryTheory.GrothendieckTopology.top_subpresheaf_objₓ'. -/
 @[simp]
 theorem top_subpresheaf_obj (U) : (⊤ : Subpresheaf F).obj U = ⊤ :=
   rfl
 #align category_theory.grothendieck_topology.top_subpresheaf_obj CategoryTheory.GrothendieckTopology.top_subpresheaf_obj
 
+/- warning: category_theory.grothendieck_topology.image_presheaf_id -> CategoryTheory.GrothendieckTopology.imagePresheaf_id is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F F (CategoryTheory.CategoryStruct.id.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F)) (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.Subpresheaf.hasTop.{u1, u2, u3} C _inst_1 F))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}}, Eq.{max (succ u3) (succ u1)} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F F (CategoryTheory.CategoryStruct.id.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F)) (Top.top.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F) (CategoryTheory.GrothendieckTopology.instTopSubpresheaf.{u1, u2, u3} C _inst_1 F))
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.image_presheaf_id CategoryTheory.GrothendieckTopology.imagePresheaf_idₓ'. -/
 @[simp]
 theorem imagePresheaf_id : imagePresheaf (𝟙 F) = ⊤ :=
   by
@@ -371,27 +479,39 @@ theorem imagePresheaf_id : imagePresheaf (𝟙 F) = ⊤ :=
   simp
 #align category_theory.grothendieck_topology.image_presheaf_id CategoryTheory.GrothendieckTopology.imagePresheaf_id
 
+#print CategoryTheory.GrothendieckTopology.toImagePresheaf /-
 /-- A morphism factors through the image presheaf. -/
 @[simps]
 def toImagePresheaf (f : F' ⟶ F) : F' ⟶ (imagePresheaf f).toPresheaf :=
   (imagePresheaf f).lift f fun U x => Set.mem_range_self _
 #align category_theory.grothendieck_topology.to_image_presheaf CategoryTheory.GrothendieckTopology.toImagePresheaf
+-/
 
 variable (J)
 
+#print CategoryTheory.GrothendieckTopology.toImagePresheafSheafify /-
 /-- A morphism factors through the sheafification of the image presheaf. -/
 @[simps]
 def toImagePresheafSheafify (f : F' ⟶ F) : F' ⟶ ((imagePresheaf f).sheafify J).toPresheaf :=
   toImagePresheaf f ≫ Subpresheaf.homOfLe ((imagePresheaf f).le_sheafify J)
 #align category_theory.grothendieck_topology.to_image_presheaf_sheafify CategoryTheory.GrothendieckTopology.toImagePresheafSheafify
+-/
 
 variable {J}
 
+#print CategoryTheory.GrothendieckTopology.toImagePresheaf_ι /-
 @[simp, reassoc.1]
 theorem toImagePresheaf_ι (f : F' ⟶ F) : toImagePresheaf f ≫ (imagePresheaf f).ι = f :=
   (imagePresheaf f).lift_ι _ _
 #align category_theory.grothendieck_topology.to_image_presheaf_ι CategoryTheory.GrothendieckTopology.toImagePresheaf_ι
+-/
 
+/- warning: category_theory.grothendieck_topology.image_presheaf_comp_le -> CategoryTheory.GrothendieckTopology.imagePresheaf_comp_le is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F'' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (f₁ : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F F') (f₂ : Quiver.Hom.{succ (max u3 u1), max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F''), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (Preorder.toHasLe.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (CategoryTheory.GrothendieckTopology.Subpresheaf.partialOrder.{u1, u2, u3} C _inst_1 F''))) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F (CategoryTheory.CategoryStruct.comp.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max u2 u1 u3 (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F F' F'' f₁ f₂)) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F' f₂)
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {F : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} {F'' : CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}} (f₁ : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F F') (f₂ : Quiver.Hom.{max (succ u3) (succ u1), max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.CategoryStruct.toQuiver.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}))) F' F''), LE.le.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (Preorder.toLE.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (PartialOrder.toPreorder.{max u3 u1} (CategoryTheory.GrothendieckTopology.Subpresheaf.{u1, u2, u3} C _inst_1 F'') (CategoryTheory.GrothendieckTopology.instPartialOrderSubpresheaf.{u1, u2, u3} C _inst_1 F''))) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F (CategoryTheory.CategoryStruct.comp.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Category.toCategoryStruct.{max u3 u1, max (max u3 u2) (succ u1)} (CategoryTheory.Functor.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1}) (CategoryTheory.Functor.category.{u2, u1, u3, succ u1} (Opposite.{succ u3} C) (CategoryTheory.Category.opposite.{u2, u3} C _inst_1) Type.{u1} CategoryTheory.types.{u1})) F F' F'' f₁ f₂)) (CategoryTheory.GrothendieckTopology.imagePresheaf.{u1, u2, u3} C _inst_1 F'' F' f₂)
+Case conversion may be inaccurate. Consider using '#align category_theory.grothendieck_topology.image_presheaf_comp_le CategoryTheory.GrothendieckTopology.imagePresheaf_comp_leₓ'. -/
 theorem imagePresheaf_comp_le (f₁ : F ⟶ F') (f₂ : F' ⟶ F'') :
     imagePresheaf (f₁ ≫ f₂) ≤ imagePresheaf f₂ := fun U x hx => ⟨f₁.app U hx.some, hx.choose_spec⟩
 #align category_theory.grothendieck_topology.image_presheaf_comp_le CategoryTheory.GrothendieckTopology.imagePresheaf_comp_le
@@ -409,6 +529,7 @@ instance {F F' : Cᵒᵖ ⥤ Type max v w} (f : F ⟶ F') [hf : Mono f] : IsIso
   · rintro ⟨_, ⟨x, rfl⟩⟩
     exact ⟨x, rfl⟩
 
+#print CategoryTheory.GrothendieckTopology.imageSheaf /-
 /-- The image sheaf of a morphism between sheaves, defined to be the sheafification of
 `image_presheaf`. -/
 @[simps]
@@ -420,25 +541,32 @@ def imageSheaf {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Sheaf J (Type w) :=
     rw [← is_sheaf_iff_is_sheaf_of_type]
     exact F'.2⟩
 #align category_theory.grothendieck_topology.image_sheaf CategoryTheory.GrothendieckTopology.imageSheaf
+-/
 
+#print CategoryTheory.GrothendieckTopology.toImageSheaf /-
 /-- A morphism factors through the image sheaf. -/
 @[simps]
 def toImageSheaf {F F' : Sheaf J (Type w)} (f : F ⟶ F') : F ⟶ imageSheaf f :=
   ⟨toImagePresheafSheafify J f.1⟩
 #align category_theory.grothendieck_topology.to_image_sheaf CategoryTheory.GrothendieckTopology.toImageSheaf
+-/
 
+#print CategoryTheory.GrothendieckTopology.imageSheafι /-
 /-- The inclusion of the image sheaf to the target. -/
 @[simps]
 def imageSheafι {F F' : Sheaf J (Type w)} (f : F ⟶ F') : imageSheaf f ⟶ F' :=
   ⟨Subpresheaf.ι _⟩
 #align category_theory.grothendieck_topology.image_sheaf_ι CategoryTheory.GrothendieckTopology.imageSheafι
+-/
 
+#print CategoryTheory.GrothendieckTopology.toImageSheaf_ι /-
 @[simp, reassoc.1]
 theorem toImageSheaf_ι {F F' : Sheaf J (Type w)} (f : F ⟶ F') :
     toImageSheaf f ≫ imageSheafι f = f := by
   ext1
   simp [to_image_presheaf_sheafify]
 #align category_theory.grothendieck_topology.to_image_sheaf_ι CategoryTheory.GrothendieckTopology.toImageSheaf_ι
+-/
 
 instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Mono (imageSheafι f) :=
   (sheafToPresheaf J _).mono_of_mono_map
@@ -460,6 +588,7 @@ instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Epi (toImageSheaf f) :=
   dsimp at this⊢
   convert this <;> exact E.symm
 
+#print CategoryTheory.GrothendieckTopology.imageMonoFactorization /-
 /-- The mono factorization given by `image_sheaf` for a morphism. -/
 def imageMonoFactorization {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Limits.MonoFactorisation f
     where
@@ -467,7 +596,9 @@ def imageMonoFactorization {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Limits.Mon
   m := imageSheafι f
   e := toImageSheaf f
 #align category_theory.grothendieck_topology.image_mono_factorization CategoryTheory.GrothendieckTopology.imageMonoFactorization
+-/
 
+#print CategoryTheory.GrothendieckTopology.imageFactorization /-
 /-- The mono factorization given by `image_sheaf` for a morphism is an image. -/
 noncomputable def imageFactorization {F F' : Sheaf J (Type max v u)} (f : F ⟶ F') :
     Limits.ImageFactorisation f where
@@ -493,6 +624,7 @@ noncomputable def imageFactorization {F F' : Sheaf J (Type max v u)} (f : F ⟶
         congr 1
         rw [is_iso.inv_comp_eq, to_image_presheaf_ι] }
 #align category_theory.grothendieck_topology.image_factorization CategoryTheory.GrothendieckTopology.imageFactorization
+-/
 
 instance : Limits.HasImages (Sheaf J (Type max v u)) :=
   ⟨fun _ _ f => ⟨⟨imageFactorization f⟩⟩⟩
Diff
@@ -333,7 +333,7 @@ theorem Subpresheaf.sheafify_le (h : G ≤ G') (hF : Presieve.IsSheaf J F)
     (hG' : Presieve.IsSheaf J G'.toPresheaf) : G.sheafify J ≤ G' :=
   by
   intro U x hx
-  convert ((G.sheafify_lift (subpresheaf.hom_of_le h) hG').app U ⟨x, hx⟩).2
+  convert((G.sheafify_lift (subpresheaf.hom_of_le h) hG').app U ⟨x, hx⟩).2
   apply (hF _ hx).IsSeparatedFor.ext
   intro V i hi
   have :=
Diff
@@ -485,7 +485,7 @@ noncomputable def imageFactorization {F F' : Sheaf J (Type max v u)} (f : F ⟶
         · apply presieve.is_sheaf_iso J (as_iso <| to_image_presheaf I.m.1)
           rw [← is_sheaf_iff_is_sheaf_of_type]
           exact I.I.2
-      lift_fac' := fun I => by
+      lift_fac := fun I => by
         ext1
         dsimp [image_mono_factorization]
         generalize_proofs h

Changes in mathlib4

mathlib3
mathlib4
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
@@ -193,7 +193,7 @@ def Subpresheaf.sheafify : Subpresheaf F where
 theorem Subpresheaf.le_sheafify : G ≤ G.sheafify J := by
   intro U s hs
   change _ ∈ J _
-  convert J.top_mem U.unop -- porting note: `U.unop` can not be inferred now
+  convert J.top_mem U.unop -- Porting note: `U.unop` can not be inferred now
   rw [eq_top_iff]
   rintro V i -
   exact G.map i.op hs
@@ -218,7 +218,7 @@ theorem Subpresheaf.sheafify_isSheaf (hF : Presieve.IsSheaf J F) :
   intro U S hS x hx
   let S' := Sieve.bind S fun Y f hf => G.sieveOfSection (x f hf).1
   have := fun (V) (i : V ⟶ U) (hi : S' i) => hi
-  -- porting note: change to explicit variable so that `choose` can find the correct
+  -- Porting note: change to explicit variable so that `choose` can find the correct
   -- dependent functions. Thus everything follows need two additional explicit variables.
   choose W i₁ i₂ hi₂ h₁ h₂ using this
   dsimp [-Sieve.bind_apply] at *
@@ -290,7 +290,7 @@ noncomputable def Subpresheaf.sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presie
     change _ = F'.map (j ≫ i.unop).op _
     refine' Eq.trans _ (Presieve.IsSheafFor.valid_glue (h _ s.2)
       ((G.family_of_elements_compatible s.1).compPresheafMap f) (j ≫ i.unop) _).symm
-    swap -- porting note: need to swap two goals otherwise the first goal needs to be proven
+    swap -- Porting note: need to swap two goals otherwise the first goal needs to be proven
     -- inside the second goal any way
     · dsimp [Presieve.FamilyOfElements.compPresheafMap] at hj ⊢
       rwa [FunctorToTypes.map_comp_apply]
@@ -304,7 +304,7 @@ theorem Subpresheaf.to_sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presieve.IsSh
   apply (h _ ((Subpresheaf.homOfLe (G.le_sheafify J)).app U s).prop).isSeparatedFor.ext
   intro V i hi
   have := elementwise_of% f.naturality
-  -- porting note: filled in some underscores where Lean3 could automatically fill.
+  -- Porting note: filled in some underscores where Lean3 could automatically fill.
   exact (Presieve.IsSheafFor.valid_glue (h _ ((homOfLe (_ : G ≤ sheafify J G)).app U s).2)
     ((G.family_of_elements_compatible _).compPresheafMap _) _ hi).trans (this _ _)
 #align category_theory.grothendieck_topology.subpresheaf.to_sheafify_lift CategoryTheory.GrothendieckTopology.Subpresheaf.to_sheafifyLift
chore: prepare Lean version bump with explicit simp (#10999)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -227,7 +227,7 @@ theorem Subpresheaf.sheafify_isSheaf (hF : Presieve.IsSheaf J F) :
     intro s
     constructor
     · intro H V i hi
-      dsimp only [show x'' = fun V i hi => F.map (i₁ V i hi).op (x _ (hi₂ V i hi)) from rfl]
+      dsimp only [x'', show x'' = fun V i hi => F.map (i₁ V i hi).op (x _ (hi₂ V i hi)) from rfl]
       conv_lhs => rw [← h₂ _ _ hi]
       rw [← H _ (hi₂ _ _ hi)]
       exact FunctorToTypes.map_comp_apply F (i₂ _ _ hi).op (i₁ _ _ hi).op _
style: fix typos in porting notes (#10931)
Diff
@@ -168,7 +168,7 @@ def Subpresheaf.familyOfElementsOfSection {U : Cᵒᵖ} (s : F.obj U) :
 theorem Subpresheaf.family_of_elements_compatible {U : Cᵒᵖ} (s : F.obj U) :
     (G.familyOfElementsOfSection s).Compatible := by
   intro Y₁ Y₂ Z g₁ g₂ f₁ f₂ h₁ h₂ e
-  refine Subtype.ext ?_ -- port note: `ext1` does not work here
+  refine Subtype.ext ?_ -- Porting note: `ext1` does not work here
   change F.map g₁.op (F.map f₁.op s) = F.map g₂.op (F.map f₂.op s)
   rw [← FunctorToTypes.map_comp_apply, ← FunctorToTypes.map_comp_apply, ← op_comp, ← op_comp, e]
 #align category_theory.grothendieck_topology.subpresheaf.family_of_elements_compatible CategoryTheory.GrothendieckTopology.Subpresheaf.family_of_elements_compatible
@@ -459,7 +459,7 @@ noncomputable def imageFactorization {F F' : Sheaf J TypeMax.{v, u}} (f : F ⟶
   F := imageMonoFactorization f
   isImage :=
     { lift := fun I => by
-        -- port note: need to specify the target category (TypeMax.{v, u}) for this to work.
+        -- Porting note: need to specify the target category (TypeMax.{v, u}) for this to work.
         haveI M := (Sheaf.Hom.mono_iff_presheaf_mono J TypeMax.{v, u} _).mp I.m_mono
         haveI := isIso_toImagePresheaf I.m.1
         refine' ⟨Subpresheaf.homOfLe _ ≫ inv (toImagePresheaf I.m.1)⟩
chore: remove terminal, terminal refines (#10762)

I replaced a few "terminal" refine/refine's with exact.

The strategy was very simple-minded: essentially any refine whose following line had smaller indentation got replaced by exact and then I cleaned up the mess.

This PR certainly leaves some further terminal refines, but maybe the current change is beneficial.

Diff
@@ -238,7 +238,7 @@ theorem Subpresheaf.sheafify_isSheaf (hF : Presieve.IsSheaf J F) :
       have hi'' : S' (i' ≫ i) := ⟨_, _, _, hi, hi', rfl⟩
       have := H _ hi''
       rw [op_comp, F.map_comp] at this
-      refine' this.trans (congr_arg Subtype.val (hx _ _ (hi₂ _ _ hi'') hi (h₂ _ _ hi'')))
+      exact this.trans (congr_arg Subtype.val (hx _ _ (hi₂ _ _ hi'') hi (h₂ _ _ hi'')))
   have : x''.Compatible := by
     intro V₁ V₂ V₃ g₁ g₂ g₃ g₄ S₁ S₂ e
     rw [← FunctorToTypes.map_comp_apply, ← FunctorToTypes.map_comp_apply]
feat(CategoryTheory): PreservesLimits instances for adjoint functors (#9990)

This PR adds PreservesColimits/PreservesLimits instances for adjoint functors.

Co-authored-by: Markus Himmel <markus@himmel-villmar.de>

Diff
@@ -8,7 +8,6 @@ import Mathlib.CategoryTheory.Adjunction.Evaluation
 import Mathlib.Tactic.CategoryTheory.Elementwise
 import Mathlib.CategoryTheory.Adhesive
 import Mathlib.CategoryTheory.Sites.ConcreteSheafification
-import Mathlib.CategoryTheory.Limits.Preserves.Filtered
 
 #align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
 
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -5,8 +5,10 @@ Authors: Andrew Yang
 -/
 import Mathlib.CategoryTheory.Elementwise
 import Mathlib.CategoryTheory.Adjunction.Evaluation
-import Mathlib.CategoryTheory.Sites.LeftExact
 import Mathlib.Tactic.CategoryTheory.Elementwise
+import Mathlib.CategoryTheory.Adhesive
+import Mathlib.CategoryTheory.Sites.ConcreteSheafification
+import Mathlib.CategoryTheory.Limits.Preserves.Filtered
 
 #align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
 
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
@@ -5,7 +5,7 @@ Authors: Andrew Yang
 -/
 import Mathlib.CategoryTheory.Elementwise
 import Mathlib.CategoryTheory.Adjunction.Evaluation
-import Mathlib.CategoryTheory.Sites.ConcreteSheafification
+import Mathlib.CategoryTheory.Sites.LeftExact
 import Mathlib.Tactic.CategoryTheory.Elementwise
 
 #align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
refactor(CategoryTheory/Sites): rename Sheafification file (#9042)

In preparation for #9012, to make the diff nicer.

Diff
@@ -5,7 +5,7 @@ Authors: Andrew Yang
 -/
 import Mathlib.CategoryTheory.Elementwise
 import Mathlib.CategoryTheory.Adjunction.Evaluation
-import Mathlib.CategoryTheory.Sites.Sheafification
+import Mathlib.CategoryTheory.Sites.ConcreteSheafification
 import Mathlib.Tactic.CategoryTheory.Elementwise
 
 #align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
chore: missing spaces after rcases, convert and congrm (#7725)

Replace rcases( with rcases (. Same thing for convert( and congrm(. No other change.

Diff
@@ -323,7 +323,7 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
 theorem Subpresheaf.sheafify_le (h : G ≤ G') (hF : Presieve.IsSheaf J F)
     (hG' : Presieve.IsSheaf J G'.toPresheaf) : G.sheafify J ≤ G' := by
   intro U x hx
-  convert((G.sheafifyLift (Subpresheaf.homOfLe h) hG').app U ⟨x, hx⟩).2
+  convert ((G.sheafifyLift (Subpresheaf.homOfLe h) hG').app U ⟨x, hx⟩).2
   apply (hF _ hx).isSeparatedFor.ext
   intro V i hi
   have :=
chore: fix some cases in names (#7469)

And fix some names in comments where this revealed issues

Diff
@@ -29,7 +29,7 @@ We define the sub(pre)sheaf of a type valued presheaf.
   The descent of a map into a sheaf to the sheafification.
 - `CategoryTheory.GrothendieckTopology.imageSheaf` : The image sheaf of a morphism.
 - `CategoryTheory.GrothendieckTopology.imageFactorization` : The image sheaf as a
-  `limits.image_factorization`.
+  `Limits.imageFactorization`.
 -/
 
 
chore: only four spaces for subsequent lines (#7286)

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

Diff
@@ -143,7 +143,7 @@ def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' 
 
 @[reassoc (attr := simp)]
 theorem Subpresheaf.lift_ι (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) :
-  G.lift f hf ≫ G.ι = f := by
+    G.lift f hf ≫ G.ι = f := by
   ext
   rfl
 #align category_theory.grothendieck_topology.subpresheaf.lift_ι CategoryTheory.GrothendieckTopology.Subpresheaf.lift_ι
style: fix wrapping of where (#7149)
Diff
@@ -94,8 +94,8 @@ instance : Mono G.ι :=
 
 /-- The inclusion of a subpresheaf to a larger subpresheaf -/
 @[simps]
-def Subpresheaf.homOfLe {G G' : Subpresheaf F} (h : G ≤ G') : G.toPresheaf ⟶ G'.toPresheaf
-    where app U x := ⟨x, h U x.prop⟩
+def Subpresheaf.homOfLe {G G' : Subpresheaf F} (h : G ≤ G') : G.toPresheaf ⟶ G'.toPresheaf where
+  app U x := ⟨x, h U x.prop⟩
 #align category_theory.grothendieck_topology.subpresheaf.hom_of_le CategoryTheory.GrothendieckTopology.Subpresheaf.homOfLe
 
 instance {G G' : Subpresheaf F} (h : G ≤ G') : Mono (Subpresheaf.homOfLe h) :=
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,17 +2,14 @@
 Copyright (c) 2022 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.subsheaf
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Elementwise
 import Mathlib.CategoryTheory.Adjunction.Evaluation
 import Mathlib.CategoryTheory.Sites.Sheafification
 import Mathlib.Tactic.CategoryTheory.Elementwise
 
+#align_import category_theory.sites.subsheaf from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
 /-!
 
 # Subsheaf of types
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -397,7 +397,7 @@ instance isIso_toImagePresheaf {F F' : Cᵒᵖ ⥤ TypeMax.{v, w}} (f : F ⟶ F'
       exact this (congr_arg Subtype.val e : _)
     · rintro ⟨_, ⟨x, rfl⟩⟩
       exact ⟨x, rfl⟩
-  apply  NatIso.isIso_of_isIso_app
+  apply NatIso.isIso_of_isIso_app
 
 /-- The image sheaf of a morphism between sheaves, defined to be the sheafification of
 `image_presheaf`. -/
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -188,7 +188,7 @@ def Subpresheaf.sheafify : Subpresheaf F where
     rintro U V i s hs
     refine' J.superset_covering _ (J.pullback_stable i.unop hs)
     intro _ _ h
-    dsimp at h⊢
+    dsimp at h ⊢
     rwa [← FunctorToTypes.map_comp_apply]
 #align category_theory.grothendieck_topology.subpresheaf.sheafify CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify
 
@@ -445,7 +445,7 @@ instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Epi (toImageSheaf f) := by
   have E : (toImageSheaf f).val.app (op V) y = (imageSheaf f).val.map i.op ⟨s, hx⟩ :=
     Subtype.ext e'
   have := congr_arg (fun f : F ⟶ G' => (Sheaf.Hom.val f).app _ y) e
-  dsimp at this⊢
+  dsimp at this ⊢
   convert this <;> exact E.symm
 
 /-- The mono factorization given by `image_sheaf` for a morphism. -/
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
@@ -126,7 +126,7 @@ theorem Subpresheaf.eq_top_iff_isIso : G = ⊤ ↔ IsIso G.ι := by
   · rintro rfl
     infer_instance
   · intro H
-    ext (U x)
+    ext U x
     apply iff_true_iff.mpr
     rw [← IsIso.inv_hom_id_apply (G.ι.app U) x]
     exact ((inv (G.ι.app U)) x).2
@@ -302,7 +302,7 @@ noncomputable def Subpresheaf.sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presie
 
 theorem Subpresheaf.to_sheafifyLift (f : G.toPresheaf ⟶ F') (h : Presieve.IsSheaf J F') :
     Subpresheaf.homOfLe (G.le_sheafify J) ≫ G.sheafifyLift f h = f := by
-  ext (U s)
+  ext U s
   apply (h _ ((Subpresheaf.homOfLe (G.le_sheafify J)).app U s).prop).isSeparatedFor.ext
   intro V i hi
   have := elementwise_of% f.naturality
@@ -315,7 +315,7 @@ theorem Subpresheaf.to_sheafify_lift_unique (h : Presieve.IsSheaf J F')
     (l₁ l₂ : (G.sheafify J).toPresheaf ⟶ F')
     (e : Subpresheaf.homOfLe (G.le_sheafify J) ≫ l₁ = Subpresheaf.homOfLe (G.le_sheafify J) ≫ l₂) :
     l₁ = l₂ := by
-  ext (U⟨s, hs⟩)
+  ext U ⟨s, hs⟩
   apply (h _ hs).isSeparatedFor.ext
   rintro V i hi
   dsimp at hi
@@ -437,7 +437,7 @@ instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Mono (imageSheafι f) :=
 
 instance {F F' : Sheaf J (Type w)} (f : F ⟶ F') : Epi (toImageSheaf f) := by
   refine' ⟨@fun G' g₁ g₂ e => _⟩
-  ext (U⟨s, hx⟩)
+  ext U ⟨s, hx⟩
   apply ((isSheaf_iff_isSheaf_of_type J _).mp G'.2 _ hx).isSeparatedFor.ext
   rintro V i ⟨y, e'⟩
   change (g₁.val.app _ ≫ G'.val.map _) _ = (g₂.val.app _ ≫ G'.val.map _) _
chore: fix grammar 2/3 (#5002)

Part 2 of #5001

Diff
@@ -161,7 +161,7 @@ def Subpresheaf.sieveOfSection {U : Cᵒᵖ} (s : F.obj U) : Sieve (unop U) wher
     exact G.map _ hi
 #align category_theory.grothendieck_topology.subpresheaf.sieve_of_section CategoryTheory.GrothendieckTopology.Subpresheaf.sieveOfSection
 
-/-- Given a `F`-section `s` on `U` and a subpresheaf `G`, we may define a family of elements in
+/-- Given an `F`-section `s` on `U` and a subpresheaf `G`, we may define a family of elements in
 `G` consisting of the restrictions of `s` -/
 def Subpresheaf.familyOfElementsOfSection {U : Cᵒᵖ} (s : F.obj U) :
     (G.sieveOfSection s).1.FamilyOfElements G.toPresheaf := fun _ i hi => ⟨F.map i.op s, hi⟩
feat: change ConcreteCategory.hasCoeToFun to FunLike (#4693)
Diff
@@ -139,9 +139,9 @@ def Subpresheaf.lift (f : F' ⟶ F) (hf : ∀ U x, f.app U x ∈ G.obj U) : F' 
   naturality := by
     have := elementwise_of% f.naturality
     intros
-    ext
-    simp [this]
-    rfl
+    refine funext fun x => Subtype.ext ?_
+    simp only [toPresheaf_obj, types_comp_apply]
+    exact this _ _
 #align category_theory.grothendieck_topology.subpresheaf.lift CategoryTheory.GrothendieckTopology.Subpresheaf.lift
 
 @[reassoc (attr := simp)]
chore: move category theory tactics to Tactic/CategoryTheory (#4461)
Diff
@@ -11,7 +11,7 @@ Authors: Andrew Yang
 import Mathlib.CategoryTheory.Elementwise
 import Mathlib.CategoryTheory.Adjunction.Evaluation
 import Mathlib.CategoryTheory.Sites.Sheafification
-import Mathlib.Tactic.Elementwise
+import Mathlib.Tactic.CategoryTheory.Elementwise
 
 /-!
 
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -21,17 +21,17 @@ We define the sub(pre)sheaf of a type valued presheaf.
 
 ## Main results
 
-- `category_theory.grothendieck_topology.subpresheaf` :
+- `CategoryTheory.GrothendieckTopology.Subpresheaf` :
   A subpresheaf of a presheaf of types.
-- `category_theory.grothendieck_topology.subpresheaf.sheafify` :
+- `CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify` :
   The sheafification of a subpresheaf as a subpresheaf. Note that this is a sheaf only when the
   whole sheaf is.
-- `category_theory.grothendieck_topology.subpresheaf.sheafify_is_sheaf` :
+- `CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify_isSheaf` :
   The sheafification is a sheaf
-- `category_theory.grothendieck_topology.subpresheaf.sheafify_lift` :
+- `CategoryTheory.GrothendieckTopology.Subpresheaf.sheafifyLift` :
   The descent of a map into a sheaf to the sheafification.
-- `category_theory.grothendieck_topology.image_sheaf` : The image sheaf of a morphism.
-- `category_theory.grothendieck_topology.image_factorization` : The image sheaf as a
+- `CategoryTheory.GrothendieckTopology.imageSheaf` : The image sheaf of a morphism.
+- `CategoryTheory.GrothendieckTopology.imageFactorization` : The image sheaf as a
   `limits.image_factorization`.
 -/
 
feat: port CategoryTheory.Sites.Subsheaf (#3997)

Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: Jujian Zhang <jujian.zhang1998@outlook.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Dependencies 3 + 325

326 files ported (99.1%)
134131 lines ported (99.2%)
Show graph

The unported dependencies are