ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.adhesive_of_preserves_and_reflects
theorem adhesive_of_preserves_and_reflects (F : C ⥤ D) [Adhesive D]
    [H₁ : ∀ {X Y S : C} (f : X ⟶ S) (g : Y ⟶ S) [Mono f], HasPullback f g]
    [H₂ : ∀ {X Y S : C} (f : S ⟶ X) (g : S ⟶ Y) [Mono f], HasPushout f g]
    [PreservesLimitsOfShape WalkingCospan F]
    [ReflectsLimitsOfShape WalkingCospan F]
    [PreservesColimitsOfShape WalkingSpan F]
    [ReflectsColimitsOfShape WalkingSpan F] :
    Adhesive C 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u''} [CategoryTheory.Category.{v'', u''} D] (F : CategoryTheory.Functor C D) [CategoryTheory.Adhesive D] [H₁ : ∀ {X Y S : C} (f : X ⟶ S) (g : Y ⟶ S) [inst : CategoryTheory.Mono f], CategoryTheory.Limits.HasPullback f g] [H₂ : ∀ {X Y S : C} (f : S ⟶ X) (g : S ⟶ Y) [inst : CategoryTheory.Mono f], CategoryTheory.Limits.HasPushout f g] [CategoryTheory.Limits.PreservesLimitsOfShape CategoryTheory.Limits.WalkingCospan F] [CategoryTheory.Limits.ReflectsLimitsOfShape CategoryTheory.Limits.WalkingCospan F] [CategoryTheory.Limits.PreservesColimitsOfShape CategoryTheory.Limits.WalkingSpan F] [CategoryTheory.Limits.ReflectsColimitsOfShape CategoryTheory.Limits.WalkingSpan F]
Goal: CategoryTheory.Adhesive C
-- CategoryTheory.adhesive_of_preserves_and_reflects_isomorphism
theorem adhesive_of_preserves_and_reflects_isomorphism (F : C ⥤ D)
    [Adhesive D] [HasPullbacks C] [HasPushouts C]
    [PreservesLimitsOfShape WalkingCospan F]
    [PreservesColimitsOfShape WalkingSpan F]
    [F.ReflectsIsomorphisms] :
    Adhesive C 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u''} [CategoryTheory.Category.{v'', u''} D] (F : CategoryTheory.Functor C D) [CategoryTheory.Adhesive D] [CategoryTheory.Limits.HasPullbacks C] [CategoryTheory.Limits.HasPushouts C] [CategoryTheory.Limits.PreservesLimitsOfShape CategoryTheory.Limits.WalkingCospan F] [CategoryTheory.Limits.PreservesColimitsOfShape CategoryTheory.Limits.WalkingSpan F] [F.ReflectsIsomorphisms]
Goal: CategoryTheory.Adhesive C
-- CategoryTheory.adhesive_of_reflective
theorem adhesive_of_reflective [HasPullbacks D] [Adhesive C] [HasPullbacks C] [HasPushouts C]
    [H₂ : ∀ {X Y S : D} (f : S ⟶ X) (g : S ⟶ Y) [Mono f], HasPushout f g]
    {Gl : C ⥤ D} {Gr : D ⥤ C} (adj : Gl ⊣ Gr) [Gr.Full] [Gr.Faithful]
    [PreservesLimitsOfShape WalkingCospan Gl] :
    Adhesive D 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u''} [CategoryTheory.Category.{v'', u''} D] [CategoryTheory.Limits.HasPullbacks D] [CategoryTheory.Adhesive C] [CategoryTheory.Limits.HasPullbacks C] [CategoryTheory.Limits.HasPushouts C] [H₂ : ∀ {X Y S : D} (f : S ⟶ X) (g : S ⟶ Y) [inst : CategoryTheory.Mono f], CategoryTheory.Limits.HasPushout f g] {Gl : CategoryTheory.Functor C D} {Gr : CategoryTheory.Functor D C} (adj : Gl ⊣ Gr) [Gr.Full] [Gr.Faithful] [CategoryTheory.Limits.PreservesLimitsOfShape CategoryTheory.Limits.WalkingCospan Gl]
