-- Module: Mathlib.CategoryTheory.Sites.Point.Conservative
Goal:
C : Type u
inst : Category.{v, u} C
J : GrothendieckTopology.{v, u} C
P : ObjectProperty (GrothendieckTopology.Point.{w, v, u} J)
inst_1 : LocallySmall.{w, v, u} C
hP :
  ∀ ⦃X : C⦄ (S : Sieve.{v, u} X),
    (∀ (Φ : P.FullSubcategory) (x : Φ.obj (P := P).fiber.obj X),
        ∃ (Y : C) (g : Y ⟶ X) (_ : S.arrows g) (y : Φ.obj (P := P).fiber.obj Y),
          (ConcreteCategory.hom (FC := TypeCat.Fun) (Φ.obj (P := P).fiber.map g) :
                (a : (fun (X : Type w) ↦ X) (Φ.obj.fiber.obj Y)) → (fun (X : Type w) ↦ X) (Φ.obj.fiber.obj X))
              y =
            x) →
      S ∈ (J : (a : C) → Set (Sieve a)) X
F₁ : Functor.{v, w, u, w + 1} Cᵒᵖ (Type w)
U : C
f : F₁ ⟶ Functor.obj shrinkYoneda.{w, v, u} U
inst_2 : Mono f
hf :
  ∀ (Φ : P.FullSubcategory),
    Function.Surjective (α := (fun (X : Type w) ↦ X) (Functor.obj Φ.obj (P := P).presheafFiber F₁)) (β :=
      (fun (X : Type w) ↦ X) (Functor.obj Φ.obj (P := P).presheafFiber (Functor.obj shrinkYoneda.{w, v, u} U)))
      (⇑(ConcreteCategory.hom (FC := TypeCat.Fun) (Functor.map Φ.obj (P := P).presheafFiber f)) :
        (a : (fun (X : Type w) ↦ X) (Φ.obj.presheafFiber.obj F₁)) →
          (fun (X : Type w) ↦ X) (Φ.obj.presheafFiber.obj (shrinkYoneda.{w, v, u}.obj U)))
Φ : P.FullSubcategory
u : Φ.obj (P := P).fiber.obj U
V : C
v : Φ.obj (P := P).fiber.obj V
y : ToType (FC := TypeCat.Fun) (F₁.obj (op V))
hx₁ :
  Eq (α := (fun (X : Type w) ↦ X) (Functor.obj Φ.obj (P := P).presheafFiber (Functor.obj shrinkYoneda.{w, v, u} U)))
    ((ConcreteCategory.hom (FC := TypeCat.Fun) (Functor.map Φ.obj (P := P).presheafFiber f) :
          (a : (fun (X : Type w) ↦ X) (Φ.obj.presheafFiber.obj F₁)) →
            (fun (X : Type w) ↦ X) (Φ.obj.presheafFiber.obj (shrinkYoneda.{w, v, u}.obj U)))
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (Φ.obj (P := P).toPresheafFiber V v F₁) :
              (a : F₁.obj (op V)) → Φ.obj.presheafFiber.obj F₁)
            y :
          Functor.obj Φ.obj (P := P).presheafFiber F₁) :
      (fun (X : Type w) ↦ X) (Functor.obj Φ.obj (P := P).presheafFiber (Functor.obj shrinkYoneda.{w, v, u} U)))
    ((ConcreteCategory.hom (FC := TypeCat.Fun)
            (NatTrans.app (Iso.inv Φ.obj (P := P).shrinkYonedaCompPresheafFiberIso) U) :
          (a : (fun (X : Type w) ↦ X) (Φ.obj.fiber.obj U)) →
            (fun (X : Type w) ↦ X) ((shrinkYoneda.{w, v, u} ⋙ Φ.obj.presheafFiber).obj U))
        u :
      (fun (X : Type w) ↦ X) ((shrinkYoneda.{w, v, u} ⋙ Φ.obj (P := P).presheafFiber).obj U))
