Theorem: AlgebraicGeometry.isIso_ΓSpec_adjunction_unit_app_basicOpen
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiSeparated.lean

Proof steps:
state_before: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ IsIso ((ΓSpec.adjunction.unit.app X).val.c.app (op (PrimeSpectrum.basicOpen f)))
state_after: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ IsIso ((ΓSpec.adjunction.unit.app X).val.c.app (op (PrimeSpectrum.basicOpen f)) ≫ X.presheaf.map (eqToHom ⋯).op)
tactic: refine @IsIso.of_isIso_comp_right _ _ _ _ _ _ (X.presheaf.map
    (eqToHom (ΓSpec.adjunction_unit_map_basicOpen _ _).symm).op) _ ?_
state_before: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ IsIso ((ΓSpec.adjunction.unit.app X).val.c.app (op (PrimeSpectrum.basicOpen f)) ≫ X.presheaf.map (eqToHom ⋯).op)
state_after: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ Function.Bijective
    ⇑((ΓSpec.adjunction.unit.app X).val.c.app (op (PrimeSpectrum.basicOpen f)) ≫ X.presheaf.map (eqToHom ⋯).op)
tactic: rw [ConcreteCategory.isIso_iff_bijective, CommRingCat.forget_map]
state_before: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ Function.Bijective
    ⇑((ΓSpec.adjunction.unit.app X).val.c.app (op (PrimeSpectrum.basicOpen f)) ≫ X.presheaf.map (eqToHom ⋯).op)
state_after: case inst
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ IsLocalization ?M
    ((forget CommRingCat).obj (((Scheme.Γ.rightOp ⋙ Scheme.Spec).obj X).presheaf.obj (op (PrimeSpectrum.basicOpen f))))

case inst
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ IsLocalization ?M ((forget CommRingCat).obj (X.presheaf.obj (op (X.basicOpen f))))

case hf
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ RingHom.comp
      ((ΓSpec.adjunction.unit.app X).val.c.app (op (PrimeSpectrum.basicOpen f)) ≫ X.presheaf.map (eqToHom ⋯).op)
      (algebraMap ?R
        ((forget CommRingCat).obj
          (((Scheme.Γ.rightOp ⋙ Scheme.Spec).obj X).presheaf.obj (op (PrimeSpectrum.basicOpen f))))) =
    algebraMap ?R ((forget CommRingCat).obj (X.presheaf.obj (op (X.basicOpen f))))

case R
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ Type ?u.208387

case inst
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ CommSemiring ?R

case M
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ Submonoid ?R

case inst
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ Algebra ?R
    ((forget CommRingCat).obj (((Scheme.Γ.rightOp ⋙ Scheme.Spec).obj X).presheaf.obj (op (PrimeSpectrum.basicOpen f))))

case inst
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
X : Scheme
inst✝¹ : CompactSpace ↑↑X.toPresheafedSpace
inst✝ : QuasiSeparatedSpace ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj (op ⊤))
⊢ Algebra ?R ((forget CommRingCat).obj (X.presheaf.obj (op (X.basicOpen f))))
tactic: apply (config := { allowSynthFailures := true }) IsLocalization.bijective