Goal: CategoryTheory.Adhesive D
-- CategoryTheory.Functor.reflects_precoherent
lemma Functor.reflects_precoherent : Precoherent C 
Arguments: {C : Type u_1} {D : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Category.{u_4, u_2} D] (F : CategoryTheory.Functor C D) [F.PreservesFiniteEffectiveEpiFamilies] [F.ReflectsFiniteEffectiveEpiFamilies] [F.EffectivelyEnough] [CategoryTheory.Precoherent D] [F.Full] [F.Faithful]
Goal: CategoryTheory.Precoherent C
-- CategoryTheory.GrothendieckTopology.close_apply
@[simps]
def close {X : C} (S : Sieve X) : Sieve X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} (S : CategoryTheory.Sieve X)
Goal: ∀ (x : C) (f : x ⟶ X), (J₁.close S).arrows f = J₁.Covers S f
-- CategoryTheory.GrothendieckTopology.le_close
theorem le_close {X : C} (S : Sieve X) : S ≤ J₁.close S 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} (S : CategoryTheory.Sieve X)
Goal: S ≤ J₁.close S
-- CategoryTheory.GrothendieckTopology.covers_iff_mem_of_isClosed
theorem covers_iff_mem_of_isClosed {X : C} {S : Sieve X} (h : J₁.IsClosed S) {Y : C} (f : Y ⟶ X) :
    J₁.Covers S f ↔ S f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} {S : CategoryTheory.Sieve X} (h : J₁.IsClosed S) {Y : C} (f : Y ⟶ X)
Goal: J₁.Covers S f ↔ S.arrows f
-- CategoryTheory.GrothendieckTopology.isClosed_pullback
theorem isClosed_pullback {X Y : C} (f : Y ⟶ X) (S : Sieve X) :
    J₁.IsClosed S → J₁.IsClosed (S.pullback f) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X Y : C} (f : Y ⟶ X) (S : CategoryTheory.Sieve X)
Goal: J₁.IsClosed S → J₁.IsClosed (CategoryTheory.Sieve.pullback f S)
-- CategoryTheory.GrothendieckTopology.le_close_of_isClosed
theorem le_close_of_isClosed {X : C} {S T : Sieve X} (h : S ≤ T) (hT : J₁.IsClosed T) :
    J₁.close S ≤ T 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} {S T : CategoryTheory.Sieve X} (h : S ≤ T) (hT : J₁.IsClosed T)
Goal: J₁.close S ≤ T
-- CategoryTheory.GrothendieckTopology.close_isClosed
theorem close_isClosed {X : C} (S : Sieve X) : J₁.IsClosed (J₁.close S) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} (S : CategoryTheory.Sieve X)
Goal: J₁.IsClosed (J₁.close S)
-- CategoryTheory.GrothendieckTopology.closureOperator_isClosed
@[simps! isClosed]
def closureOperator (X : C) : ClosureOperator (Sieve X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) (X : C) (S : CategoryTheory.Sieve X)
Goal: (J₁.closureOperator X).IsClosed S = J₁.IsClosed S
-- CategoryTheory.GrothendieckTopology.isClosed_iff_close_eq_self
theorem isClosed_iff_close_eq_self {X : C} (S : Sieve X) : J₁.IsClosed S ↔ J₁.close S = S 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} (S : CategoryTheory.Sieve X)
Goal: J₁.IsClosed S ↔ J₁.close S = S
-- CategoryTheory.GrothendieckTopology.close_eq_self_of_isClosed
theorem close_eq_self_of_isClosed {X : C} {S : Sieve X} (hS : J₁.IsClosed S) : J₁.close S = S 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} {S : CategoryTheory.Sieve X} (hS : J₁.IsClosed S)
Goal: J₁.close S = S
-- CategoryTheory.GrothendieckTopology.pullback_close
theorem pullback_close {X Y : C} (f : Y ⟶ X) (S : Sieve X) :
    J₁.close (S.pullback f) = (J₁.close S).pullback f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X Y : C} (f : Y ⟶ X) (S : CategoryTheory.Sieve X)
