ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.Presheaf.equalizerSieve_mem
lemma equalizerSieve_mem [IsLocallyInjective J φ]
    {X : Cᵒᵖ} (x y : F₁.obj X) (h : φ.app X x = φ.app X y) :
    equalizerSieve x y ∈ J X.unop 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂) [CategoryTheory.Presheaf.IsLocallyInjective J φ] {X : Cᵒᵖ} (x y : (CategoryTheory.forget D).obj (F₁.obj X)) (h : (φ.app X) x = (φ.app X) y)
Goal: CategoryTheory.Presheaf.equalizerSieve x y ∈ J.sieves (Opposite.unop X)
-- CategoryTheory.Presheaf.isLocallyInjective_of_injective
lemma isLocallyInjective_of_injective (hφ : ∀ (X : Cᵒᵖ), Function.Injective (φ.app X)) :
    IsLocallyInjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂) (hφ : ∀ (X : Cᵒᵖ), Function.Injective ⇑(φ.app X))
Goal: CategoryTheory.Presheaf.IsLocallyInjective J φ
-- CategoryTheory.Presheaf.isLocallyInjective_forget_iff
lemma isLocallyInjective_forget_iff :
    IsLocallyInjective J (whiskerRight φ (forget D)) ↔ IsLocallyInjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂)
Goal: CategoryTheory.Presheaf.IsLocallyInjective J (CategoryTheory.whiskerRight φ (CategoryTheory.forget D)) ↔
  CategoryTheory.Presheaf.IsLocallyInjective J φ
-- CategoryTheory.Presheaf.isLocallyInjective_iff_equalizerSieve_mem_imp
lemma isLocallyInjective_iff_equalizerSieve_mem_imp :
    IsLocallyInjective J φ ↔ ∀ ⦃X : Cᵒᵖ⦄ (x y : F₁.obj X),
      equalizerSieve (φ.app _ x) (φ.app _ y) ∈ J X.unop → equalizerSieve x y ∈ J X.unop 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂)
Goal: CategoryTheory.Presheaf.IsLocallyInjective J φ ↔
  ∀ ⦃X : Cᵒᵖ⦄ (x y : (CategoryTheory.forget D).obj (F₁.obj X)),
    CategoryTheory.Presheaf.equalizerSieve ((φ.app X) x) ((φ.app X) y) ∈ J.sieves (Opposite.unop X) →
      CategoryTheory.Presheaf.equalizerSieve x y ∈ J.sieves (Opposite.unop X)
-- CategoryTheory.Presheaf.equalizerSieve_mem_of_equalizerSieve_app_mem
lemma equalizerSieve_mem_of_equalizerSieve_app_mem
    {X : Cᵒᵖ} (x y : F₁.obj X) (h : equalizerSieve (φ.app _ x) (φ.app _ y) ∈ J X.unop)
    [IsLocallyInjective J φ] :
    equalizerSieve x y ∈ J X.unop 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂) {X : Cᵒᵖ} (x y : (CategoryTheory.forget D).obj (F₁.obj X)) (h : CategoryTheory.Presheaf.equalizerSieve ((φ.app X) x) ((φ.app X) y) ∈ J.sieves (Opposite.unop X)) [CategoryTheory.Presheaf.IsLocallyInjective J φ]
Goal: CategoryTheory.Presheaf.equalizerSieve x y ∈ J.sieves (Opposite.unop X)
-- CategoryTheory.Presheaf.isLocallyInjective_of_isLocallyInjective
lemma isLocallyInjective_of_isLocallyInjective [IsLocallyInjective J (φ ≫ ψ)] :
    IsLocallyInjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ F₃ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂) (ψ : F₂ ⟶ F₃) [CategoryTheory.Presheaf.IsLocallyInjective J (CategoryTheory.CategoryStruct.comp φ ψ)]
Goal: CategoryTheory.Presheaf.IsLocallyInjective J φ
-- CategoryTheory.Presheaf.isLocallyInjective_of_isLocallyInjective_fac
lemma isLocallyInjective_of_isLocallyInjective_fac {φψ : F₁ ⟶ F₃} (fac : φ ≫ ψ = φψ)
    [IsLocallyInjective J φψ] : IsLocallyInjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ F₃ : CategoryTheory.Functor Cᵒᵖ D} {φ : F₁ ⟶ F₂} {ψ : F₂ ⟶ F₃} {φψ : F₁ ⟶ F₃} (fac : CategoryTheory.CategoryStruct.comp φ ψ = φψ) [CategoryTheory.Presheaf.IsLocallyInjective J φψ]
