topology.sheaves.sheaf_condition.pairwise_intersectionsMathlib.Topology.Sheaves.SheafCondition.PairwiseIntersections

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,12 +3,12 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.Topology.Sheaves.SheafCondition.OpensLeCover
-import Mathbin.CategoryTheory.Limits.Final
-import Mathbin.CategoryTheory.Limits.Preserves.Basic
-import Mathbin.CategoryTheory.Category.Pairwise
-import Mathbin.CategoryTheory.Limits.Constructions.BinaryProducts
-import Mathbin.Algebra.Category.Ring.Constructions
+import Topology.Sheaves.SheafCondition.OpensLeCover
+import CategoryTheory.Limits.Final
+import CategoryTheory.Limits.Preserves.Basic
+import CategoryTheory.Category.Pairwise
+import CategoryTheory.Limits.Constructions.BinaryProducts
+import Algebra.Category.Ring.Constructions
 
 #align_import topology.sheaves.sheaf_condition.pairwise_intersections from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
 
Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module topology.sheaves.sheaf_condition.pairwise_intersections
-! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.Sheaves.SheafCondition.OpensLeCover
 import Mathbin.CategoryTheory.Limits.Final
@@ -15,6 +10,8 @@ import Mathbin.CategoryTheory.Category.Pairwise
 import Mathbin.CategoryTheory.Limits.Constructions.BinaryProducts
 import Mathbin.Algebra.Category.Ring.Constructions
 
+#align_import topology.sheaves.sheaf_condition.pairwise_intersections from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
+
 /-!
 # Equivalent formulations of the sheaf condition
 
Diff
@@ -104,6 +104,7 @@ def pairwiseToOpensLeCoverObj : Pairwise ι → OpensLeCover U
 
 open CategoryTheory.Pairwise.Hom
 
+#print TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMap /-
 /-- Implementation detail:
 the morphism level of `pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U`
 -/
@@ -114,7 +115,9 @@ def pairwiseToOpensLeCoverMap :
   | _, _, left i j => homOfLE inf_le_left
   | _, _, right i j => homOfLE inf_le_right
 #align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMap
+-/
 
+#print TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCover /-
 /-- The category of single and double intersections of the `U i` maps into the category
 of open sets below some `U i`.
 -/
@@ -124,6 +127,7 @@ def pairwiseToOpensLeCover : Pairwise ι ⥤ OpensLeCover U
   obj := pairwiseToOpensLeCoverObj U
   map V W i := pairwiseToOpensLeCoverMap U i
 #align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCover
+-/
 
 instance (V : OpensLeCover U) : Nonempty (StructuredArrow V (pairwiseToOpensLeCover U)) :=
   ⟨@StructuredArrow.mk _ _ _ _ _ (single V.index) _ V.hom_to_index⟩
@@ -224,6 +228,7 @@ instance : Functor.Final (pairwiseToOpensLeCover U) :=
                         right := left i' j' }⟩)
                   List.Chain.nil)))⟩
 
+#print TopCat.Presheaf.SheafCondition.pairwiseDiagramIso /-
 /-- The diagram in `opens X` indexed by pairwise intersections from `U` is isomorphic
 (in fact, equal) to the diagram factored through `opens_le_cover U`.
 -/
@@ -232,7 +237,9 @@ def pairwiseDiagramIso : Pairwise.diagram U ≅ pairwiseToOpensLeCover U ⋙ ful
   Hom := { app := by rintro (i | ⟨i, j⟩) <;> exact 𝟙 _ }
   inv := { app := by rintro (i | ⟨i, j⟩) <;> exact 𝟙 _ }
 #align Top.presheaf.sheaf_condition.pairwise_diagram_iso TopCat.Presheaf.SheafCondition.pairwiseDiagramIso
+-/
 
+#print TopCat.Presheaf.SheafCondition.pairwiseCoconeIso /-
 /--
 The cocone `pairwise.cocone U` with cocone point `supr U` over `pairwise.diagram U` is isomorphic
 to the cocone `opens_le_cover_cocone U` (with the same cocone point)
@@ -244,6 +251,7 @@ def pairwiseCoconeIso :
         ((opensLeCoverCocone U).op.whisker (pairwiseToOpensLeCover U).op) :=
   Cones.ext (Iso.refl _) (by tidy)
 #align Top.presheaf.sheaf_condition.pairwise_cocone_iso TopCat.Presheaf.SheafCondition.pairwiseCoconeIso
+-/
 
 end SheafCondition
 
@@ -319,6 +327,7 @@ variable (F : X.Sheaf C) (U V : Opens X)
 
 open CategoryTheory.Limits
 
+#print TopCat.Sheaf.interUnionPullbackCone /-
 /-- For a sheaf `F`, `F(U ⊔ V)` is the pullback of `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)`.
 This is the pullback cone. -/
 def interUnionPullbackCone :
@@ -327,28 +336,36 @@ def interUnionPullbackCone :
   PullbackCone.mk (F.1.map (homOfLE le_sup_left).op) (F.1.map (homOfLE le_sup_right).op)
     (by rw [← F.1.map_comp, ← F.1.map_comp]; congr)
 #align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackCone
+-/
 
+#print TopCat.Sheaf.interUnionPullbackCone_pt /-
 @[simp]
 theorem interUnionPullbackCone_pt : (interUnionPullbackCone F U V).pt = F.1.obj (op <| U ⊔ V) :=
   rfl
 #align Top.sheaf.inter_union_pullback_cone_X TopCat.Sheaf.interUnionPullbackCone_pt
+-/
 
+#print TopCat.Sheaf.interUnionPullbackCone_fst /-
 @[simp]
 theorem interUnionPullbackCone_fst :
     (interUnionPullbackCone F U V).fst = F.1.map (homOfLE le_sup_left).op :=
   rfl
 #align Top.sheaf.inter_union_pullback_cone_fst TopCat.Sheaf.interUnionPullbackCone_fst
+-/
 
+#print TopCat.Sheaf.interUnionPullbackCone_snd /-
 @[simp]
 theorem interUnionPullbackCone_snd :
     (interUnionPullbackCone F U V).snd = F.1.map (homOfLE le_sup_right).op :=
   rfl
 #align Top.sheaf.inter_union_pullback_cone_snd TopCat.Sheaf.interUnionPullbackCone_snd
+-/
 
 variable
   (s :
     PullbackCone (F.1.map (homOfLE inf_le_left : U ⊓ V ⟶ _).op) (F.1.map (homOfLE inf_le_right).op))
 
+#print TopCat.Sheaf.interUnionPullbackConeLift /-
 /-- (Implementation).
 Every cone over `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)` factors through `F(U ⊔ V)`.
 -/
@@ -386,7 +403,9 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
     erw [← F.1.map_comp, ← F.1.map_comp]
     convert s.condition.symm
 #align Top.sheaf.inter_union_pullback_cone_lift TopCat.Sheaf.interUnionPullbackConeLift
+-/
 
+#print TopCat.Sheaf.interUnionPullbackConeLift_left /-
 theorem interUnionPullbackConeLift_left :
     interUnionPullbackConeLift F U V s ≫ F.1.map (homOfLE le_sup_left).op = s.fst :=
   by
@@ -395,7 +414,9 @@ theorem interUnionPullbackConeLift_left :
     (F.presheaf.is_sheaf_iff_is_sheaf_pairwise_intersections.mp F.2 _).some.fac _
       (op <| pairwise.single (ULift.up walking_pair.left))
 #align Top.sheaf.inter_union_pullback_cone_lift_left TopCat.Sheaf.interUnionPullbackConeLift_left
+-/
 
+#print TopCat.Sheaf.interUnionPullbackConeLift_right /-
 theorem interUnionPullbackConeLift_right :
     interUnionPullbackConeLift F U V s ≫ F.1.map (homOfLE le_sup_right).op = s.snd :=
   by
@@ -404,7 +425,9 @@ theorem interUnionPullbackConeLift_right :
     (F.presheaf.is_sheaf_iff_is_sheaf_pairwise_intersections.mp F.2 _).some.fac _
       (op <| pairwise.single (ULift.up walking_pair.right))
 #align Top.sheaf.inter_union_pullback_cone_lift_right TopCat.Sheaf.interUnionPullbackConeLift_right
+-/
 
+#print TopCat.Sheaf.isLimitPullbackCone /-
 /-- For a sheaf `F`, `F(U ⊔ V)` is the pullback of `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)`. -/
 def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
   by