Goal: J₁.close (CategoryTheory.Sieve.pullback f S) = CategoryTheory.Sieve.pullback f (J₁.close S)
-- CategoryTheory.GrothendieckTopology.monotone_close
@[mono]
theorem monotone_close {X : C} : Monotone (J₁.close : Sieve X → Sieve X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C}
Goal: Monotone J₁.close
-- CategoryTheory.GrothendieckTopology.close_close
@[simp]
theorem close_close {X : C} (S : Sieve X) : J₁.close (J₁.close S) = J₁.close S 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} (S : CategoryTheory.Sieve X)
Goal: J₁.close (J₁.close S) = J₁.close S
-- CategoryTheory.GrothendieckTopology.close_eq_top_iff_mem
theorem close_eq_top_iff_mem {X : C} (S : Sieve X) : J₁.close S = ⊤ ↔ S ∈ J₁ X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) {X : C} (S : CategoryTheory.Sieve X)
Goal: J₁.close S = ⊤ ↔ S ∈ J₁.sieves X
-- CategoryTheory.Functor.closedSieves_obj
@[simps]
def Functor.closedSieves : Cᵒᵖ ⥤ Type max v u 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C) (X : Cᵒᵖ)
Goal: (CategoryTheory.Functor.closedSieves J₁).obj X = { S // J₁.IsClosed S }
-- CategoryTheory.Functor.closedSieves_map_coe
@[simps]
def Functor.closedSieves : Cᵒᵖ ⥤ Type max v u 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C)
Goal: ∀ {X Y : Cᵒᵖ} (f : X ⟶ Y) (S : { S // J₁.IsClosed S }),
  ↑((CategoryTheory.Functor.closedSieves J₁).map f S) = CategoryTheory.Sieve.pullback f.unop ↑S
-- CategoryTheory.classifier_isSheaf
theorem classifier_isSheaf : Presieve.IsSheaf J₁ (Functor.closedSieves J₁) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C)
Goal: CategoryTheory.Presieve.IsSheaf J₁ (CategoryTheory.Functor.closedSieves J₁)
-- CategoryTheory.le_topology_of_closedSieves_isSheaf
theorem le_topology_of_closedSieves_isSheaf {J₁ J₂ : GrothendieckTopology C}
    (h : Presieve.IsSheaf J₁ (Functor.closedSieves J₂)) : J₁ ≤ J₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J₁ J₂ : CategoryTheory.GrothendieckTopology C} (h : CategoryTheory.Presieve.IsSheaf J₁ (CategoryTheory.Functor.closedSieves J₂))
Goal: J₁ ≤ J₂
-- CategoryTheory.topology_eq_iff_same_sheaves
theorem topology_eq_iff_same_sheaves {J₁ J₂ : GrothendieckTopology C} :
    J₁ = J₂ ↔ ∀ P : Cᵒᵖ ⥤ Type max v u, Presieve.IsSheaf J₁ P ↔ Presieve.IsSheaf J₂ P 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J₁ J₂ : CategoryTheory.GrothendieckTopology C}
Goal: J₁ = J₂ ↔
  ∀ (P : CategoryTheory.Functor Cᵒᵖ (Type (max v u))),
    CategoryTheory.Presieve.IsSheaf J₁ P ↔ CategoryTheory.Presieve.IsSheaf J₂ P
-- CategoryTheory.topologyOfClosureOperator_sieves
@[simps]
def topologyOfClosureOperator (c : ∀ X : C, ClosureOperator (Sieve X))
    (hc : ∀ ⦃X Y : C⦄ (f : Y ⟶ X) (S : Sieve X), c _ (S.pullback f) = (c _ S).pullback f) :
    GrothendieckTopology C 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (c : (X : C) → ClosureOperator (CategoryTheory.Sieve X)) (hc :
  ∀ ⦃X Y : C⦄ (f : Y ⟶ X) (S : CategoryTheory.Sieve X),
    (c Y) (CategoryTheory.Sieve.pullback f S) = CategoryTheory.Sieve.pullback f ((c X) S)) (X : C)
Goal: (CategoryTheory.topologyOfClosureOperator c hc).sieves X = {S | (c X) S = ⊤}
-- CategoryTheory.topologyOfClosureOperator_self
theorem topologyOfClosureOperator_self :
    (topologyOfClosureOperator J₁.closureOperator fun X Y => J₁.pullback_close) = J₁ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J₁ : CategoryTheory.GrothendieckTopology C)
