Theorem: AlgebraicGeometry.isBasis_basicOpen
File: Mathlib/AlgebraicGeometry/AffineScheme.lean

tactic: delta Opens.IsBasis
state_before: X : Scheme
inst✝ : IsAffine X
⊢ Opens.IsBasis (Set.range X.basicOpen)
state_after: X : Scheme
inst✝ : IsAffine X
⊢ IsTopologicalBasis (SetLike.coe '' Set.range X.basicOpen)

tactic: convert PrimeSpectrum.isBasis_basic_opens.inducing
  (TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)).inducing using 1
state_before: X : Scheme
inst✝ : IsAffine X
⊢ IsTopologicalBasis (SetLike.coe '' Set.range X.basicOpen)
state_after: case h.e'_3
X : Scheme
inst✝ : IsAffine X
⊢ SetLike.coe '' Set.range X.basicOpen =
    Set.preimage ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ''
      (SetLike.coe '' Set.range PrimeSpectrum.basicOpen)

tactic: ext
state_before: case h.e'_3
X : Scheme
inst✝ : IsAffine X
⊢ SetLike.coe '' Set.range X.basicOpen =
    Set.preimage ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ''
      (SetLike.coe '' Set.range PrimeSpectrum.basicOpen)
state_after: case h.e'_3.h
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ x✝ ∈ SetLike.coe '' Set.range X.basicOpen ↔
    x✝ ∈
      Set.preimage ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ''
        (SetLike.coe '' Set.range PrimeSpectrum.basicOpen)

tactic: simp only [Set.mem_image, exists_exists_eq_and]
state_before: case h.e'_3.h
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ x✝ ∈ SetLike.coe '' Set.range X.basicOpen ↔
    x✝ ∈
      Set.preimage ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ''
        (SetLike.coe '' Set.range PrimeSpectrum.basicOpen)
state_after: case h.e'_3.h
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ (∃ x ∈ Set.range X.basicOpen, ↑x = x✝) ↔
    ∃ x,
      (∃ x_1 ∈ Set.range PrimeSpectrum.basicOpen, ↑x_1 = x) ∧
        ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x = x✝

tactic: constructor
state_before: case h.e'_3.h
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ (∃ x ∈ Set.range X.basicOpen, ↑x = x✝) ↔
    ∃ x,
      (∃ x_1 ∈ Set.range PrimeSpectrum.basicOpen, ↑x_1 = x) ∧
        ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x = x✝
state_after: case h.e'_3.h.mp
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ (∃ x ∈ Set.range X.basicOpen, ↑x = x✝) →
    ∃ x,
      (∃ x_1 ∈ Set.range PrimeSpectrum.basicOpen, ↑x_1 = x) ∧
        ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x = x✝

case h.e'_3.h.mpr
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ (∃ x,
      (∃ x_1 ∈ Set.range PrimeSpectrum.basicOpen, ↑x_1 = x) ∧
        ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x = x✝) →
    ∃ x ∈ Set.range X.basicOpen, ↑x = x✝

tactic: rintro ⟨_, ⟨x, rfl⟩, rfl⟩
state_before: case h.e'_3.h.mp
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ (∃ x ∈ Set.range X.basicOpen, ↑x = x✝) →
    ∃ x,
      (∃ x_1 ∈ Set.range PrimeSpectrum.basicOpen, ↑x_1 = x) ∧
        ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x = x✝
state_after: case h.e'_3.h.mp.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ∃ x_1,
    (∃ x ∈ Set.range PrimeSpectrum.basicOpen, ↑x = x_1) ∧
      ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x_1 = ↑(X.basicOpen x)

tactic: refine ⟨_, ⟨_, ⟨x, rfl⟩, rfl⟩, ?_⟩
state_before: case h.e'_3.h.mp.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ∃ x_1,
    (∃ x ∈ Set.range PrimeSpectrum.basicOpen, ↑x = x_1) ∧
      ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x_1 = ↑(X.basicOpen x)
state_after: case h.e'_3.h.mp.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' ↑(PrimeSpectrum.basicOpen x) = ↑(X.basicOpen x)

tactic: exact congr_arg Opens.carrier (ΓSpec.adjunction_unit_map_basicOpen _ _)
state_before: case h.e'_3.h.mp.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' ↑(PrimeSpectrum.basicOpen x) = ↑(X.basicOpen x)
state_after: no goals

tactic: rintro ⟨_, ⟨_, ⟨x, rfl⟩, rfl⟩, rfl⟩
state_before: case h.e'_3.h.mpr
X : Scheme
inst✝ : IsAffine X
x✝ : Set ↑↑X.toPresheafedSpace
⊢ (∃ x,
      (∃ x_1 ∈ Set.range PrimeSpectrum.basicOpen, ↑x_1 = x) ∧
        ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' x = x✝) →
    ∃ x ∈ Set.range X.basicOpen, ↑x = x✝
state_after: case h.e'_3.h.mpr.intro.intro.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ∃ x_1 ∈ Set.range X.basicOpen,
    ↑x_1 = ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' ↑(PrimeSpectrum.basicOpen x)

tactic: refine ⟨_, ⟨x, rfl⟩, ?_⟩
state_before: case h.e'_3.h.mpr.intro.intro.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ∃ x_1 ∈ Set.range X.basicOpen,
    ↑x_1 = ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' ↑(PrimeSpectrum.basicOpen x)
state_after: case h.e'_3.h.mpr.intro.intro.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ↑(X.basicOpen x) = ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' ↑(PrimeSpectrum.basicOpen x)

tactic: exact congr_arg Opens.carrier (ΓSpec.adjunction_unit_map_basicOpen _ _).symm
state_before: case h.e'_3.h.mpr.intro.intro.intro.intro.intro
X : Scheme
inst✝ : IsAffine X
x : ↑Γ(X, ⊤)
⊢ ↑(X.basicOpen x) = ⇑(TopCat.homeoOfIso (Scheme.forgetToTop.mapIso X.isoSpec)) ⁻¹' ↑(PrimeSpectrum.basicOpen x)
state_after: no goals