@@ -445,7 +468,9 @@ def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
     · convert h₂
       apply inter_union_pullback_cone_lift_right
 #align Top.sheaf.is_limit_pullback_cone TopCat.Sheaf.isLimitPullbackCone
+-/
 
+#print TopCat.Sheaf.isProductOfDisjoint /-
 /-- If `U, V` are disjoint, then `F(U ⊔ V) = F(U) × F(V)`. -/
 def isProductOfDisjoint (h : U ⊓ V = ⊥) :
     IsLimit
@@ -453,13 +478,17 @@ def isProductOfDisjoint (h : U ⊓ V = ⊥) :
         (F.1.map (homOfLE le_sup_right : _ ⟶ U ⊔ V).op)) :=
   isProductOfIsTerminalIsPullback _ _ _ _ (F.isTerminalOfEqEmpty h) (isLimitPullbackCone F U V)
 #align Top.sheaf.is_product_of_disjoint TopCat.Sheaf.isProductOfDisjoint
+-/
 
+#print TopCat.Sheaf.objSupIsoProdEqLocus /-
 /-- `F(U ⊔ V)` is isomorphic to the `eq_locus` of the two maps `F(U) × F(V) ⟶ F(U ⊓ V)`. -/
 def objSupIsoProdEqLocus {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) :
     F.1.obj (op <| U ⊔ V) ≅ CommRingCat.of (RingHom.eqLocus _ _) :=
   (F.isLimitPullbackCone U V).conePointUniqueUpToIso (CommRingCat.pullbackConeIsLimit _ _)
 #align Top.sheaf.obj_sup_iso_prod_eq_locus TopCat.Sheaf.objSupIsoProdEqLocus
+-/
 
+#print TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst /-
 theorem objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     ((F.objSupIsoProdEqLocus U V).Hom x).1.fst = F.1.map (homOfLE le_sup_left).op x :=
   ConcreteCategory.congr_hom
@@ -467,7 +496,9 @@ theorem objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V
       (CommRingCat.pullbackConeIsLimit _ _) WalkingCospan.left)
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst
+-/
 
+#print TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd /-
 theorem objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     ((F.objSupIsoProdEqLocus U V).Hom x).1.snd = F.1.map (homOfLE le_sup_right).op x :=
   ConcreteCategory.congr_hom
@@ -475,7 +506,9 @@ theorem objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V
       (CommRingCat.pullbackConeIsLimit _ _) WalkingCospan.right)
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd
+-/
 
+#print TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst /-
 theorem objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     F.1.map (homOfLE le_sup_left).op ((F.objSupIsoProdEqLocus U V).inv x) = x.1.1 :=
   ConcreteCategory.congr_hom
@@ -483,7 +516,9 @@ theorem objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V
       (CommRingCat.pullbackConeIsLimit _ _) WalkingCospan.left)
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst
+-/
 
+#print TopCat.Sheaf.objSupIsoProdEqLocus_inv_snd /-
 theorem objSupIsoProdEqLocus_inv_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     F.1.map (homOfLE le_sup_right).op ((F.objSupIsoProdEqLocus U V).inv x) = x.1.2 :=
   ConcreteCategory.congr_hom
@@ -491,6 +526,7 @@ theorem objSupIsoProdEqLocus_inv_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V
       (CommRingCat.pullbackConeIsLimit _ _) WalkingCospan.right)
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_snd TopCat.Sheaf.objSupIsoProdEqLocus_inv_snd
+-/
 
 end TopCat.Sheaf
 
Diff
@@ -280,7 +280,6 @@ theorem isSheafOpensLeCover_iff_isSheafPairwiseIntersections :
           (IsLimit.equivIsoLimit (Functor.mapConePostcomposeEquivalenceFunctor _).symm)
         _ ≃ IsLimit (F.mapCone (Pairwise.cocone U).op) :=
           IsLimit.equivIsoLimit ((Cones.functoriality _ _).mapIso (pairwiseCoconeIso U : _).symm)
-        
 #align Top.presheaf.is_sheaf_opens_le_cover_iff_is_sheaf_pairwise_intersections TopCat.Presheaf.isSheafOpensLeCover_iff_isSheafPairwiseIntersections
 -/
 
Diff
@@ -326,7 +326,7 @@ def interUnionPullbackCone :
     PullbackCone (F.1.map (homOfLE inf_le_left : U ⊓ V ⟶ _).op)
       (F.1.map (homOfLE inf_le_right).op) :=
   PullbackCone.mk (F.1.map (homOfLE le_sup_left).op) (F.1.map (homOfLE le_sup_right).op)
-    (by rw [← F.1.map_comp, ← F.1.map_comp]; congr )
+    (by rw [← F.1.map_comp, ← F.1.map_comp]; congr)
 #align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackCone
 
 @[simp]
@@ -361,9 +361,9 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
     rw [opens.coe_supr, Set.mem_iUnion]
     constructor
     · rintro (h | h)
-      exacts[⟨⟨walking_pair.left⟩, h⟩, ⟨⟨walking_pair.right⟩, h⟩]
+      exacts [⟨⟨walking_pair.left⟩, h⟩, ⟨⟨walking_pair.right⟩, h⟩]
     · rintro ⟨⟨_ | _⟩, h⟩
-      exacts[Or.inl h, Or.inr h]
+      exacts [Or.inl h, Or.inr h]
   refine'
     (F.presheaf.is_sheaf_iff_is_sheaf_pairwise_intersections.mp F.2 ι).some.lift
         ⟨s.X,
@@ -372,7 +372,7 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
       F.1.map (eq_to_hom hι).op
   · apply Opposite.rec'
     rintro ((_ | _) | (_ | _))
-    exacts[s.fst, s.snd, s.fst ≫ F.1.map (hom_of_le inf_le_left).op,
+    exacts [s.fst, s.snd, s.fst ≫ F.1.map (hom_of_le inf_le_left).op,
       s.snd ≫ F.1.map (hom_of_le inf_le_left).op]
   rintro i j f
   induction i using Opposite.rec'
@@ -415,9 +415,9 @@ def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
     rw [opens.coe_supr, Set.mem_iUnion]
     constructor
     · rintro (h | h)
-      exacts[⟨⟨walking_pair.left⟩, h⟩, ⟨⟨walking_pair.right⟩, h⟩]
+      exacts [⟨⟨walking_pair.left⟩, h⟩, ⟨⟨walking_pair.right⟩, h⟩]
     · rintro ⟨⟨_ | _⟩, h⟩
-      exacts[Or.inl h, Or.inr h]
+      exacts [Or.inl h, Or.inr h]
   apply pullback_cone.is_limit_aux'
   intro s
   use inter_union_pullback_cone_lift F U V s
Diff
@@ -104,12 +104,6 @@ def pairwiseToOpensLeCoverObj : Pairwise ι → OpensLeCover U
 
 open CategoryTheory.Pairwise.Hom
 
-/- warning: Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map -> TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMap is a dubious translation:
-lean 3 declaration is
-  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {V : CategoryTheory.Pairwise.{u1} ι} {W : CategoryTheory.Pairwise.{u1} ι}, (Quiver.Hom.{succ u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.CategoryTheory.category.{u1} ι))) V W) -> (Quiver.Hom.{succ u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.OpensLeCover.category.{u1} X ι U))) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U V) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U W))
-but is expected to have type
-  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {V : CategoryTheory.Pairwise.{u1} ι} {W : CategoryTheory.Pairwise.{u1} ι}, (Quiver.Hom.{succ u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.instCategoryPairwise.{u1} ι))) V W) -> (Quiver.Hom.{succ u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.instCategoryOpensLeCover.{u1} X ι U))) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U V) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U W))
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMapₓ'. -/
 /-- Implementation detail:
 the morphism level of `pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U`
 -/
@@ -121,12 +115,6 @@ def pairwiseToOpensLeCoverMap :
   | _, _, right i j => homOfLE inf_le_right
 #align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMap
 
-/- warning: Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover -> TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCover is a dubious translation:
-lean 3 declaration is
-  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))), CategoryTheory.Functor.{u1, u1, u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.CategoryTheory.category.{u1} ι) (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.OpensLeCover.category.{u1} X ι U)
-but is expected to have type
-  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))), CategoryTheory.Functor.{u1, u1, u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.instCategoryPairwise.{u1} ι) (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.instCategoryOpensLeCover.{u1} X ι U)
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverₓ'. -/
 /-- The category of single and double intersections of the `U i` maps into the category
 of open sets below some `U i`.
 -/
