category_theory.sites.subsheaf
⟷
Mathlib.CategoryTheory.Sites.Subsheaf
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -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 _) _
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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 /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/c89fe2d59ae06402c3f55f978016d1ada444f57e
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -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⟩⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -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
@@ -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 _
@@ -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)⟩
refine
s (#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 refine
s, but maybe the current change is beneficial.
@@ -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]
This PR adds PreservesColimits/PreservesLimits
instances for adjoint functors.
Co-authored-by: Markus Himmel <markus@himmel-villmar.de>
@@ -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"
@@ -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"
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.
@@ -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"
@@ -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"
rcases
, convert
and congrm
(#7725)
Replace rcases(
with rcases (
. Same thing for convert(
and congrm(
. No other change.
@@ -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 :=
And fix some names in comments where this revealed issues
@@ -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`.
-/
@@ -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_ι
@@ -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) :=
@@ -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
@@ -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`. -/
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
@@ -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. -/
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>
@@ -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 _) _
@@ -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⟩
@@ -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)]
@@ -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
/-!
fix-comments.py
on all files.@@ -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`.
-/
The unported dependencies are