Goal: CategoryTheory.Presheaf.IsLocallyInjective J φ
-- CategoryTheory.Presheaf.isLocallyInjective_iff_of_fac
lemma isLocallyInjective_iff_of_fac {φψ : F₁ ⟶ F₃} (fac : φ ≫ ψ = φψ) [IsLocallyInjective J ψ] :
    IsLocallyInjective J φψ ↔ IsLocallyInjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ F₃ : CategoryTheory.Functor Cᵒᵖ D} {φ : F₁ ⟶ F₂} {ψ : F₂ ⟶ F₃} {φψ : F₁ ⟶ F₃} (fac : CategoryTheory.CategoryStruct.comp φ ψ = φψ) [CategoryTheory.Presheaf.IsLocallyInjective J ψ]
Goal: CategoryTheory.Presheaf.IsLocallyInjective J φψ ↔ CategoryTheory.Presheaf.IsLocallyInjective J φ
-- CategoryTheory.Presheaf.isLocallyInjective_comp_iff
lemma isLocallyInjective_comp_iff [IsLocallyInjective J ψ] :
    IsLocallyInjective J (φ ≫ ψ) ↔ IsLocallyInjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ F₃ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂) (ψ : F₂ ⟶ F₃) [CategoryTheory.Presheaf.IsLocallyInjective J ψ]
Goal: CategoryTheory.Presheaf.IsLocallyInjective J (CategoryTheory.CategoryStruct.comp φ ψ) ↔
  CategoryTheory.Presheaf.IsLocallyInjective J φ
-- CategoryTheory.Presheaf.isLocallyInjective_iff_injective_of_separated
lemma isLocallyInjective_iff_injective_of_separated
    (hsep : Presieve.IsSeparated J (F₁ ⋙ forget D)) :
    IsLocallyInjective J φ ↔ ∀ (X : Cᵒᵖ), Function.Injective (φ.app X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] (J : CategoryTheory.GrothendieckTopology C) {F₁ F₂ : CategoryTheory.Functor Cᵒᵖ D} (φ : F₁ ⟶ F₂) (hsep : CategoryTheory.Presieve.IsSeparated J (F₁.comp (CategoryTheory.forget D)))
Goal: CategoryTheory.Presheaf.IsLocallyInjective J φ ↔ ∀ (X : Cᵒᵖ), Function.Injective ⇑(φ.app X)
-- CategoryTheory.Sheaf.isLocallyInjective_sheafToPresheaf_map_iff
lemma isLocallyInjective_sheafToPresheaf_map_iff :
    Presheaf.IsLocallyInjective J ((sheafToPresheaf J D).map φ) ↔ IsLocallyInjective φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] {J : CategoryTheory.GrothendieckTopology C} {F₁ F₂ : CategoryTheory.Sheaf J D} (φ : F₁ ⟶ F₂)
Goal: CategoryTheory.Presheaf.IsLocallyInjective J ((CategoryTheory.sheafToPresheaf J D).map φ) ↔
  CategoryTheory.Sheaf.IsLocallyInjective φ
-- CategoryTheory.Sheaf.isLocallyInjective_iff_injective
lemma isLocallyInjective_iff_injective :
    IsLocallyInjective φ ↔ ∀ (X : Cᵒᵖ), Function.Injective (φ.val.app X) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] {J : CategoryTheory.GrothendieckTopology C} {F₁ F₂ : CategoryTheory.Sheaf J D} (φ : F₁ ⟶ F₂) [J.HasSheafCompose (CategoryTheory.forget D)]
Goal: CategoryTheory.Sheaf.IsLocallyInjective φ ↔ ∀ (X : Cᵒᵖ), Function.Injective ⇑(φ.val.app X)
-- CategoryTheory.Sheaf.mono_of_injective
lemma mono_of_injective
    (hφ : ∀ (X : Cᵒᵖ), Function.Injective (φ.val.app X)) : Mono φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] {J : CategoryTheory.GrothendieckTopology C} {F₁ F₂ : CategoryTheory.Sheaf J D} (φ : F₁ ⟶ F₂) (hφ : ∀ (X : Cᵒᵖ), Function.Injective ⇑(φ.val.app X))