@@ -236,9 +224,6 @@ instance : Functor.Final (pairwiseToOpensLeCover U) :=
                         right := left i' j' }⟩)
                   List.Chain.nil)))⟩
 
-/- warning: Top.presheaf.sheaf_condition.pairwise_diagram_iso -> TopCat.Presheaf.SheafCondition.pairwiseDiagramIso is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_diagram_iso TopCat.Presheaf.SheafCondition.pairwiseDiagramIsoₓ'. -/
 /-- The diagram in `opens X` indexed by pairwise intersections from `U` is isomorphic
 (in fact, equal) to the diagram factored through `opens_le_cover U`.
 -/
@@ -248,9 +233,6 @@ def pairwiseDiagramIso : Pairwise.diagram U ≅ pairwiseToOpensLeCover U ⋙ ful
   inv := { app := by rintro (i | ⟨i, j⟩) <;> exact 𝟙 _ }
 #align Top.presheaf.sheaf_condition.pairwise_diagram_iso TopCat.Presheaf.SheafCondition.pairwiseDiagramIso
 
-/- warning: Top.presheaf.sheaf_condition.pairwise_cocone_iso -> TopCat.Presheaf.SheafCondition.pairwiseCoconeIso is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_cocone_iso TopCat.Presheaf.SheafCondition.pairwiseCoconeIsoₓ'. -/
 /--
 The cocone `pairwise.cocone U` with cocone point `supr U` over `pairwise.diagram U` is isomorphic
 to the cocone `opens_le_cover_cocone U` (with the same cocone point)
@@ -338,9 +320,6 @@ variable (F : X.Sheaf C) (U V : Opens X)
 
 open CategoryTheory.Limits
 
-/- warning: Top.sheaf.inter_union_pullback_cone -> TopCat.Sheaf.interUnionPullbackCone is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackConeₓ'. -/
 /-- For a sheaf `F`, `F(U ⊔ V)` is the pullback of `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)`.
 This is the pullback cone. -/
 def interUnionPullbackCone :
@@ -350,26 +329,17 @@ def interUnionPullbackCone :
     (by rw [← F.1.map_comp, ← F.1.map_comp]; congr )
 #align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackCone
 
-/- warning: Top.sheaf.inter_union_pullback_cone_X -> TopCat.Sheaf.interUnionPullbackCone_pt is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_X TopCat.Sheaf.interUnionPullbackCone_ptₓ'. -/
 @[simp]
 theorem interUnionPullbackCone_pt : (interUnionPullbackCone F U V).pt = F.1.obj (op <| U ⊔ V) :=
   rfl
 #align Top.sheaf.inter_union_pullback_cone_X TopCat.Sheaf.interUnionPullbackCone_pt
 
-/- warning: Top.sheaf.inter_union_pullback_cone_fst -> TopCat.Sheaf.interUnionPullbackCone_fst is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_fst TopCat.Sheaf.interUnionPullbackCone_fstₓ'. -/
 @[simp]
 theorem interUnionPullbackCone_fst :
     (interUnionPullbackCone F U V).fst = F.1.map (homOfLE le_sup_left).op :=
   rfl
 #align Top.sheaf.inter_union_pullback_cone_fst TopCat.Sheaf.interUnionPullbackCone_fst
 
-/- warning: Top.sheaf.inter_union_pullback_cone_snd -> TopCat.Sheaf.interUnionPullbackCone_snd is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_snd TopCat.Sheaf.interUnionPullbackCone_sndₓ'. -/
 @[simp]
 theorem interUnionPullbackCone_snd :
     (interUnionPullbackCone F U V).snd = F.1.map (homOfLE le_sup_right).op :=
@@ -380,9 +350,6 @@ variable
   (s :
     PullbackCone (F.1.map (homOfLE inf_le_left : U ⊓ V ⟶ _).op) (F.1.map (homOfLE inf_le_right).op))
 
-/- warning: Top.sheaf.inter_union_pullback_cone_lift -> TopCat.Sheaf.interUnionPullbackConeLift is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_lift TopCat.Sheaf.interUnionPullbackConeLiftₓ'. -/
 /-- (Implementation).
 Every cone over `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)` factors through `F(U ⊔ V)`.
 -/
@@ -421,9 +388,6 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
     convert s.condition.symm
 #align Top.sheaf.inter_union_pullback_cone_lift TopCat.Sheaf.interUnionPullbackConeLift
 
-/- warning: Top.sheaf.inter_union_pullback_cone_lift_left -> TopCat.Sheaf.interUnionPullbackConeLift_left is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_lift_left TopCat.Sheaf.interUnionPullbackConeLift_leftₓ'. -/
 theorem interUnionPullbackConeLift_left :
     interUnionPullbackConeLift F U V s ≫ F.1.map (homOfLE le_sup_left).op = s.fst :=
   by
@@ -433,9 +397,6 @@ theorem interUnionPullbackConeLift_left :
       (op <| pairwise.single (ULift.up walking_pair.left))
 #align Top.sheaf.inter_union_pullback_cone_lift_left TopCat.Sheaf.interUnionPullbackConeLift_left
 
-/- warning: Top.sheaf.inter_union_pullback_cone_lift_right -> TopCat.Sheaf.interUnionPullbackConeLift_right is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_lift_right TopCat.Sheaf.interUnionPullbackConeLift_rightₓ'. -/
 theorem interUnionPullbackConeLift_right :
     interUnionPullbackConeLift F U V s ≫ F.1.map (homOfLE le_sup_right).op = s.snd :=
   by
@@ -445,9 +406,6 @@ theorem interUnionPullbackConeLift_right :
       (op <| pairwise.single (ULift.up walking_pair.right))
 #align Top.sheaf.inter_union_pullback_cone_lift_right TopCat.Sheaf.interUnionPullbackConeLift_right
 
-/- warning: Top.sheaf.is_limit_pullback_cone -> TopCat.Sheaf.isLimitPullbackCone is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.is_limit_pullback_cone TopCat.Sheaf.isLimitPullbackConeₓ'. -/
 /-- For a sheaf `F`, `F(U ⊔ V)` is the pullback of `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)`. -/
 def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
   by
@@ -489,9 +447,6 @@ def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
       apply inter_union_pullback_cone_lift_right
 #align Top.sheaf.is_limit_pullback_cone TopCat.Sheaf.isLimitPullbackCone
 
-/- warning: Top.sheaf.is_product_of_disjoint -> TopCat.Sheaf.isProductOfDisjoint is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.is_product_of_disjoint TopCat.Sheaf.isProductOfDisjointₓ'. -/
 /-- If `U, V` are disjoint, then `F(U ⊔ V) = F(U) × F(V)`. -/
 def isProductOfDisjoint (h : U ⊓ V = ⊥) :
     IsLimit
@@ -500,18 +455,12 @@ def isProductOfDisjoint (h : U ⊓ V = ⊥) :
   isProductOfIsTerminalIsPullback _ _ _ _ (F.isTerminalOfEqEmpty h) (isLimitPullbackCone F U V)
 #align Top.sheaf.is_product_of_disjoint TopCat.Sheaf.isProductOfDisjoint
 
-/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus -> TopCat.Sheaf.objSupIsoProdEqLocus is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus TopCat.Sheaf.objSupIsoProdEqLocusₓ'. -/
 /-- `F(U ⊔ V)` is isomorphic to the `eq_locus` of the two maps `F(U) × F(V) ⟶ F(U ⊓ V)`. -/
 def objSupIsoProdEqLocus {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) :
     F.1.obj (op <| U ⊔ V) ≅ CommRingCat.of (RingHom.eqLocus _ _) :=
   (F.isLimitPullbackCone U V).conePointUniqueUpToIso (CommRingCat.pullbackConeIsLimit _ _)
 #align Top.sheaf.obj_sup_iso_prod_eq_locus TopCat.Sheaf.objSupIsoProdEqLocus
 
-/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst -> TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst TopCat.Sheaf.objSupIsoProdEqLocus_hom_fstₓ'. -/
 theorem objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     ((F.objSupIsoProdEqLocus U V).Hom x).1.fst = F.1.map (homOfLE le_sup_left).op x :=
   ConcreteCategory.congr_hom
@@ -520,9 +469,6 @@ theorem objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst
 
