Theorem: AlgebraicGeometry.Scheme.OpenCover.pullbackCoverAffineRefinementObjIso_inv_pullbackHom
File: Mathlib/AlgebraicGeometry/Cover/Open.lean

Proof steps:
state_before: X Y Z : Scheme
𝒰✝ : X.OpenCover
f✝ : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f✝) g
f : X ⟶ Y
𝒰 : Y.OpenCover
i : (𝒰.affineRefinement.openCover.pullbackCover f).J
⊢ (pullbackCoverAffineRefinementObjIso f 𝒰 i).inv ≫ 𝒰.affineRefinement.openCover.pullbackHom f i =
    (𝒰.obj i.fst).affineCover.pullbackHom (𝒰.pullbackHom f i.fst) i.snd
state_after: X Y Z : Scheme
𝒰✝ : X.OpenCover
f✝ : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f✝) g
f : X ⟶ Y
𝒰 : Y.OpenCover
i : (𝒰.affineRefinement.openCover.pullbackCover f).J
⊢ (pullbackSymmetry ((𝒰.obj i.fst).affineCover.map i.snd) (pullback.fst (𝒰.map i.fst) f)).inv ≫
      (pullbackRightPullbackFstIso (𝒰.map i.fst) f ((𝒰.obj i.fst).affineCover.map i.snd)).hom ≫
        pullback.fst (𝒰.affineRefinement.map i) f =
    pullback.snd (pullback.fst (𝒰.map i.fst) f) ((𝒰.obj i.fst).affineCover.map i.snd)
tactic: simp only [pullbackCover_obj, pullbackHom, AffineOpenCover.openCover_obj,
    AffineOpenCover.openCover_map, pullbackCoverAffineRefinementObjIso, Iso.trans_inv, asIso_inv,
    Iso.symm_inv, Category.assoc, pullbackSymmetry_inv_comp_snd, IsIso.inv_comp_eq, limit.lift_π,
    id_eq, PullbackCone.mk_pt, PullbackCone.mk_π_app, Category.comp_id]
state_before: X Y Z : Scheme
𝒰✝ : X.OpenCover
f✝ : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f✝) g
f : X ⟶ Y
𝒰 : Y.OpenCover
i : (𝒰.affineRefinement.openCover.pullbackCover f).J
⊢ (pullbackSymmetry ((𝒰.obj i.fst).affineCover.map i.snd) (pullback.fst (𝒰.map i.fst) f)).inv ≫
      (pullbackRightPullbackFstIso (𝒰.map i.fst) f ((𝒰.obj i.fst).affineCover.map i.snd)).hom ≫
        pullback.fst (𝒰.affineRefinement.map i) f =
    pullback.snd (pullback.fst (𝒰.map i.fst) f) ((𝒰.obj i.fst).affineCover.map i.snd)
state_after: case h.e'_2.h.h.e'_7.h
X Y Z : Scheme
𝒰✝ : X.OpenCover
f✝ : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f✝) g
f : X ⟶ Y
𝒰 : Y.OpenCover
i : (𝒰.affineRefinement.openCover.pullbackCover f).J
e_1✝ :
  (pullback (pullback.fst (𝒰.map i.fst) f) ((𝒰.obj i.fst).affineCover.map i.snd) ⟶ Spec (𝒰.affineRefinement.obj i)) =
    (pullback (pullback.fst (𝒰.map i.fst) f) ((𝒰.obj i.fst).affineCover.map i.snd) ⟶
      (𝒰.obj i.fst).affineCover.obj i.snd)
e_5✝ : Spec (𝒰.affineRefinement.obj i) = (𝒰.obj i.fst).affineCover.obj i.snd
⊢ (pullbackRightPullbackFstIso (𝒰.map i.fst) f ((𝒰.obj i.fst).affineCover.map i.snd)).hom ≫
      pullback.fst (𝒰.affineRefinement.map i) f =
    pullback.fst ((𝒰.obj i.fst).affineCover.map i.snd) (pullback.fst (𝒰.map i.fst) f)
tactic: convert pullbackSymmetry_inv_comp_fst ((𝒰.obj i.1).affineCover.map i.2) (pullback.fst _ _)
state_before: case h.e'_2.h.h.e'_7.h
X Y Z : Scheme
𝒰✝ : X.OpenCover
f✝ : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f✝) g
f : X ⟶ Y
𝒰 : Y.OpenCover
i : (𝒰.affineRefinement.openCover.pullbackCover f).J
e_1✝ :
  (pullback (pullback.fst (𝒰.map i.fst) f) ((𝒰.obj i.fst).affineCover.map i.snd) ⟶ Spec (𝒰.affineRefinement.obj i)) =
    (pullback (pullback.fst (𝒰.map i.fst) f) ((𝒰.obj i.fst).affineCover.map i.snd) ⟶
      (𝒰.obj i.fst).affineCover.obj i.snd)
e_5✝ : Spec (𝒰.affineRefinement.obj i) = (𝒰.obj i.fst).affineCover.obj i.snd
⊢ (pullbackRightPullbackFstIso (𝒰.map i.fst) f ((𝒰.obj i.fst).affineCover.map i.snd)).hom ≫
      pullback.fst (𝒰.affineRefinement.map i) f =
    pullback.fst ((𝒰.obj i.fst).affineCover.map i.snd) (pullback.fst (𝒰.map i.fst) f)
state_after: no goals
tactic: exact pullbackRightPullbackFstIso_hom_fst _ _ _