Goal: CategoryTheory.Mono φ
-- CategoryTheory.Sheaf.mono_of_isLocallyInjective
lemma mono_of_isLocallyInjective [IsLocallyInjective φ] : Mono φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {D : Type u'} [CategoryTheory.Category.{v', u'} D] [CategoryTheory.ConcreteCategory D] {J : CategoryTheory.GrothendieckTopology C} {F₁ F₂ : CategoryTheory.Sheaf J D} (φ : F₁ ⟶ F₂) [J.HasSheafCompose (CategoryTheory.forget D)] [CategoryTheory.Sheaf.IsLocallyInjective φ]
Goal: CategoryTheory.Mono φ
-- _private.Mathlib.CategoryTheory.Sites.LocallyBijective.0.CategoryTheory.Sheaf.isLocallyBijective_iff_isIso'
private lemma isLocallyBijective_iff_isIso' :
    IsLocallyInjective f ∧ IsLocallySurjective f ↔ IsIso f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : CategoryTheory.GrothendieckTopology C} {F G : CategoryTheory.Sheaf J (Type w)} (f : F ⟶ G)
Goal: CategoryTheory.Sheaf.IsLocallyInjective f ∧ CategoryTheory.Sheaf.IsLocallySurjective f ↔ CategoryTheory.IsIso f
-- CategoryTheory.Sheaf.isLocallyBijective_iff_isIso
lemma isLocallyBijective_iff_isIso :
    IsLocallyInjective f ∧ IsLocallySurjective f ↔ IsIso f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : CategoryTheory.Sheaf J A} (f : F ⟶ G) [(CategoryTheory.forget A).ReflectsIsomorphisms] [J.HasSheafCompose (CategoryTheory.forget A)]
Goal: CategoryTheory.Sheaf.IsLocallyInjective f ∧ CategoryTheory.Sheaf.IsLocallySurjective f ↔ CategoryTheory.IsIso f
-- CategoryTheory.GrothendieckTopology.WEqualsLocallyBijective.iff
class WEqualsLocallyBijective : Prop where
  iff {X Y : Cᵒᵖ ⥤ A} (f : X ⟶ Y) :
    J.W f ↔ Presheaf.IsLocallyInjective J f ∧ Presheaf.IsLocallySurjective J f
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [self : J.WEqualsLocallyBijective A] {X Y : CategoryTheory.Functor Cᵒᵖ A} (f : X ⟶ Y)
Goal: J.W f ↔ CategoryTheory.Presheaf.IsLocallyInjective J f ∧ CategoryTheory.Presheaf.IsLocallySurjective J f
-- CategoryTheory.GrothendieckTopology.W_iff_isLocallyBijective
lemma W_iff_isLocallyBijective :
    J.W f ↔ Presheaf.IsLocallyInjective J f ∧ Presheaf.IsLocallySurjective J f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [J.WEqualsLocallyBijective A] {X Y : CategoryTheory.Functor Cᵒᵖ A} (f : X ⟶ Y)
Goal: J.W f ↔ CategoryTheory.Presheaf.IsLocallyInjective J f ∧ CategoryTheory.Presheaf.IsLocallySurjective J f
-- CategoryTheory.GrothendieckTopology.W_of_isLocallyBijective
lemma W_of_isLocallyBijective [Presheaf.IsLocallyInjective J f]
    [Presheaf.IsLocallySurjective J f] : J.W f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [J.WEqualsLocallyBijective A] {X Y : CategoryTheory.Functor Cᵒᵖ A} (f : X ⟶ Y) [CategoryTheory.Presheaf.IsLocallyInjective J f] [CategoryTheory.Presheaf.IsLocallySurjective J f]