-/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd -> TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd TopCat.Sheaf.objSupIsoProdEqLocus_hom_sndₓ'. -/
 theorem objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     ((F.objSupIsoProdEqLocus U V).Hom x).1.snd = F.1.map (homOfLE le_sup_right).op x :=
   ConcreteCategory.congr_hom
@@ -531,9 +477,6 @@ theorem objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd
 
-/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst -> TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst TopCat.Sheaf.objSupIsoProdEqLocus_inv_fstₓ'. -/
 theorem objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     F.1.map (homOfLE le_sup_left).op ((F.objSupIsoProdEqLocus U V).inv x) = x.1.1 :=
   ConcreteCategory.congr_hom
@@ -542,9 +485,6 @@ theorem objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst
 
-/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_inv_snd -> TopCat.Sheaf.objSupIsoProdEqLocus_inv_snd is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_snd TopCat.Sheaf.objSupIsoProdEqLocus_inv_sndₓ'. -/
 theorem objSupIsoProdEqLocus_inv_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     F.1.map (homOfLE le_sup_right).op ((F.objSupIsoProdEqLocus U V).inv x) = x.1.2 :=
   ConcreteCategory.congr_hom
Diff
@@ -347,9 +347,7 @@ def interUnionPullbackCone :
     PullbackCone (F.1.map (homOfLE inf_le_left : U ⊓ V ⟶ _).op)
       (F.1.map (homOfLE inf_le_right).op) :=
   PullbackCone.mk (F.1.map (homOfLE le_sup_left).op) (F.1.map (homOfLE le_sup_right).op)
-    (by
-      rw [← F.1.map_comp, ← F.1.map_comp]
-      congr )
+    (by rw [← F.1.map_comp, ← F.1.map_comp]; congr )
 #align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackCone
 
 /- warning: Top.sheaf.inter_union_pullback_cone_X -> TopCat.Sheaf.interUnionPullbackCone_pt is a dubious translation:
@@ -412,10 +410,7 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
   rintro i j f
   induction i using Opposite.rec'
   induction j using Opposite.rec'
-  let g : j ⟶ i := f.unop
-  have : f = g.op := rfl
-  clear_value g
-  subst this
+  let g : j ⟶ i := f.unop; have : f = g.op := rfl; clear_value g; subst this
   rcases i with (⟨⟨_ | _⟩⟩ | ⟨⟨_ | _⟩, ⟨_⟩⟩) <;> rcases j with (⟨⟨_ | _⟩⟩ | ⟨⟨_ | _⟩, ⟨_⟩⟩) <;>
         rcases g with ⟨⟩ <;>
       dsimp <;>
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module topology.sheaves.sheaf_condition.pairwise_intersections
-! leanprover-community/mathlib commit 8a318021995877a44630c898d0b2bc376fceef3b
+! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -18,6 +18,9 @@ import Mathbin.Algebra.Category.Ring.Constructions
 /-!
 # Equivalent formulations of the sheaf condition
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 We give an equivalent formulation of the sheaf condition.
 
 Given any indexed type `ι`, we define `overlap ι`,
@@ -53,6 +56,7 @@ namespace TopCat.Presheaf
 
 section
 
+#print TopCat.Presheaf.IsSheafPairwiseIntersections /-
 /-- An alternative formulation of the sheaf condition
 (which we prove equivalent to the usual one below as
 `is_sheaf_iff_is_sheaf_pairwise_intersections`).
@@ -63,7 +67,9 @@ A presheaf is a sheaf if `F` sends the cone `(pairwise.cocone U).op` to a limit
 def IsSheafPairwiseIntersections (F : Presheaf C X) : Prop :=
   ∀ ⦃ι : Type w⦄ (U : ι → Opens X), Nonempty (IsLimit (F.mapCone (Pairwise.cocone U).op))
 #align Top.presheaf.is_sheaf_pairwise_intersections TopCat.Presheaf.IsSheafPairwiseIntersections
+-/
 
+#print TopCat.Presheaf.IsSheafPreservesLimitPairwiseIntersections /-
 /-- An alternative formulation of the sheaf condition
 (which we prove equivalent to the usual one below as
 `is_sheaf_iff_is_sheaf_preserves_limit_pairwise_intersections`).
@@ -75,6 +81,7 @@ A presheaf is a sheaf if `F` preserves the limit of `pairwise.diagram U`.
 def IsSheafPreservesLimitPairwiseIntersections (F : Presheaf C X) : Prop :=
   ∀ ⦃ι : Type w⦄ (U : ι → Opens X), Nonempty (PreservesLimit (Pairwise.diagram U).op F)
 #align Top.presheaf.is_sheaf_preserves_limit_pairwise_intersections TopCat.Presheaf.IsSheafPreservesLimitPairwiseIntersections
+-/
 
 end
 
@@ -84,6 +91,7 @@ variable {ι : Type w} (U : ι → Opens X)
 
 open CategoryTheory.Pairwise
 
+#print TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj /-
 /-- Implementation detail:
 the object level of `pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U`
 -/
@@ -92,9 +100,16 @@ def pairwiseToOpensLeCoverObj : Pairwise ι → OpensLeCover U
   | single i => ⟨U i, ⟨i, le_rfl⟩⟩
   | pair i j => ⟨U i ⊓ U j, ⟨i, inf_le_left⟩⟩
 #align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_obj TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj
+-/
 
 open CategoryTheory.Pairwise.Hom
 
+/- warning: Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map -> TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMap is a dubious translation:
+lean 3 declaration is
+  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))) {V : CategoryTheory.Pairwise.{u1} ι} {W : CategoryTheory.Pairwise.{u1} ι}, (Quiver.Hom.{succ u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.CategoryTheory.category.{u1} ι))) V W) -> (Quiver.Hom.{succ u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.OpensLeCover.category.{u1} X ι U))) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U V) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U W))
+but is expected to have type
+  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))) {V : CategoryTheory.Pairwise.{u1} ι} {W : CategoryTheory.Pairwise.{u1} ι}, (Quiver.Hom.{succ u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.instCategoryPairwise.{u1} ι))) V W) -> (Quiver.Hom.{succ u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.CategoryStruct.toQuiver.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (CategoryTheory.Category.toCategoryStruct.{u1, u1} (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.instCategoryOpensLeCover.{u1} X ι U))) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U V) (TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverObj.{u1} X ι U W))
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMapₓ'. -/
 /-- Implementation detail:
 the morphism level of `pairwise_to_opens_le_cover : pairwise ι ⥤ opens_le_cover U`
 -/
@@ -106,6 +121,12 @@ def pairwiseToOpensLeCoverMap :
   | _, _, right i j => homOfLE inf_le_right
 #align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover_map TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverMap
 
+/- warning: Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover -> TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCover is a dubious translation:
+lean 3 declaration is
+  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (coeSort.{succ (succ u1), succ (succ u1)} TopCat.{u1} Type.{u1} TopCat.hasCoeToSort.{u1} X) (TopCat.topologicalSpace.{u1} X))), CategoryTheory.Functor.{u1, u1, u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.CategoryTheory.category.{u1} ι) (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.OpensLeCover.category.{u1} X ι U)
+but is expected to have type
+  forall {X : TopCat.{u1}} {ι : Type.{u1}} (U : ι -> (TopologicalSpace.Opens.{u1} (CategoryTheory.Bundled.α.{u1, u1} TopologicalSpace.{u1} X) (TopCat.topologicalSpace_coe.{u1} X))), CategoryTheory.Functor.{u1, u1, u1, u1} (CategoryTheory.Pairwise.{u1} ι) (CategoryTheory.Pairwise.instCategoryPairwise.{u1} ι) (TopCat.Presheaf.SheafCondition.OpensLeCover.{u1} X ι U) (TopCat.Presheaf.SheafCondition.instCategoryOpensLeCover.{u1} X ι U)
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCoverₓ'. -/
 /-- The category of single and double intersections of the `U i` maps into the category
 of open sets below some `U i`.
 -/
@@ -215,6 +236,9 @@ instance : Functor.Final (pairwiseToOpensLeCover U) :=
                         right := left i' j' }⟩)
                   List.Chain.nil)))⟩
 
+/- warning: Top.presheaf.sheaf_condition.pairwise_diagram_iso -> TopCat.Presheaf.SheafCondition.pairwiseDiagramIso is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_diagram_iso TopCat.Presheaf.SheafCondition.pairwiseDiagramIsoₓ'. -/
 /-- The diagram in `opens X` indexed by pairwise intersections from `U` is isomorphic
 (in fact, equal) to the diagram factored through `opens_le_cover U`.
 -/