t : unop (op V) ⟶ U
ht :
  Eq.{w + 1} (α := Functor.obj.{v, w, u, w + 1} (Functor.obj shrinkYoneda.{w, v, u} U) (op V))
    ((Equiv.symm shrinkYonedaObjObjEquiv : (a : unop (op V) ⟶ U) → (shrinkYoneda.{w, v, u}.obj U).obj (op V)) t :
      Functor.obj.{v, w, u, w + 1} (Functor.obj shrinkYoneda.{w, v, u} U) (op V))
    ((ConcreteCategory.hom (FC := TypeCat.Fun) (f.app (op V)) :
          (a : (fun (X : Type w) ↦ X) (F₁.obj (op V))) →
            (fun (X : Type w) ↦ X) ((shrinkYoneda.{w, v, u}.obj U).obj (op V)))
        y :
      (fun (X : Type w) ↦ X) (Functor.obj.{v, w, u, w + 1} (Functor.obj shrinkYoneda.{w, v, u} U) (op V)))
refine_2 :
  Eq (α := (shrinkYoneda.{w, v, u} ⋙ Φ.obj (P := P).presheafFiber).obj U)
    ((ConcreteCategory.hom (FC := TypeCat.Fun)
            (NatTrans.app (Iso.inv Φ.obj (P := P).shrinkYonedaCompPresheafFiberIso) U) :
          (a : Φ.obj.fiber.obj U) → (shrinkYoneda.{w, v, u} ⋙ Φ.obj.presheafFiber).obj U)
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (Φ.obj (P := P).fiber.map t) :
              (a : Φ.obj.fiber.obj V) → Φ.obj.fiber.obj U)
            v :
          Φ.obj (P := P).fiber.obj U) :
      (shrinkYoneda.{w, v, u} ⋙ Φ.obj (P := P).presheafFiber).obj U)
    ((ConcreteCategory.hom (FC := TypeCat.Fun)
            (NatTrans.app (Iso.inv Φ.obj (P := P).shrinkYonedaCompPresheafFiberIso) U) :
          (a : Φ.obj.fiber.obj U) → (shrinkYoneda.{w, v, u} ⋙ Φ.obj.presheafFiber).obj U)
        u :
      (shrinkYoneda.{w, v, u} ⋙ Φ.obj (P := P).presheafFiber).obj U)
⊢ Eq (α := (shrinkYoneda.{w, v, u} ⋙ Φ.obj (P := P).presheafFiber).obj U)
    ((Iso.toEquiv (Iso.app (Iso.symm Φ.obj (P := P).shrinkYonedaCompPresheafFiberIso) U) :
          (a : Φ.obj.fiber.obj U) → (shrinkYoneda.{w, v, u} ⋙ Φ.obj.presheafFiber).obj U)
        ((ConcreteCategory.hom (FC := TypeCat.Fun) (Φ.obj (P := P).fiber.map t) :
              (a : (fun (X : Type w) ↦ X) (Φ.obj.fiber.obj V)) → (fun (X : Type w) ↦ X) (Φ.obj.fiber.obj U))
            v :
          (fun (X : Type w) ↦ X) (Φ.obj (P := P).fiber.obj U)) :
      (shrinkYoneda.{w, v, u} ⋙ Φ.obj (P := P).presheafFiber).obj U)
    ((Iso.toEquiv (Iso.app (Iso.symm Φ.obj (P := P).shrinkYonedaCompPresheafFiberIso) U) :
          (a : Φ.obj.fiber.obj U) → (shrinkYoneda.{w, v, u} ⋙ Φ.obj.presheafFiber).obj U)
        u :
      (shrinkYoneda.{w, v, u} ⋙ Φ.obj (P := P).presheafFiber).obj U)

Tactic:
dsimp [-Functor.comp_obj]

Premises used: CategoryTheory.Functor.comp_obj