Goal: CategoryTheory.topologyOfClosureOperator J₁.closureOperator ⋯ = J₁
-- CategoryTheory.topologyOfClosureOperator_close
theorem topologyOfClosureOperator_close (c : ∀ X : C, ClosureOperator (Sieve X))
    (pb : ∀ ⦃X Y : C⦄ (f : Y ⟶ X) (S : Sieve X), c Y (S.pullback f) = (c X S).pullback f) (X : C)
    (S : Sieve X) : (topologyOfClosureOperator c pb).close S = c X S 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (c : (X : C) → ClosureOperator (CategoryTheory.Sieve X)) (pb :
  ∀ ⦃X Y : C⦄ (f : Y ⟶ X) (S : CategoryTheory.Sieve X),
    (c Y) (CategoryTheory.Sieve.pullback f S) = CategoryTheory.Sieve.pullback f ((c X) S)) (X : C) (S : CategoryTheory.Sieve X)
Goal: (CategoryTheory.topologyOfClosureOperator c pb).close S = (c X) S
-- CategoryTheory.GrothendieckTopology.pullback_stable'
structure GrothendieckTopology where
    sieves : ∀ X : C, Set (Sieve X)
    top_mem' : ∀ X, ⊤ ∈ sieves X
    pullback_stable' : ∀ ⦃X Y : C⦄ ⦃S : Sieve X⦄ (f : Y ⟶ X), S ∈ sieves X → S.pullback f ∈ sieves Y
    transitive' :
    ∀ ⦃X⦄ ⦃S : Sieve X⦄ (_ : S ∈ sieves X) (R : Sieve X),
      (∀ ⦃Y⦄ ⦃f : Y ⟶ X⦄, S f → R.pullback f ∈ sieves Y) → R ∈ sieves X
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (self : CategoryTheory.GrothendieckTopology C) ⦃X Y : C⦄ ⦃S : CategoryTheory.Sieve X⦄ (f : Y ⟶ X)
Goal: S ∈ self.sieves X → CategoryTheory.Sieve.pullback f S ∈ self.sieves Y
-- CategoryTheory.GrothendieckTopology.transitive'
structure GrothendieckTopology where
    sieves : ∀ X : C, Set (Sieve X)
    top_mem' : ∀ X, ⊤ ∈ sieves X
    pullback_stable' : ∀ ⦃X Y : C⦄ ⦃S : Sieve X⦄ (f : Y ⟶ X), S ∈ sieves X → S.pullback f ∈ sieves Y
    transitive' :
    ∀ ⦃X⦄ ⦃S : Sieve X⦄ (_ : S ∈ sieves X) (R : Sieve X),
      (∀ ⦃Y⦄ ⦃f : Y ⟶ X⦄, S f → R.pullback f ∈ sieves Y) → R ∈ sieves X
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (self : CategoryTheory.GrothendieckTopology C) ⦃X : C⦄ ⦃S : CategoryTheory.Sieve X⦄
Goal: S ∈ self.sieves X →
  ∀ (R : CategoryTheory.Sieve X),
    (∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, S.arrows f → CategoryTheory.Sieve.pullback f R ∈ self.sieves Y) → R ∈ self.sieves X
-- CategoryTheory.GrothendieckTopology.top_mem'
structure GrothendieckTopology where
    sieves : ∀ X : C, Set (Sieve X)
    top_mem' : ∀ X, ⊤ ∈ sieves X
    pullback_stable' : ∀ ⦃X Y : C⦄ ⦃S : Sieve X⦄ (f : Y ⟶ X), S ∈ sieves X → S.pullback f ∈ sieves Y
    transitive' :
    ∀ ⦃X⦄ ⦃S : Sieve X⦄ (_ : S ∈ sieves X) (R : Sieve X),
      (∀ ⦃Y⦄ ⦃f : Y ⟶ X⦄, S f → R.pullback f ∈ sieves Y) → R ∈ sieves X
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (self : CategoryTheory.GrothendieckTopology C) (X : C)
Goal: ⊤ ∈ self.sieves X
-- CategoryTheory.GrothendieckTopology.ext
@[ext]
theorem ext {J₁ J₂ : GrothendieckTopology C} (h : (J₁ : ∀ X : C, Set (Sieve X)) = J₂) :
    J₁ = J₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J₁ J₂ : CategoryTheory.GrothendieckTopology C} (h : J₁.sieves = J₂.sieves)