Goal: J.W f
-- CategoryTheory.GrothendieckTopology.W.isLocallyInjective
lemma W.isLocallyInjective (hf : J.W f) : Presheaf.IsLocallyInjective J f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [J.WEqualsLocallyBijective A] {X Y : CategoryTheory.Functor Cᵒᵖ A} {f : X ⟶ Y} (hf : J.W f)
Goal: CategoryTheory.Presheaf.IsLocallyInjective J f
-- CategoryTheory.GrothendieckTopology.W.isLocallySurjective
lemma W.isLocallySurjective (hf : J.W f) : Presheaf.IsLocallySurjective J f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [J.WEqualsLocallyBijective A] {X Y : CategoryTheory.Functor Cᵒᵖ A} {f : X ⟶ Y} (hf : J.W f)
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f
-- CategoryTheory.GrothendieckTopology.WEqualsLocallyBijective.mk'
lemma WEqualsLocallyBijective.mk' [HasWeakSheafify J A] [(forget A).ReflectsIsomorphisms]
    [J.HasSheafCompose (forget A)]
    [∀ (P : Cᵒᵖ ⥤ A), Presheaf.IsLocallyInjective J (CategoryTheory.toSheafify J P)]
    [∀ (P : Cᵒᵖ ⥤ A), Presheaf.IsLocallySurjective J (CategoryTheory.toSheafify J P)] :
    J.WEqualsLocallyBijective A 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) (A : Type u') [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [CategoryTheory.HasWeakSheafify J A] [(CategoryTheory.forget A).ReflectsIsomorphisms] [J.HasSheafCompose (CategoryTheory.forget A)] [∀ (P : CategoryTheory.Functor Cᵒᵖ A), CategoryTheory.Presheaf.IsLocallyInjective J (CategoryTheory.toSheafify J P)] [∀ (P : CategoryTheory.Functor Cᵒᵖ A), CategoryTheory.Presheaf.IsLocallySurjective J (CategoryTheory.toSheafify J P)]
Goal: J.WEqualsLocallyBijective A
-- CategoryTheory.Presheaf.isLocallyInjective_presheafToSheaf_map_iff
lemma isLocallyInjective_presheafToSheaf_map_iff :
    Sheaf.IsLocallyInjective ((presheafToSheaf J A).map φ) ↔ IsLocallyInjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [CategoryTheory.HasWeakSheafify J A] [J.WEqualsLocallyBijective A] {P Q : CategoryTheory.Functor Cᵒᵖ A} (φ : P ⟶ Q)
Goal: CategoryTheory.Sheaf.IsLocallyInjective ((CategoryTheory.presheafToSheaf J A).map φ) ↔
  CategoryTheory.Presheaf.IsLocallyInjective J φ
-- CategoryTheory.Presheaf.isLocallySurjective_presheafToSheaf_map_iff
lemma isLocallySurjective_presheafToSheaf_map_iff :
    Sheaf.IsLocallySurjective ((presheafToSheaf J A).map φ) ↔ IsLocallySurjective J φ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] [CategoryTheory.HasWeakSheafify J A] [J.WEqualsLocallyBijective A] {P Q : CategoryTheory.Functor Cᵒᵖ A} (φ : P ⟶ Q)
Goal: CategoryTheory.Sheaf.IsLocallySurjective ((CategoryTheory.presheafToSheaf J A).map φ) ↔
  CategoryTheory.Presheaf.IsLocallySurjective J φ
-- CategoryTheory.Presheaf.imageSieve_apply
@[simps (config := .lemmasOnly)]
def imageSieve {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : G.obj (op U)) : Sieve U 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : (CategoryTheory.forget A).obj (G.obj (Opposite.op U))) (V : C) (i : V ⟶ U)
Goal: (CategoryTheory.Presheaf.imageSieve f s).arrows i = ∃ t, (f.app (Opposite.op V)) t = (G.map i.op) s
-- CategoryTheory.Presheaf.imageSieve_eq_sieveOfSection
theorem imageSieve_eq_sieveOfSection {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : G.obj (op U)) :
    imageSieve f s = (imagePresheaf (whiskerRight f (forget A))).sieveOfSection s 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : (CategoryTheory.forget A).obj (G.obj (Opposite.op U)))
Goal: CategoryTheory.Presheaf.imageSieve f s =
  (CategoryTheory.GrothendieckTopology.imagePresheaf
        (CategoryTheory.whiskerRight f (CategoryTheory.forget A))).sieveOfSection
    s
