File: Mathlib/CategoryTheory/Sites/LocallyBijective.lean

full_name: _private.Mathlib.CategoryTheory.Sites.LocallyBijective.0.CategoryTheory.Sheaf.isLocallyBijective_iff_isIso'
code: /-- A morphism of sheaves of types is locally bijective iff it is an isomorphism.
(This is generalized below as `isLocallyBijective_iff_isIso`.) -/
private lemma isLocallyBijective_iff_isIso' :
    IsLocallyInjective f ∧ IsLocallySurjective f ↔ IsIso f 
goal: CategoryTheory.Sheaf.IsLocallyInjective f ∧ CategoryTheory.Sheaf.IsLocallySurjective f ↔ CategoryTheory.IsIso f

full_name: CategoryTheory.Sheaf.isLocallyBijective_iff_isIso
code: lemma isLocallyBijective_iff_isIso :
    IsLocallyInjective f ∧ IsLocallySurjective f ↔ IsIso f 
goal: CategoryTheory.Sheaf.IsLocallyInjective f ∧ CategoryTheory.Sheaf.IsLocallySurjective f ↔ CategoryTheory.IsIso f

full_name: CategoryTheory.GrothendieckTopology.WEqualsLocallyBijective
code: /-- Given a category `C` equipped with a Grothendieck topology `J` and a concrete category `A`,
this property holds if a morphism in `Cᵒᵖ ⥤ A` satisfies `J.W` (i.e. becomes an iso after
sheafification) iff it is both locally injective and locally surjective. -/
class WEqualsLocallyBijective : Prop where
  iff {X Y : Cᵒᵖ ⥤ A} (f : X ⟶ Y) :
    J.W f ↔ Presheaf.IsLocallyInjective J f ∧ Presheaf.IsLocallySurjective J f
goal: Prop

full_name: CategoryTheory.GrothendieckTopology.WEqualsLocallyBijective.iff
code: /-- Given a category `C` equipped with a Grothendieck topology `J` and a concrete category `A`,
this property holds if a morphism in `Cᵒᵖ ⥤ A` satisfies `J.W` (i.e. becomes an iso after
sheafification) iff it is both locally injective and locally surjective. -/
class WEqualsLocallyBijective : Prop where
  iff {X Y : Cᵒᵖ ⥤ A} (f : X ⟶ Y) :
    J.W f ↔ Presheaf.IsLocallyInjective J f ∧ Presheaf.IsLocallySurjective J f
goal: J.W f ↔ CategoryTheory.Presheaf.IsLocallyInjective J f ∧ CategoryTheory.Presheaf.IsLocallySurjective J f

full_name: CategoryTheory.GrothendieckTopology.W_iff_isLocallyBijective
code: lemma W_iff_isLocallyBijective :
    J.W f ↔ Presheaf.IsLocallyInjective J f ∧ Presheaf.IsLocallySurjective J f 
goal: J.W f ↔ CategoryTheory.Presheaf.IsLocallyInjective J f ∧ CategoryTheory.Presheaf.IsLocallySurjective J f

full_name: CategoryTheory.GrothendieckTopology.W_of_isLocallyBijective
code: lemma W_of_isLocallyBijective [Presheaf.IsLocallyInjective J f]
    [Presheaf.IsLocallySurjective J f] : J.W f 
goal: J.W f

full_name: CategoryTheory.GrothendieckTopology.W.isLocallyInjective
code: lemma W.isLocallyInjective (hf : J.W f) : Presheaf.IsLocallyInjective J f 
goal: CategoryTheory.Presheaf.IsLocallyInjective J f

full_name: CategoryTheory.GrothendieckTopology.W.isLocallySurjective
code: lemma W.isLocallySurjective (hf : J.W f) : Presheaf.IsLocallySurjective J f 
goal: CategoryTheory.Presheaf.IsLocallySurjective J f

full_name: CategoryTheory.GrothendieckTopology.instIsLocallyInjectiveToSheafify
code: instance : Presheaf.IsLocallyInjective J (CategoryTheory.toSheafify J P) 
goal: CategoryTheory.Presheaf.IsLocallyInjective J (CategoryTheory.toSheafify J P)

full_name: CategoryTheory.GrothendieckTopology.instIsLocallySurjectiveToSheafify
code: instance : Presheaf.IsLocallySurjective J (CategoryTheory.toSheafify J P) 
goal: CategoryTheory.Presheaf.IsLocallySurjective J (CategoryTheory.toSheafify J P)

full_name: CategoryTheory.GrothendieckTopology.WEqualsLocallyBijective.mk'
code: 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 
goal: J.WEqualsLocallyBijective A

full_name: CategoryTheory.GrothendieckTopology.instWEqualsLocallyBijectiveOfHasWeakSheafifyOfHasSheafComposeOfPreservesSheafificationOfReflectsIsomorphismsForget
code: instance {D : Type w} [Category.{w'} D] [ConcreteCategory.{max u v} D]
    [HasWeakSheafify J D] [J.HasSheafCompose (forget D)]
    [J.PreservesSheafification (forget D)] [(forget D).ReflectsIsomorphisms] :
    J.WEqualsLocallyBijective D 
goal: J.WEqualsLocallyBijective D

full_name: CategoryTheory.GrothendieckTopology.instWEqualsLocallyBijectiveType
code: instance : J.WEqualsLocallyBijective (Type (max u v)) 
goal: J.WEqualsLocallyBijective (Type (max u v))

full_name: CategoryTheory.Presheaf.isLocallyInjective_presheafToSheaf_map_iff
code: lemma isLocallyInjective_presheafToSheaf_map_iff :
    Sheaf.IsLocallyInjective ((presheafToSheaf J A).map φ) ↔ IsLocallyInjective J φ 
goal: CategoryTheory.Sheaf.IsLocallyInjective ((CategoryTheory.presheafToSheaf J A).map φ) ↔
  CategoryTheory.Presheaf.IsLocallyInjective J φ

full_name: CategoryTheory.Presheaf.isLocallySurjective_presheafToSheaf_map_iff
code: lemma isLocallySurjective_presheafToSheaf_map_iff :
    Sheaf.IsLocallySurjective ((presheafToSheaf J A).map φ) ↔ IsLocallySurjective J φ 
goal: CategoryTheory.Sheaf.IsLocallySurjective ((CategoryTheory.presheafToSheaf J A).map φ) ↔
  CategoryTheory.Presheaf.IsLocallySurjective J φ