-- Module: Mathlib.Geometry.RingedSpace.Stalks
Goal:
C : Type u
inst : Category.{v, u} C
inst_1 : HasColimits.{v, u} C
X Y : PresheafedSpace.{v, u, v} C
α : X ⟶ Y
inst_2 : IsIso α
x : (↑(↑X : TopCat) : Type v)
β : Y ⟶ X := CategoryTheory.inv α
h_eq :
  (ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
          (α ≫ β).base :
        (a : (↑(↑X : TopCat) : Type v)) → (↑(↑X : TopCat) : Type v))
      x =
    x
refine_1 :
  CategoryStruct.comp (Y :=
      Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
                  (α ≫ β).base :
                (a : (↑(↑X : TopCat) : Type v)) → (↑(↑X : TopCat) : Type v))
              x :
            (↑(↑X : TopCat) : Type v))))
      (eqToHom ⋯)
      (eqToHom ⋯ ≫
        Hom.stalkMap (𝟙 Y)
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
                α.base :
              (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
            x)) =
    𝟙
      (Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x))
refine_1₁ :
  Eq.{v + 1} (α :=
    Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x) ⟶
      Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x))
    (CategoryStruct.comp (Y :=
      Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
                  (α ≫ β).base :
                (a : (↑(↑X : TopCat) : Type v)) → (↑(↑X : TopCat) : Type v))
              x :
            (↑(↑X : TopCat) : Type v))))
      (eqToHom ⋯)
      (eqToHom ⋯ ≫
        𝟙
          (Y.presheaf.stalk
            ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC :=
                  TopCat.carrier) α.base :
                (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
              x))))
    (𝟙
      (Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x)))
refine_1₂ :
  Eq.{v + 1} (α :=
    Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x) ⟶
      Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x))
    (eqToHom ⋯ ≫
      𝟙
        (Y.presheaf.stalk
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
                α.base :
              (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
            x)))
    (𝟙
      (Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x)))
refine_1₃ :
  Eq.{v + 1} (α :=
    Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x) ⟶
      Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x))
    (𝟙
        (Y.presheaf.stalk
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
                α.base :
              (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
            x)) ≫
      𝟙
        (Y.presheaf.stalk
          ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
                α.base :
              (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
            x)))
    (𝟙
      (Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x)))
refine_1₄ refine_1₅ :
  Eq.{v + 1} (α :=
    Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x) ⟶
      Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x))
    (𝟙
      (Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x)))
    (𝟙
      (Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x)))
⊢ eqToHom ⋯ ≫
      Hom.stalkMap (β ≫ α)
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x) =
    𝟙
      (Y.presheaf.stalk
        ((ConcreteCategory.hom (FC := fun (X Y : TopCat.{v}) ↦ C((↑X : Type v), (↑Y : Type v))) (CC := TopCat.carrier)
              α.base :
            (a : (↑(↑X : TopCat) : Type v)) → (↑(↑Y : TopCat) : Type v))
          x))

Tactic:
rw [congr_hom _ _ (IsIso.inv_hom_id α), stalkMap.id, eqToHom_trans_assoc, eqToHom_refl,
        Category.id_comp]

Premises used: CategoryTheory.IsIso.inv_hom_id, CategoryTheory.eqToHom_refl, AlgebraicGeometry.PresheafedSpace.stalkMap.id, AlgebraicGeometry.PresheafedSpace.stalkMap.congr_hom, CategoryTheory.eqToHom_trans_assoc, CategoryTheory.Category.id_comp