Goal: J₁ = J₂
-- CategoryTheory.GrothendieckTopology.top_mem
@[simp]
theorem top_mem (X : C) : ⊤ ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) (X : C)
Goal: ⊤ ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.pullback_stable
@[simp]
theorem pullback_stable (f : Y ⟶ X) (hS : S ∈ J X) : S.pullback f ∈ J Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} {S : CategoryTheory.Sieve X} (J : CategoryTheory.GrothendieckTopology C) (f : Y ⟶ X) (hS : S ∈ J.sieves X)
Goal: CategoryTheory.Sieve.pullback f S ∈ J.sieves Y
-- CategoryTheory.GrothendieckTopology.pullback_mem_iff_of_isIso
@[simp]
lemma pullback_mem_iff_of_isIso {i : X ⟶ Y} [IsIso i] {S : Sieve Y} :
    S.pullback i ∈ J _ ↔ S ∈ J _ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} {J : CategoryTheory.GrothendieckTopology C} {i : X ⟶ Y} [CategoryTheory.IsIso i] {S : CategoryTheory.Sieve Y}
Goal: CategoryTheory.Sieve.pullback i S ∈ J.sieves X ↔ S ∈ J.sieves Y
-- CategoryTheory.GrothendieckTopology.transitive
theorem transitive (hS : S ∈ J X) (R : Sieve X) (h : ∀ ⦃Y⦄ ⦃f : Y ⟶ X⦄, S f → R.pullback f ∈ J Y) :
    R ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S : CategoryTheory.Sieve X} (J : CategoryTheory.GrothendieckTopology C) (hS : S ∈ J.sieves X) (R : CategoryTheory.Sieve X) (h : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, S.arrows f → CategoryTheory.Sieve.pullback f R ∈ J.sieves Y)
Goal: R ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.covering_of_eq_top
theorem covering_of_eq_top : S = ⊤ → S ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S : CategoryTheory.Sieve X} (J : CategoryTheory.GrothendieckTopology C)
Goal: S = ⊤ → S ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.superset_covering
theorem superset_covering (Hss : S ≤ R) (sjx : S ∈ J X) : R ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S R : CategoryTheory.Sieve X} (J : CategoryTheory.GrothendieckTopology C) (Hss : S ≤ R) (sjx : S ∈ J.sieves X)
Goal: R ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.intersection_covering
theorem intersection_covering (rj : R ∈ J X) (sj : S ∈ J X) : R ⊓ S ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S R : CategoryTheory.Sieve X} (J : CategoryTheory.GrothendieckTopology C) (rj : R ∈ J.sieves X) (sj : S ∈ J.sieves X)
Goal: R ⊓ S ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.intersection_covering_iff
@[simp]
theorem intersection_covering_iff : R ⊓ S ∈ J X ↔ R ∈ J X ∧ S ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S R : CategoryTheory.Sieve X} (J : CategoryTheory.GrothendieckTopology C)
Goal: R ⊓ S ∈ J.sieves X ↔ R ∈ J.sieves X ∧ S ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.bind_covering
theorem bind_covering {S : Sieve X} {R : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄, S f → Sieve Y} (hS : S ∈ J X)
    (hR : ∀ ⦃Y⦄ ⦃f : Y ⟶ X⦄ (H : S f), R H ∈ J Y) : Sieve.bind S R ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} (J : CategoryTheory.GrothendieckTopology C) {S : CategoryTheory.Sieve X} {R : ⦃Y : C⦄ → ⦃f : Y ⟶ X⦄ → S.arrows f → CategoryTheory.Sieve Y} (hS : S ∈ J.sieves X) (hR : ∀ ⦃Y : C⦄ ⦃f : Y ⟶ X⦄ (H : S.arrows f), R H ∈ J.sieves Y)