-- CategoryTheory.Presheaf.imageSieve_whisker_forget
theorem imageSieve_whisker_forget {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : G.obj (op U)) :
    imageSieve (whiskerRight f (forget A)) s = imageSieve f s 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : (CategoryTheory.forget A).obj (G.obj (Opposite.op U)))
Goal: CategoryTheory.Presheaf.imageSieve (CategoryTheory.whiskerRight f (CategoryTheory.forget A)) s =
  CategoryTheory.Presheaf.imageSieve f s
-- CategoryTheory.Presheaf.imageSieve_app
theorem imageSieve_app {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : F.obj (op U)) :
    imageSieve f (f.app _ s) = ⊤ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : C} (s : (CategoryTheory.forget A).obj (F.obj (Opposite.op U)))
Goal: CategoryTheory.Presheaf.imageSieve f ((f.app (Opposite.op U)) s) = ⊤
-- CategoryTheory.Presheaf.app_localPreimage
@[simp]
lemma app_localPreimage {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : Cᵒᵖ} (s : G.obj U)
    {V : C} (g : V ⟶ U.unop) (hg : imageSieve f s g) :
    f.app _ (localPreimage f s g hg) = G.map g.op s 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) {U : Cᵒᵖ} (s : (CategoryTheory.forget A).obj (G.obj U)) {V : C} (g : V ⟶ Opposite.unop U) (hg : (CategoryTheory.Presheaf.imageSieve f s).arrows g)
Goal: (f.app (Opposite.op V)) (CategoryTheory.Presheaf.localPreimage f s g hg) = (G.map g.op) s
-- CategoryTheory.Presheaf.IsLocallySurjective.imageSieve_mem
class IsLocallySurjective {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) : Prop where
  imageSieve_mem {U : C} (s : G.obj (op U)) : imageSieve f s ∈ J U
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} {f : F ⟶ G} [self : CategoryTheory.Presheaf.IsLocallySurjective J f] {U : C} (s : (CategoryTheory.forget A).obj (G.obj (Opposite.op U)))
Goal: CategoryTheory.Presheaf.imageSieve f s ∈ J.sieves U
-- CategoryTheory.Presheaf.imageSieve_mem
lemma imageSieve_mem {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) [IsLocallySurjective J f] {U : Cᵒᵖ}
    (s : G.obj U) : imageSieve f s ∈ J U.unop 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) [CategoryTheory.Presheaf.IsLocallySurjective J f] {U : Cᵒᵖ} (s : (CategoryTheory.forget A).obj (G.obj U))
Goal: CategoryTheory.Presheaf.imageSieve f s ∈ J.sieves (Opposite.unop U)
-- CategoryTheory.Presheaf.isLocallySurjective_iff_imagePresheaf_sheafify_eq_top
theorem isLocallySurjective_iff_imagePresheaf_sheafify_eq_top {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) :
    IsLocallySurjective J f ↔ (imagePresheaf (whiskerRight f (forget A))).sheafify J = ⊤ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G)
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f ↔
  CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify J
      (CategoryTheory.GrothendieckTopology.imagePresheaf (CategoryTheory.whiskerRight f (CategoryTheory.forget A))) =
    ⊤
-- CategoryTheory.Presheaf.isLocallySurjective_iff_imagePresheaf_sheafify_eq_top'
theorem isLocallySurjective_iff_imagePresheaf_sheafify_eq_top' {F G : Cᵒᵖ ⥤ Type w} (f : F ⟶ G) :
    IsLocallySurjective J f ↔ (imagePresheaf f).sheafify J = ⊤ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {F G : Cᵒᵖ ⥤ Type w} (f : F ⟶ G)
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f ↔
  CategoryTheory.GrothendieckTopology.Subpresheaf.sheafify J (CategoryTheory.GrothendieckTopology.imagePresheaf f) = ⊤
-- CategoryTheory.Presheaf.isLocallySurjective_iff_whisker_forget
theorem isLocallySurjective_iff_whisker_forget {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) :
    IsLocallySurjective J f ↔ IsLocallySurjective J (whiskerRight f (forget A)) 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G)
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f ↔
  CategoryTheory.Presheaf.IsLocallySurjective J (CategoryTheory.whiskerRight f (CategoryTheory.forget A))