@@ -224,6 +248,9 @@ def pairwiseDiagramIso : Pairwise.diagram U ≅ pairwiseToOpensLeCover U ⋙ ful
   inv := { app := by rintro (i | ⟨i, j⟩) <;> exact 𝟙 _ }
 #align Top.presheaf.sheaf_condition.pairwise_diagram_iso TopCat.Presheaf.SheafCondition.pairwiseDiagramIso
 
+/- warning: Top.presheaf.sheaf_condition.pairwise_cocone_iso -> TopCat.Presheaf.SheafCondition.pairwiseCoconeIso is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.presheaf.sheaf_condition.pairwise_cocone_iso TopCat.Presheaf.SheafCondition.pairwiseCoconeIsoₓ'. -/
 /--
 The cocone `pairwise.cocone U` with cocone point `supr U` over `pairwise.diagram U` is isomorphic
 to the cocone `opens_le_cover_cocone U` (with the same cocone point)
@@ -242,6 +269,7 @@ open SheafCondition
 
 variable (F : Presheaf C X)
 
+#print TopCat.Presheaf.isSheafOpensLeCover_iff_isSheafPairwiseIntersections /-
 /-- The sheaf condition
 in terms of a limit diagram over all `{ V : opens X // ∃ i, V ≤ U i }`
 is equivalent to the reformulation
@@ -272,7 +300,9 @@ theorem isSheafOpensLeCover_iff_isSheafPairwiseIntersections :
           IsLimit.equivIsoLimit ((Cones.functoriality _ _).mapIso (pairwiseCoconeIso U : _).symm)
         
 #align Top.presheaf.is_sheaf_opens_le_cover_iff_is_sheaf_pairwise_intersections TopCat.Presheaf.isSheafOpensLeCover_iff_isSheafPairwiseIntersections
+-/
 
+#print TopCat.Presheaf.isSheaf_iff_isSheafPairwiseIntersections /-
 /-- The sheaf condition in terms of an equalizer diagram is equivalent
 to the reformulation in terms of a limit diagram over `U i` and `U i ⊓ U j`.
 -/
@@ -280,7 +310,9 @@ theorem isSheaf_iff_isSheafPairwiseIntersections : F.IsSheaf ↔ F.IsSheafPairwi
   rw [is_sheaf_iff_is_sheaf_opens_le_cover,
     is_sheaf_opens_le_cover_iff_is_sheaf_pairwise_intersections]
 #align Top.presheaf.is_sheaf_iff_is_sheaf_pairwise_intersections TopCat.Presheaf.isSheaf_iff_isSheafPairwiseIntersections
+-/
 
+#print TopCat.Presheaf.isSheaf_iff_isSheafPreservesLimitPairwiseIntersections /-
 /-- The sheaf condition in terms of an equalizer diagram is equivalent
 to the reformulation in terms of the presheaf preserving the limit of the diagram
 consisting of the `U i` and `U i ⊓ U j`.
@@ -296,6 +328,7 @@ theorem isSheaf_iff_isSheafPreservesLimitPairwiseIntersections :
     haveI := (h U).some
     exact ⟨preserves_limit.preserves (pairwise.cocone_is_colimit U).op⟩
 #align Top.presheaf.is_sheaf_iff_is_sheaf_preserves_limit_pairwise_intersections TopCat.Presheaf.isSheaf_iff_isSheafPreservesLimitPairwiseIntersections
+-/
 
 end TopCat.Presheaf
 
@@ -305,6 +338,9 @@ variable (F : X.Sheaf C) (U V : Opens X)
 
 open CategoryTheory.Limits
 
+/- warning: Top.sheaf.inter_union_pullback_cone -> TopCat.Sheaf.interUnionPullbackCone is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackConeₓ'. -/
 /-- For a sheaf `F`, `F(U ⊔ V)` is the pullback of `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)`.
 This is the pullback cone. -/
 def interUnionPullbackCone :
@@ -316,17 +352,26 @@ def interUnionPullbackCone :
       congr )
 #align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackCone
 
+/- warning: Top.sheaf.inter_union_pullback_cone_X -> TopCat.Sheaf.interUnionPullbackCone_pt is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_X TopCat.Sheaf.interUnionPullbackCone_ptₓ'. -/
 @[simp]
 theorem interUnionPullbackCone_pt : (interUnionPullbackCone F U V).pt = F.1.obj (op <| U ⊔ V) :=
   rfl
 #align Top.sheaf.inter_union_pullback_cone_X TopCat.Sheaf.interUnionPullbackCone_pt
 
+/- warning: Top.sheaf.inter_union_pullback_cone_fst -> TopCat.Sheaf.interUnionPullbackCone_fst is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_fst TopCat.Sheaf.interUnionPullbackCone_fstₓ'. -/
 @[simp]
 theorem interUnionPullbackCone_fst :
     (interUnionPullbackCone F U V).fst = F.1.map (homOfLE le_sup_left).op :=
   rfl
 #align Top.sheaf.inter_union_pullback_cone_fst TopCat.Sheaf.interUnionPullbackCone_fst
 
+/- warning: Top.sheaf.inter_union_pullback_cone_snd -> TopCat.Sheaf.interUnionPullbackCone_snd is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_snd TopCat.Sheaf.interUnionPullbackCone_sndₓ'. -/
 @[simp]
 theorem interUnionPullbackCone_snd :
     (interUnionPullbackCone F U V).snd = F.1.map (homOfLE le_sup_right).op :=
@@ -337,6 +382,9 @@ variable
   (s :
     PullbackCone (F.1.map (homOfLE inf_le_left : U ⊓ V ⟶ _).op) (F.1.map (homOfLE inf_le_right).op))
 
+/- warning: Top.sheaf.inter_union_pullback_cone_lift -> TopCat.Sheaf.interUnionPullbackConeLift is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_lift TopCat.Sheaf.interUnionPullbackConeLiftₓ'. -/
 /-- (Implementation).
 Every cone over `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)` factors through `F(U ⊔ V)`.
 -/
@@ -378,6 +426,9 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
     convert s.condition.symm
 #align Top.sheaf.inter_union_pullback_cone_lift TopCat.Sheaf.interUnionPullbackConeLift
 
+/- warning: Top.sheaf.inter_union_pullback_cone_lift_left -> TopCat.Sheaf.interUnionPullbackConeLift_left is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_lift_left TopCat.Sheaf.interUnionPullbackConeLift_leftₓ'. -/
 theorem interUnionPullbackConeLift_left :
     interUnionPullbackConeLift F U V s ≫ F.1.map (homOfLE le_sup_left).op = s.fst :=
   by
@@ -387,6 +438,9 @@ theorem interUnionPullbackConeLift_left :
       (op <| pairwise.single (ULift.up walking_pair.left))
 #align Top.sheaf.inter_union_pullback_cone_lift_left TopCat.Sheaf.interUnionPullbackConeLift_left
 
+/- warning: Top.sheaf.inter_union_pullback_cone_lift_right -> TopCat.Sheaf.interUnionPullbackConeLift_right is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.inter_union_pullback_cone_lift_right TopCat.Sheaf.interUnionPullbackConeLift_rightₓ'. -/
 theorem interUnionPullbackConeLift_right :
     interUnionPullbackConeLift F U V s ≫ F.1.map (homOfLE le_sup_right).op = s.snd :=
   by
@@ -396,6 +450,9 @@ theorem interUnionPullbackConeLift_right :
       (op <| pairwise.single (ULift.up walking_pair.right))
 #align Top.sheaf.inter_union_pullback_cone_lift_right TopCat.Sheaf.interUnionPullbackConeLift_right
 
+/- warning: Top.sheaf.is_limit_pullback_cone -> TopCat.Sheaf.isLimitPullbackCone is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.is_limit_pullback_cone TopCat.Sheaf.isLimitPullbackConeₓ'. -/
 /-- For a sheaf `F`, `F(U ⊔ V)` is the pullback of `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)`. -/
 def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
   by
@@ -437,6 +494,9 @@ def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
       apply inter_union_pullback_cone_lift_right
 #align Top.sheaf.is_limit_pullback_cone TopCat.Sheaf.isLimitPullbackCone
 
+/- warning: Top.sheaf.is_product_of_disjoint -> TopCat.Sheaf.isProductOfDisjoint is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.is_product_of_disjoint TopCat.Sheaf.isProductOfDisjointₓ'. -/
 /-- If `U, V` are disjoint, then `F(U ⊔ V) = F(U) × F(V)`. -/
 def isProductOfDisjoint (h : U ⊓ V = ⊥) :
     IsLimit