Goal: CategoryTheory.Sieve.bind S.arrows R ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.covers_iff
theorem covers_iff (S : Sieve X) (f : Y ⟶ X) : J.Covers S f ↔ S.pullback f ∈ J Y 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (J : CategoryTheory.GrothendieckTopology C) (S : CategoryTheory.Sieve X) (f : Y ⟶ X)
Goal: J.Covers S f ↔ CategoryTheory.Sieve.pullback f S ∈ J.sieves Y
-- CategoryTheory.GrothendieckTopology.covering_iff_covers_id
theorem covering_iff_covers_id (S : Sieve X) : S ∈ J X ↔ J.Covers S (𝟙 X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} (J : CategoryTheory.GrothendieckTopology C) (S : CategoryTheory.Sieve X)
Goal: S ∈ J.sieves X ↔ J.Covers S (CategoryTheory.CategoryStruct.id X)
-- CategoryTheory.GrothendieckTopology.arrow_max
theorem arrow_max (f : Y ⟶ X) (S : Sieve X) (hf : S f) : J.Covers S f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (J : CategoryTheory.GrothendieckTopology C) (f : Y ⟶ X) (S : CategoryTheory.Sieve X) (hf : S.arrows f)
Goal: J.Covers S f
-- CategoryTheory.GrothendieckTopology.arrow_stable
theorem arrow_stable (f : Y ⟶ X) (S : Sieve X) (h : J.Covers S f) {Z : C} (g : Z ⟶ Y) :
    J.Covers S (g ≫ f) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (J : CategoryTheory.GrothendieckTopology C) (f : Y ⟶ X) (S : CategoryTheory.Sieve X) (h : J.Covers S f) {Z : C} (g : Z ⟶ Y)
Goal: J.Covers S (CategoryTheory.CategoryStruct.comp g f)
-- CategoryTheory.GrothendieckTopology.arrow_trans
theorem arrow_trans (f : Y ⟶ X) (S R : Sieve X) (h : J.Covers S f) :
    (∀ {Z : C} (g : Z ⟶ X), S g → J.Covers R g) → J.Covers R f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (J : CategoryTheory.GrothendieckTopology C) (f : Y ⟶ X) (S R : CategoryTheory.Sieve X) (h : J.Covers S f)
Goal: (∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g) → J.Covers R f
-- CategoryTheory.GrothendieckTopology.arrow_intersect
theorem arrow_intersect (f : Y ⟶ X) (S R : Sieve X) (hS : J.Covers S f) (hR : J.Covers R f) :
    J.Covers (S ⊓ R) f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (J : CategoryTheory.GrothendieckTopology C) (f : Y ⟶ X) (S R : CategoryTheory.Sieve X) (hS : J.Covers S f) (hR : J.Covers R f)
Goal: J.Covers (S ⊓ R) f
-- CategoryTheory.GrothendieckTopology.trivial_covering
theorem trivial_covering : S ∈ trivial C X ↔ S = ⊤ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S : CategoryTheory.Sieve X}
Goal: S ∈ (CategoryTheory.GrothendieckTopology.trivial C).sieves X ↔ S = ⊤
-- CategoryTheory.GrothendieckTopology.le_def
theorem le_def {J₁ J₂ : GrothendieckTopology C} : J₁ ≤ J₂ ↔ (J₁ : ∀ X : C, Set (Sieve X)) ≤ J₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J₁ J₂ : CategoryTheory.GrothendieckTopology C}
Goal: J₁ ≤ J₂ ↔ J₁.sieves ≤ J₂.sieves
-- CategoryTheory.GrothendieckTopology.isGLB_sInf
theorem isGLB_sInf (s : Set (GrothendieckTopology C)) : IsGLB s (sInf s) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (s : Set (CategoryTheory.GrothendieckTopology C))
Goal: IsGLB s (sInf s)
-- CategoryTheory.GrothendieckTopology.trivial_eq_bot
@[simp]
theorem trivial_eq_bot : trivial C = ⊥ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C]
Goal: CategoryTheory.GrothendieckTopology.trivial C = ⊥
-- CategoryTheory.GrothendieckTopology.discrete_eq_top
@[simp]
theorem discrete_eq_top : discrete C = ⊤ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C]
Goal: CategoryTheory.GrothendieckTopology.discrete C = ⊤
-- CategoryTheory.GrothendieckTopology.bot_covering
@[simp]
theorem bot_covering : S ∈ (⊥ : GrothendieckTopology C) X ↔ S = ⊤ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S : CategoryTheory.Sieve X}
Goal: S ∈ ⊥.sieves X ↔ S = ⊤
-- CategoryTheory.GrothendieckTopology.top_covering
@[simp]
theorem top_covering : S ∈ (⊤ : GrothendieckTopology C) X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S : CategoryTheory.Sieve X}
Goal: S ∈ ⊤.sieves X
-- CategoryTheory.GrothendieckTopology.bot_covers
theorem bot_covers (S : Sieve X) (f : Y ⟶ X) : (⊥ : GrothendieckTopology C).Covers S f ↔ S f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (S : CategoryTheory.Sieve X) (f : Y ⟶ X)
Goal: ⊥.Covers S f ↔ S.arrows f
-- CategoryTheory.GrothendieckTopology.top_covers
@[simp]
theorem top_covers (S : Sieve X) (f : Y ⟶ X) : (⊤ : GrothendieckTopology C).Covers S f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X Y : C} (S : CategoryTheory.Sieve X) (f : Y ⟶ X)
Goal: ⊤.Covers S f
-- CategoryTheory.GrothendieckTopology.dense_covering
theorem dense_covering : S ∈ dense X ↔ ∀ {Y} (f : Y ⟶ X), ∃ (Z : _) (g : Z ⟶ Y), S (g ≫ f) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {S : CategoryTheory.Sieve X}
Goal: S ∈ CategoryTheory.GrothendieckTopology.dense.sieves X ↔
  ∀ {Y : C} (f : Y ⟶ X), ∃ Z g, S.arrows (CategoryTheory.CategoryStruct.comp g f)
