File: Mathlib/CategoryTheory/EffectiveEpi/Enough.lean

full_name: CategoryTheory.Functor.EffectivePresentation.f
code: /--
An effective presentation of an object `X` with respect to a functor `F` is the data of an effective
epimorphism of the form `F.obj p ⟶ X`.
-/
structure EffectivePresentation (X : D) where
  /-- The object of `C` giving the source of the effective epi -/
  p : C
  /-- The morphism `F.obj p ⟶ X` -/
  f : F.obj p ⟶ X
  /-- `f` is an effective epi -/
  effectiveEpi : EffectiveEpi f
goal: F.obj self.p ⟶ X

full_name: CategoryTheory.Functor.EffectivePresentation
code: /--
An effective presentation of an object `X` with respect to a functor `F` is the data of an effective
epimorphism of the form `F.obj p ⟶ X`.
-/
structure EffectivePresentation (X : D) where
  /-- The object of `C` giving the source of the effective epi -/
  p : C
  /-- The morphism `F.obj p ⟶ X` -/
  f : F.obj p ⟶ X
  /-- `f` is an effective epi -/
  effectiveEpi : EffectiveEpi f
goal: Type (max u_1 u_4)

full_name: CategoryTheory.Functor.EffectivePresentation.p
code: /--
An effective presentation of an object `X` with respect to a functor `F` is the data of an effective
epimorphism of the form `F.obj p ⟶ X`.
-/
structure EffectivePresentation (X : D) where
  /-- The object of `C` giving the source of the effective epi -/
  p : C
  /-- The morphism `F.obj p ⟶ X` -/
  f : F.obj p ⟶ X
  /-- `f` is an effective epi -/
  effectiveEpi : EffectiveEpi f
goal: C

full_name: CategoryTheory.Functor.EffectivePresentation.effectiveEpi
code: /--
An effective presentation of an object `X` with respect to a functor `F` is the data of an effective
epimorphism of the form `F.obj p ⟶ X`.
-/
structure EffectivePresentation (X : D) where
  /-- The object of `C` giving the source of the effective epi -/
  p : C
  /-- The morphism `F.obj p ⟶ X` -/
  f : F.obj p ⟶ X
  /-- `f` is an effective epi -/
  effectiveEpi : EffectiveEpi f
goal: CategoryTheory.EffectiveEpi self.f

full_name: CategoryTheory.Functor.EffectivelyEnough.presentation
code: /--
`D` has *effectively enough objects with respect to the functor `F` if every object has an
effective presentation.
-/
class EffectivelyEnough : Prop where
  /-- For every `X : D`, there exists an object `p` of `C` with an effective epi `F.obj p ⟶ X`. -/
  presentation : ∀ (X : D), Nonempty (F.EffectivePresentation X)
goal: Nonempty (F.EffectivePresentation X)

full_name: CategoryTheory.Functor.EffectivelyEnough
code: /--
`D` has *effectively enough objects with respect to the functor `F` if every object has an
effective presentation.
-/
class EffectivelyEnough : Prop where
  /-- For every `X : D`, there exists an object `p` of `C` with an effective epi `F.obj p ⟶ X`. -/
  presentation : ∀ (X : D), Nonempty (F.EffectivePresentation X)
goal: Prop

full_name: CategoryTheory.Functor.effectiveEpiOverObj
code: /--
`F.effectiveEpiOverObj X` provides an arbitrarily chosen object in the image of `F` equipped with an
effective epimorphism `F.effectiveEpiOver : F.effectiveEpiOverObj X ⟶ X`.
-/
noncomputable def effectiveEpiOverObj (X : D) : D 
goal: D

full_name: CategoryTheory.Functor.effectiveEpiOver
code: /--
The epimorphism `F.effectiveEpiOver : F.effectiveEpiOverObj X ⟶ X` from the arbitrarily chosen
object in the image of `F` over `X`.
-/
noncomputable def effectiveEpiOver (X : D) : F.effectiveEpiOverObj X ⟶ X 
goal: F.effectiveEpiOverObj X ⟶ X

full_name: CategoryTheory.Functor.instEffectiveEpiEffectiveEpiOver
code: instance (X : D) : EffectiveEpi (F.effectiveEpiOver X) 
goal: CategoryTheory.EffectiveEpi (F.effectiveEpiOver X)

full_name: CategoryTheory.Functor.equivalenceEffectivePresentation
code: /-- An effective presentation of an object with respect to an equivalence of categories. -/
def equivalenceEffectivePresentation (e : C ≌ D) (X : D) :
    EffectivePresentation e.functor X 
goal: e.functor.EffectivePresentation X

full_name: CategoryTheory.Functor.instEffectivelyEnoughOfIsEquivalence
code: instance [IsEquivalence F] : EffectivelyEnough F 
goal: F.EffectivelyEnough