@@ -445,12 +505,18 @@ def isProductOfDisjoint (h : U ⊓ V = ⊥) :
   isProductOfIsTerminalIsPullback _ _ _ _ (F.isTerminalOfEqEmpty h) (isLimitPullbackCone F U V)
 #align Top.sheaf.is_product_of_disjoint TopCat.Sheaf.isProductOfDisjoint
 
+/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus -> TopCat.Sheaf.objSupIsoProdEqLocus is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus TopCat.Sheaf.objSupIsoProdEqLocusₓ'. -/
 /-- `F(U ⊔ V)` is isomorphic to the `eq_locus` of the two maps `F(U) × F(V) ⟶ F(U ⊓ V)`. -/
 def objSupIsoProdEqLocus {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) :
     F.1.obj (op <| U ⊔ V) ≅ CommRingCat.of (RingHom.eqLocus _ _) :=
   (F.isLimitPullbackCone U V).conePointUniqueUpToIso (CommRingCat.pullbackConeIsLimit _ _)
 #align Top.sheaf.obj_sup_iso_prod_eq_locus TopCat.Sheaf.objSupIsoProdEqLocus
 
+/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst -> TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst TopCat.Sheaf.objSupIsoProdEqLocus_hom_fstₓ'. -/
 theorem objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     ((F.objSupIsoProdEqLocus U V).Hom x).1.fst = F.1.map (homOfLE le_sup_left).op x :=
   ConcreteCategory.congr_hom
@@ -459,6 +525,9 @@ theorem objSupIsoProdEqLocus_hom_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_fst TopCat.Sheaf.objSupIsoProdEqLocus_hom_fst
 
+/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd -> TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd TopCat.Sheaf.objSupIsoProdEqLocus_hom_sndₓ'. -/
 theorem objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     ((F.objSupIsoProdEqLocus U V).Hom x).1.snd = F.1.map (homOfLE le_sup_right).op x :=
   ConcreteCategory.congr_hom
@@ -467,6 +536,9 @@ theorem objSupIsoProdEqLocus_hom_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_hom_snd TopCat.Sheaf.objSupIsoProdEqLocus_hom_snd
 
+/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst -> TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst TopCat.Sheaf.objSupIsoProdEqLocus_inv_fstₓ'. -/
 theorem objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     F.1.map (homOfLE le_sup_left).op ((F.objSupIsoProdEqLocus U V).inv x) = x.1.1 :=
   ConcreteCategory.congr_hom
@@ -475,6 +547,9 @@ theorem objSupIsoProdEqLocus_inv_fst {X : TopCat} (F : X.Sheaf CommRingCat) (U V
     x
 #align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_fst TopCat.Sheaf.objSupIsoProdEqLocus_inv_fst
 
+/- warning: Top.sheaf.obj_sup_iso_prod_eq_locus_inv_snd -> TopCat.Sheaf.objSupIsoProdEqLocus_inv_snd is a dubious translation:
+<too large>
+Case conversion may be inaccurate. Consider using '#align Top.sheaf.obj_sup_iso_prod_eq_locus_inv_snd TopCat.Sheaf.objSupIsoProdEqLocus_inv_sndₓ'. -/
 theorem objSupIsoProdEqLocus_inv_snd {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) (x) :
     F.1.map (homOfLE le_sup_right).op ((F.objSupIsoProdEqLocus U V).inv x) = x.1.2 :=
   ConcreteCategory.congr_hom
Diff
@@ -343,9 +343,9 @@ Every cone over `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)` factors through
 def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
   by
   let ι : ULift.{w} walking_pair → opens X := fun j => walking_pair.cases_on j.down U V
-  have hι : U ⊔ V = supᵢ ι := by
+  have hι : U ⊔ V = iSup ι := by
     ext
-    rw [opens.coe_supr, Set.mem_unionᵢ]
+    rw [opens.coe_supr, Set.mem_iUnion]
     constructor
     · rintro (h | h)
       exacts[⟨⟨walking_pair.left⟩, h⟩, ⟨⟨walking_pair.right⟩, h⟩]
@@ -400,9 +400,9 @@ theorem interUnionPullbackConeLift_right :
 def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
   by
   let ι : ULift.{w} walking_pair → opens X := fun ⟨j⟩ => walking_pair.cases_on j U V
-  have hι : U ⊔ V = supᵢ ι := by
+  have hι : U ⊔ V = iSup ι := by
     ext
-    rw [opens.coe_supr, Set.mem_unionᵢ]
+    rw [opens.coe_supr, Set.mem_iUnion]
     constructor
     · rintro (h | h)
       exacts[⟨⟨walking_pair.left⟩, h⟩, ⟨⟨walking_pair.right⟩, h⟩]
Diff
@@ -357,13 +357,13 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
           { app := _
             naturality' := _ }⟩ ≫
       F.1.map (eq_to_hom hι).op
-  · apply Opposite.rec
+  · apply Opposite.rec'
     rintro ((_ | _) | (_ | _))
     exacts[s.fst, s.snd, s.fst ≫ F.1.map (hom_of_le inf_le_left).op,
       s.snd ≫ F.1.map (hom_of_le inf_le_left).op]
   rintro i j f
-  induction i using Opposite.rec
-  induction j using Opposite.rec
+  induction i using Opposite.rec'
+  induction j using Opposite.rec'
   let g : j ⟶ i := f.unop
   have : f = g.op := rfl
   clear_value g
@@ -417,7 +417,7 @@ def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) :=
   · intro m h₁ h₂
     rw [← cancel_mono (F.1.map (eq_to_hom hι.symm).op)]
     apply (F.presheaf.is_sheaf_iff_is_sheaf_pairwise_intersections.mp F.2 ι).some.hom_ext
-    apply Opposite.rec
+    apply Opposite.rec'
     rintro ((_ | _) | (_ | _)) <;> rw [category.assoc, category.assoc]
     · erw [← F.1.map_comp]
       convert h₁
Diff
@@ -256,7 +256,7 @@ theorem isSheafOpensLeCover_iff_isSheafPairwiseIntersections :
             IsLimit ((F.mapCone (opensLeCoverCocone U).op).whisker (pairwiseToOpensLeCover U).op) :=
           (Functor.Initial.isLimitWhiskerEquiv (pairwiseToOpensLeCover U).op _).symm
         _ ≃ IsLimit (F.mapCone ((opensLeCoverCocone U).op.whisker (pairwiseToOpensLeCover U).op)) :=
-          IsLimit.equivIsoLimit F.mapConeWhisker.symm
+          (IsLimit.equivIsoLimit F.mapConeWhisker.symm)
         _ ≃
             IsLimit
               ((Cones.postcomposeEquivalence _).Functor.obj
@@ -267,7 +267,7 @@ theorem isSheafOpensLeCover_iff_isSheafPairwiseIntersections :
               (F.mapCone
                 ((Cones.postcomposeEquivalence _).Functor.obj
                   ((opensLeCoverCocone U).op.whisker (pairwiseToOpensLeCover U).op))) :=
-          IsLimit.equivIsoLimit (Functor.mapConePostcomposeEquivalenceFunctor _).symm
+          (IsLimit.equivIsoLimit (Functor.mapConePostcomposeEquivalenceFunctor _).symm)
         _ ≃ IsLimit (F.mapCone (Pairwise.cocone U).op) :=
           IsLimit.equivIsoLimit ((Cones.functoriality _ _).mapIso (pairwiseCoconeIso U : _).symm)
         
Diff
@@ -317,9 +317,9 @@ def interUnionPullbackCone :
 #align Top.sheaf.inter_union_pullback_cone TopCat.Sheaf.interUnionPullbackCone
 
 @[simp]
-theorem interUnionPullbackCone_x : (interUnionPullbackCone F U V).x = F.1.obj (op <| U ⊔ V) :=
+theorem interUnionPullbackCone_pt : (interUnionPullbackCone F U V).pt = F.1.obj (op <| U ⊔ V) :=
   rfl
-#align Top.sheaf.inter_union_pullback_cone_X TopCat.Sheaf.interUnionPullbackCone_x
+#align Top.sheaf.inter_union_pullback_cone_X TopCat.Sheaf.interUnionPullbackCone_pt
 
 @[simp]
 theorem interUnionPullbackCone_fst :
@@ -340,7 +340,7 @@ variable
 /-- (Implementation).
 Every cone over `F(U) ⟶ F(U ⊓ V)` and `F(V) ⟶ F(U ⊓ V)` factors through `F(U ⊔ V)`.
 -/
-def interUnionPullbackConeLift : s.x ⟶ F.1.obj (op (U ⊔ V)) :=
+def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) :=
   by
   let ι : ULift.{w} walking_pair → opens X := fun j => walking_pair.cases_on j.down U V
   have hι : U ⊔ V = supᵢ ι := by
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module topology.sheaves.sheaf_condition.pairwise_intersections
-! leanprover-community/mathlib commit 85d6221d32c37e68f05b2e42cde6cee658dae5e9
+! leanprover-community/mathlib commit 8a318021995877a44630c898d0b2bc376fceef3b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -117,8 +117,7 @@ def pairwiseToOpensLeCover : Pairwise ι ⥤ OpensLeCover U
 #align Top.presheaf.sheaf_condition.pairwise_to_opens_le_cover TopCat.Presheaf.SheafCondition.pairwiseToOpensLeCover
 
 instance (V : OpensLeCover U) : Nonempty (StructuredArrow V (pairwiseToOpensLeCover U)) :=
-  ⟨{  right := single V.index
-      Hom := V.homToIndex }⟩
+  ⟨@StructuredArrow.mk _ _ _ _ _ (single V.index) _ V.hom_to_index⟩
 
 -- This is a case bash: for each pair of types of objects in `pairwise ι`,
 -- we have to explicitly construct a zigzag.

Changes in mathlib4

mathlib3
mathlib4
doc: fix many more mathlib3 names in doc comments (#11987)

A mix of various changes; generated with a script and manually tweaked.

Diff
@@ -33,7 +33,7 @@ We express this in two equivalent ways, as
 * `is_limit (F.map_cone (cone U))`, or
 * `preserves_limit (diagram U) F`
 
-We show that this sheaf condition is equivalent to the `opens_le_cover` sheaf condition, and
+We show that this sheaf condition is equivalent to the `OpensLeCover` sheaf condition, and
 thereby also equivalent to the default sheaf condition.
 -/
 
@@ -52,7 +52,7 @@ section
 
 /-- An alternative formulation of the sheaf condition
 (which we prove equivalent to the usual one below as
-`is_sheaf_iff_is_sheaf_pairwise_intersections`).
+`isSheaf_iff_isSheafPairwiseIntersections`).
 
 A presheaf is a sheaf if `F` sends the cone `(pairwise.cocone U).op` to a limit cone.
 (Recall `Pairwise.cocone U` has cone point `supr U`, mapping down to the `U i` and the `U i ⊓ U j`.)
@@ -64,7 +64,7 @@ set_option linter.uppercaseLean3 false in
 
 /-- An alternative formulation of the sheaf condition
 (which we prove equivalent to the usual one below as
-`is_sheaf_iff_is_sheaf_preserves_limit_pairwise_intersections`).
+`isSheaf_iff_isSheafPreservesLimitPairwiseIntersections`).
 
 A presheaf is a sheaf if `F` preserves the limit of `Pairwise.diagram U`.
 (Recall `Pairwise.diagram U` is the diagram consisting of the pairwise intersections
@@ -215,7 +215,7 @@ instance : Functor.Final (pairwiseToOpensLeCover U) :=
                   List.Chain.nil)))⟩
 
 /-- The diagram in `opens X` indexed by pairwise intersections from `U` is isomorphic