-- CategoryTheory.Presheaf.isLocallySurjective_of_surjective
theorem isLocallySurjective_of_surjective {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G)
    (H : ∀ U, Function.Surjective (f.app U)) : IsLocallySurjective J f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) (H : ∀ (U : Cᵒᵖ), Function.Surjective ⇑(f.app U))
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f
-- CategoryTheory.Presheaf.isLocallySurjective_of_isLocallySurjective
lemma isLocallySurjective_of_isLocallySurjective
    {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} (f₁ : F₁ ⟶ F₂) (f₂ : F₂ ⟶ F₃)
    [IsLocallySurjective J (f₁ ≫ f₂)] :
    IsLocallySurjective J f₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} (f₁ : F₁ ⟶ F₂) (f₂ : F₂ ⟶ F₃) [CategoryTheory.Presheaf.IsLocallySurjective J (f₁ ≫ f₂)]
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f₂
-- CategoryTheory.Presheaf.isLocallySurjective_of_isLocallySurjective_fac
lemma isLocallySurjective_of_isLocallySurjective_fac
    {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} {f₁ : F₁ ⟶ F₂} {f₂ : F₂ ⟶ F₃} {f₃ : F₁ ⟶ F₃} (fac : f₁ ≫ f₂ = f₃)
    [IsLocallySurjective J f₃] : IsLocallySurjective J f₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} {f₁ : F₁ ⟶ F₂} {f₂ : F₂ ⟶ F₃} {f₃ : F₁ ⟶ F₃} (fac : f₁ ≫ f₂ = f₃) [CategoryTheory.Presheaf.IsLocallySurjective J f₃]
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f₂
-- CategoryTheory.Presheaf.isLocallySurjective_iff_of_fac
lemma isLocallySurjective_iff_of_fac
    {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} {f₁ : F₁ ⟶ F₂} {f₂ : F₂ ⟶ F₃} {f₃ : F₁ ⟶ F₃} (fac : f₁ ≫ f₂ = f₃)
    [IsLocallySurjective J f₁] :
    IsLocallySurjective J f₃ ↔ IsLocallySurjective J f₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} {f₁ : F₁ ⟶ F₂} {f₂ : F₂ ⟶ F₃} {f₃ : F₁ ⟶ F₃} (fac : f₁ ≫ f₂ = f₃) [CategoryTheory.Presheaf.IsLocallySurjective J f₁]
Goal: CategoryTheory.Presheaf.IsLocallySurjective J f₃ ↔ CategoryTheory.Presheaf.IsLocallySurjective J f₂
-- CategoryTheory.Presheaf.comp_isLocallySurjective_iff
lemma comp_isLocallySurjective_iff
    {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} (f₁ : F₁ ⟶ F₂) (f₂ : F₂ ⟶ F₃)
    [IsLocallySurjective J f₁] :
    IsLocallySurjective J (f₁ ≫ f₂) ↔ IsLocallySurjective J f₂ 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] (J : CategoryTheory.GrothendieckTopology C) {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {F₁ F₂ F₃ : Cᵒᵖ ⥤ A} (f₁ : F₁ ⟶ F₂) (f₂ : F₂ ⟶ F₃) [CategoryTheory.Presheaf.IsLocallySurjective J f₁]
Goal: CategoryTheory.Presheaf.IsLocallySurjective J (f₁ ≫ f₂) ↔ CategoryTheory.Presheaf.IsLocallySurjective J f₂
-- CategoryTheory.Presheaf.isLocallySurjective_of_le
lemma isLocallySurjective_of_le {K : GrothendieckTopology C} (hJK : J ≤ K) {F G : Cᵒᵖ ⥤ A}
    (f : F ⟶ G) (h : IsLocallySurjective J f) : IsLocallySurjective K f 
Arguments: {C : Type u} [CategoryTheory.Category.{v, u} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u'} [CategoryTheory.Category.{v', u'} A] [CategoryTheory.ConcreteCategory A] {K : CategoryTheory.GrothendieckTopology C} (hJK : J ≤ K) {F G : Cᵒᵖ ⥤ A} (f : F ⟶ G) (h : CategoryTheory.Presheaf.IsLocallySurjective J f)
Goal: CategoryTheory.Presheaf.IsLocallySurjective K f