-- CategoryTheory.GrothendieckTopology.right_ore_of_pullbacks
theorem right_ore_of_pullbacks [Limits.HasPullbacks C] : RightOreCondition C 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Limits.HasPullbacks C]
Goal: CategoryTheory.GrothendieckTopology.RightOreCondition C
-- CategoryTheory.GrothendieckTopology.Cover.condition
theorem condition (S : J.Cover X) : S.sieve ∈ J X 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {J : CategoryTheory.GrothendieckTopology C} (S : J.Cover X)
Goal: S.sieve ∈ J.sieves X
-- CategoryTheory.GrothendieckTopology.Cover.ext
@[ext]
theorem ext (S T : J.Cover X) (h : ∀ ⦃Y⦄ (f : Y ⟶ X), S f ↔ T f) : S = T 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {J : CategoryTheory.GrothendieckTopology C} (S T : J.Cover X) (h : ∀ ⦃Y : C⦄ (f : Y ⟶ X), S.sieve.arrows f ↔ T.sieve.arrows f)
Goal: S = T
-- CategoryTheory.GrothendieckTopology.Cover.Arrow.hf
-- Porting note(#5171): this linter isn't ported yet.
-- @[nolint has_nonempty_instance]
@[ext]
structure Arrow (S : J.Cover X) where
    Y : C
    f : Y ⟶ X
    hf : S f
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {J : CategoryTheory.GrothendieckTopology C} {S : J.Cover X} (self : S.Arrow)
Goal: S.sieve.arrows self.f
-- CategoryTheory.GrothendieckTopology.Cover.Arrow.Relation.w
@[ext]
structure Arrow.Relation {S : J.Cover X} (I₁ I₂ : S.Arrow) where
    Z : C
    g₁ : Z ⟶ I₁.Y
    g₂ : Z ⟶ I₂.Y
    w : g₁ ≫ I₁.f = g₂ ≫ I₂.f := by aesop_cat
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {J : CategoryTheory.GrothendieckTopology C} {S : J.Cover X} {I₁ I₂ : S.Arrow} (self : I₁.Relation I₂)
Goal: CategoryTheory.CategoryStruct.comp self.g₁ I₁.f = CategoryTheory.CategoryStruct.comp self.g₂ I₂.f
-- CategoryTheory.GrothendieckTopology.Cover.Arrow.precomp_f
@[simps]
def Arrow.precomp {S : J.Cover X} (I : S.Arrow) {Z : C} (g : Z ⟶ I.Y) : S.Arrow 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {J : CategoryTheory.GrothendieckTopology C} {S : J.Cover X} (I : S.Arrow) {Z : C} (g : Z ⟶ I.Y)
Goal: (I.precomp g).f = CategoryTheory.CategoryStruct.comp g I.f
-- CategoryTheory.GrothendieckTopology.Cover.Arrow.precomp_Y
@[simps]
def Arrow.precomp {S : J.Cover X} (I : S.Arrow) {Z : C} (g : Z ⟶ I.Y) : S.Arrow 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {X : C} {J : CategoryTheory.GrothendieckTopology C} {S : J.Cover X} (I : S.Arrow) {Z : C} (g : Z ⟶ I.Y)
Goal: (I.precomp g).Y = Z