-(in fact, equal) to the diagram factored through `opens_le_cover U`.
+(in fact, equal) to the diagram factored through `OpensLeCover U`.
 -/
 def pairwiseDiagramIso : Pairwise.diagram U ≅ pairwiseToOpensLeCover U ⋙ fullSubcategoryInclusion _
     where
@@ -226,7 +226,7 @@ set_option linter.uppercaseLean3 false in
 
 /--
 The cocone `Pairwise.cocone U` with cocone point `supr U` over `Pairwise.diagram U` is isomorphic
-to the cocone `opens_le_cover_cocone U` (with the same cocone point)
+to the cocone `opensLeCoverCocone U` (with the same cocone point)
 after appropriate whiskering and postcomposition.
 -/
 def pairwiseCoconeIso :
chore(Order): Make more arguments explicit (#11033)

Those lemmas have historically been very annoying to use in rw since all their arguments were implicit. One too many people complained about it on Zulip, so I'm changing them.

Downstream code broken by this change can fix it by adding appropriately many _s.

Also marks CauSeq.ext @[ext].

Order.BoundedOrder

  • top_sup_eq
  • sup_top_eq
  • bot_sup_eq
  • sup_bot_eq
  • top_inf_eq
  • inf_top_eq
  • bot_inf_eq
  • inf_bot_eq

Order.Lattice

  • sup_idem
  • sup_comm
  • sup_assoc
  • sup_left_idem
  • sup_right_idem
  • inf_idem
  • inf_comm
  • inf_assoc
  • inf_left_idem
  • inf_right_idem
  • sup_inf_left
  • sup_inf_right
  • inf_sup_left
  • inf_sup_right

Order.MinMax

  • max_min_distrib_left
  • max_min_distrib_right
  • min_max_distrib_left
  • min_max_distrib_right

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -374,7 +374,7 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) := by
   rcases g with ⟨⟩ <;>
   dsimp [Pairwise.diagram] <;>
   simp only [Category.id_comp, s.condition, CategoryTheory.Functor.map_id, Category.comp_id]
-  · rw [← cancel_mono (F.1.map (eqToHom <| inf_comm : U ⊓ V ⟶ _).op), Category.assoc,
+  · rw [← cancel_mono (F.1.map (eqToHom <| inf_comm U V : U ⊓ V ⟶ _).op), Category.assoc,
       Category.assoc, ← F.1.map_comp, ← F.1.map_comp]
     exact s.condition.symm
 set_option linter.uppercaseLean3 false in
style: reduce spacing variation in "porting note" comments (#10886)

In this pull request, I have systematically eliminated the leading whitespace preceding the colon (:) within all unlabelled or unclassified porting notes. This adjustment facilitates a more efficient review process for the remaining notes by ensuring no entries are overlooked due to formatting inconsistencies.

Diff
@@ -453,7 +453,7 @@ set_option linter.uppercaseLean3 false in
 /-- `F(U ⊔ V)` is isomorphic to the `eq_locus` of the two maps `F(U) × F(V) ⟶ F(U ⊓ V)`. -/
 def objSupIsoProdEqLocus {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) :
     F.1.obj (op <| U ⊔ V) ≅ CommRingCat.of <|
-    -- Porting note : Lean 3 is able to figure out the ring homomorphism automatically
+    -- Porting note: Lean 3 is able to figure out the ring homomorphism automatically
     RingHom.eqLocus
       (RingHom.comp (F.val.map (homOfLE inf_le_left : U ⊓ V ⟶ U).op)
         (RingHom.fst (F.val.obj <| op U) (F.val.obj <| op V)))
chore: space after (#8178)

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

Diff
@@ -375,7 +375,7 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) := by
   dsimp [Pairwise.diagram] <;>
   simp only [Category.id_comp, s.condition, CategoryTheory.Functor.map_id, Category.comp_id]
   · rw [← cancel_mono (F.1.map (eqToHom <| inf_comm : U ⊓ V ⟶ _).op), Category.assoc,
-      Category.assoc, ←F.1.map_comp, ←F.1.map_comp]
+      Category.assoc, ← F.1.map_comp, ← F.1.map_comp]
     exact s.condition.symm
 set_option linter.uppercaseLean3 false in
 #align Top.sheaf.inter_union_pullback_cone_lift TopCat.Sheaf.interUnionPullbackConeLift
chore: fix some cases in names (#7469)

And fix some names in comments where this revealed issues

Diff
@@ -55,7 +55,7 @@ section
 `is_sheaf_iff_is_sheaf_pairwise_intersections`).
 
 A presheaf is a sheaf if `F` sends the cone `(pairwise.cocone U).op` to a limit cone.
-(Recall `pairwise.cocone U` has cone point `supr U`, mapping down to the `U i` and the `U i ⊓ U j`.)
+(Recall `Pairwise.cocone U` has cone point `supr U`, mapping down to the `U i` and the `U i ⊓ U j`.)
 -/
 def IsSheafPairwiseIntersections (F : Presheaf C X) : Prop :=
   ∀ ⦃ι : Type w⦄ (U : ι → Opens X), Nonempty (IsLimit (F.mapCone (Pairwise.cocone U).op))
@@ -66,8 +66,8 @@ set_option linter.uppercaseLean3 false in
 (which we prove equivalent to the usual one below as
 `is_sheaf_iff_is_sheaf_preserves_limit_pairwise_intersections`).
 
-A presheaf is a sheaf if `F` preserves the limit of `pairwise.diagram U`.
-(Recall `pairwise.diagram U` is the diagram consisting of the pairwise intersections
+A presheaf is a sheaf if `F` preserves the limit of `Pairwise.diagram U`.
+(Recall `Pairwise.diagram U` is the diagram consisting of the pairwise intersections
 `U i ⊓ U j` mapping into the open sets `U i`. This diagram has limit `supr U`.)
 -/
 def IsSheafPreservesLimitPairwiseIntersections (F : Presheaf C X) : Prop :=
@@ -225,7 +225,7 @@ set_option linter.uppercaseLean3 false in
 #align Top.presheaf.sheaf_condition.pairwise_diagram_iso TopCat.Presheaf.SheafCondition.pairwiseDiagramIso
 
 /--
-The cocone `pairwise.cocone U` with cocone point `supr U` over `pairwise.diagram U` is isomorphic
+The cocone `Pairwise.cocone U` with cocone point `supr U` over `Pairwise.diagram U` is isomorphic
 to the cocone `opens_le_cover_cocone U` (with the same cocone point)
 after appropriate whiskering and postcomposition.
 -/
chore: exactly 4 spaces in subsequent lines for def (#7321)

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

Diff
@@ -452,7 +452,7 @@ set_option linter.uppercaseLean3 false in
 
 /-- `F(U ⊔ V)` is isomorphic to the `eq_locus` of the two maps `F(U) × F(V) ⟶ F(U ⊓ V)`. -/
 def objSupIsoProdEqLocus {X : TopCat} (F : X.Sheaf CommRingCat) (U V : Opens X) :
-  F.1.obj (op <| U ⊔ V) ≅ CommRingCat.of <|
+    F.1.obj (op <| U ⊔ V) ≅ CommRingCat.of <|
     -- Porting note : Lean 3 is able to figure out the ring homomorphism automatically
     RingHom.eqLocus
       (RingHom.comp (F.val.map (homOfLE inf_le_left : U ⊓ V ⟶ U).op)
chore: remove unused simps (#6632)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -128,8 +128,7 @@ of all opens contained in some `U i`.
 instance : Functor.Final (pairwiseToOpensLeCover U) :=
   ⟨fun V =>
     isConnected_of_zigzag fun A B => by
-      rcases A with ⟨⟨⟨⟩⟩, ⟨i⟩ | ⟨i, j⟩, a⟩ <;> rcases B with ⟨⟨⟨⟩⟩, ⟨i'⟩ | ⟨i', j'⟩, b⟩ <;>
-        dsimp at *
+      rcases A with ⟨⟨⟨⟩⟩, ⟨i⟩ | ⟨i, j⟩, a⟩ <;> rcases B with ⟨⟨⟨⟩⟩, ⟨i'⟩ | ⟨i', j'⟩, b⟩
       · refine'
           ⟨[{   left := ⟨⟨⟩⟩
                 right := pair i i'
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,11 +2,6 @@
 Copyright (c) 2020 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module topology.sheaves.sheaf_condition.pairwise_intersections
-! leanprover-community/mathlib commit 8a318021995877a44630c898d0b2bc376fceef3b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.Sheaves.SheafCondition.OpensLeCover
 import Mathlib.CategoryTheory.Limits.Final
@@ -15,6 +10,8 @@ import Mathlib.CategoryTheory.Category.Pairwise
 import Mathlib.CategoryTheory.Limits.Constructions.BinaryProducts
 import Mathlib.Algebra.Category.Ring.Constructions
 
+#align_import topology.sheaves.sheaf_condition.pairwise_intersections from "leanprover-community/mathlib"@"8a318021995877a44630c898d0b2bc376fceef3b"
+
 /-!
 # Equivalent formulations of the sheaf condition
 
chore: fix focusing dots (#5708)

This PR is the result of running

find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +·)\n +(.*)$/\1 \2/;P;D' {} \;

which firstly replaces . focusing dots with · and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.

Diff
@@ -378,7 +378,7 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) := by
   rcases g with ⟨⟩ <;>
   dsimp [Pairwise.diagram] <;>
   simp only [Category.id_comp, s.condition, CategoryTheory.Functor.map_id, Category.comp_id]
-  . rw [← cancel_mono (F.1.map (eqToHom <| inf_comm : U ⊓ V ⟶ _).op), Category.assoc,
+  · rw [← cancel_mono (F.1.map (eqToHom <| inf_comm : U ⊓ V ⟶ _).op), Category.assoc,
       Category.assoc, ←F.1.map_comp, ←F.1.map_comp]
     exact s.condition.symm
 set_option linter.uppercaseLean3 false in
chore: add space after exacts (#4945)

Too often tempted to change these during other PRs, so doing a mass edit here.

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

Diff
@@ -356,9 +356,9 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) := by
     rw [Opens.coe_iSup, Set.mem_iUnion]
     constructor
     · rintro (h | h)
-      exacts[⟨⟨WalkingPair.left⟩, h⟩, ⟨⟨WalkingPair.right⟩, h⟩]
+      exacts [⟨⟨WalkingPair.left⟩, h⟩, ⟨⟨WalkingPair.right⟩, h⟩]
     · rintro ⟨⟨_ | _⟩, h⟩
-      exacts[Or.inl h, Or.inr h]
+      exacts [Or.inl h, Or.inr h]
   refine'
     (F.presheaf.isSheaf_iff_isSheafPairwiseIntersections.mp F.2 ι).some.lift
         ⟨s.pt,
@@ -412,9 +412,9 @@ def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) := by
     rw [Opens.coe_iSup, Set.mem_iUnion]
     constructor
     · rintro (h | h)
-      exacts[⟨⟨WalkingPair.left⟩, h⟩, ⟨⟨WalkingPair.right⟩, h⟩]
+      exacts [⟨⟨WalkingPair.left⟩, h⟩, ⟨⟨WalkingPair.right⟩, h⟩]
     · rintro ⟨⟨_ | _⟩, h⟩
-      exacts[Or.inl h, Or.inr h]
+      exacts [Or.inl h, Or.inr h]
   apply PullbackCone.isLimitAux'
   intro s
   use interUnionPullbackConeLift F U V s
refactor: fixes to material on sheaves and stalks (#4571)

Mostly this is installing the Opposite.rec' induction principle as the default @[eliminator], but also many other fixes and removing unnecessary steps from proofs.

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

Diff
@@ -365,15 +365,10 @@ def interUnionPullbackConeLift : s.pt ⟶ F.1.obj (op (U ⊔ V)) := by
           { app := _
             naturality := _ }⟩ ≫
       F.1.map (eqToHom hι).op
-  · apply Opposite.rec'
-    rintro ((_ | _) | (_ | _))
-    exacts[s.fst, s.snd, s.fst ≫ F.1.map (homOfLE inf_le_left).op,
+  · rintro ((_ | _) | (_ | _))
+    exacts [s.fst, s.snd, s.fst ≫ F.1.map (homOfLE inf_le_left).op,
       s.snd ≫ F.1.map (homOfLE inf_le_left).op]
-  rintro i j f
-  induction i using Opposite.rec' with
-  | h i => ?_
-  induction j using Opposite.rec' with
-  | h j => ?_
+  rintro ⟨i⟩ ⟨j⟩ f
   let g : j ⟶ i := f.unop
   have : f = g.op := rfl
   clear_value g
@@ -429,7 +424,6 @@ def isLimitPullbackCone : IsLimit (interUnionPullbackCone F U V) := by
   · intro m h₁ h₂
     rw [← cancel_mono (F.1.map (eqToHom hι.symm).op)]
     apply (F.presheaf.isSheaf_iff_isSheafPairwiseIntersections.mp F.2 ι).some.hom_ext
-    apply Opposite.rec'
     rintro ((_ | _) | (_ | _)) <;>
     rw [Category.assoc, Category.assoc]
     · erw [← F.1.map_comp]
feat: port Topology.Sheaves.SheafCondition.PairwiseIntersections (#4384)

Dependencies 11 + 764

765 files ported (98.6%)
313141 lines ported (98.3%)
Show graph

The unported dependencies are