Theorem: AlgebraicGeometry.QuasiCompact.affineProperty_isLocal
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiCompact.lean

tactic: constructor
state_before: X Y : Scheme
f : X ⟶ Y
⊢ affineProperty.IsLocal
state_after: case RespectsIso
X Y : Scheme
f : X ⟶ Y
⊢ affineProperty.toProperty.RespectsIso

case toBasicOpen
X Y : Scheme
f : X ⟶ Y
⊢ ∀ {X Y : Scheme} [inst : IsAffine Y] (f : X ⟶ Y) (r : ↑Γ(Y, ⊤)),
    affineProperty f → affineProperty (f ∣_ Y.basicOpen r)

case ofBasicOpenCover
X Y : Scheme
f : X ⟶ Y
⊢ ∀ {X Y : Scheme} [inst : IsAffine Y] (f : X ⟶ Y) (s : Finset ↑Γ(Y, ⊤)),
    Ideal.span ↑s = ⊤ → (∀ (r : { x // x ∈ s }), affineProperty (f ∣_ Y.basicOpen ↑r)) → affineProperty f

tactic: apply AffineTargetMorphismProperty.respectsIso_mk <;> rintro X Y Z e _ _ H
state_before: case RespectsIso
X Y : Scheme
f : X ⟶ Y
⊢ affineProperty.toProperty.RespectsIso
state_after: case RespectsIso.h₁
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
X Y Z : Scheme
e : X ≅ Y
f✝ : Y ⟶ Z
inst✝ : IsAffine Z
H : affineProperty f✝
⊢ affineProperty (e.hom ≫ f✝)

case RespectsIso.h₂
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
X Y Z : Scheme
e : Y ≅ Z
f✝ : X ⟶ Y
h✝ : IsAffine Y
H : affineProperty f✝
⊢ affineProperty (f✝ ≫ e.hom)

tactic: exacts [@Homeomorph.compactSpace _ _ _ _ H (TopCat.homeoOfIso (asIso e.inv.1.base)), H]
state_before: case RespectsIso.h₁
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
X Y Z : Scheme
e : X ≅ Y
f✝ : Y ⟶ Z
inst✝ : IsAffine Z
H : affineProperty f✝
⊢ affineProperty (e.hom ≫ f✝)

case RespectsIso.h₂
X✝ Y✝ : Scheme
f : X✝ ⟶ Y✝
X Y Z : Scheme
e : Y ≅ Z
f✝ : X ⟶ Y
h✝ : IsAffine Y
H : affineProperty f✝
⊢ affineProperty (f✝ ≫ e.hom)
state_after: no goals

tactic: introv H
state_before: case toBasicOpen
X Y : Scheme
f : X ⟶ Y
⊢ ∀ {X Y : Scheme} [inst : IsAffine Y] (f : X ⟶ Y) (r : ↑Γ(Y, ⊤)),
    affineProperty f → affineProperty (f ∣_ Y.basicOpen r)
state_after: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : affineProperty f
⊢ affineProperty (f ∣_ Y.basicOpen r)

tactic: dsimp [affineProperty] at H ⊢
state_before: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : affineProperty f
⊢ affineProperty (f ∣_ Y.basicOpen r)
state_after: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ CompactSpace ↑↑(X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).toPresheafedSpace

tactic: change CompactSpace ((Opens.map f.val.base).obj (Y.basicOpen r))
state_before: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ CompactSpace ↑↑(X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).toPresheafedSpace
state_after: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ CompactSpace ↥(f ⁻¹ᵁ Y.basicOpen r)

tactic: rw [Scheme.preimage_basicOpen f r]
state_before: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ CompactSpace ↥(f ⁻¹ᵁ Y.basicOpen r)
state_after: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ CompactSpace ↥(X.basicOpen ((Scheme.Hom.app f ⊤) r))

tactic: erw [← isCompact_iff_compactSpace]
state_before: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ CompactSpace ↥(X.basicOpen ((Scheme.Hom.app f ⊤) r))
state_after: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ IsCompact ↑(X.basicOpen ((Scheme.Hom.app f ⊤) r))

tactic: rw [← isCompact_univ_iff] at H
state_before: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : CompactSpace ↑↑X.toPresheafedSpace
⊢ IsCompact ↑(X.basicOpen ((Scheme.Hom.app f ⊤) r))
state_after: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : IsCompact Set.univ
⊢ IsCompact ↑(X.basicOpen ((Scheme.Hom.app f ⊤) r))

tactic: apply isCompact_basicOpen
state_before: case toBasicOpen
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : IsCompact Set.univ
⊢ IsCompact ↑(X.basicOpen ((Scheme.Hom.app f ⊤) r))
state_after: case toBasicOpen.hU
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : IsCompact Set.univ
⊢ IsCompact ↑(f ⁻¹ᵁ ⊤)

tactic: exact H
state_before: case toBasicOpen.hU
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : IsCompact Set.univ
⊢ IsCompact ↑(f ⁻¹ᵁ ⊤)
state_after: no goals

tactic: rintro X Y H f S hS hS'
state_before: case ofBasicOpenCover
X Y : Scheme
f : X ⟶ Y
⊢ ∀ {X Y : Scheme} [inst : IsAffine Y] (f : X ⟶ Y) (s : Finset ↑Γ(Y, ⊤)),
    Ideal.span ↑s = ⊤ → (∀ (r : { x // x ∈ s }), affineProperty (f ∣_ Y.basicOpen ↑r)) → affineProperty f
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : Ideal.span ↑S = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ affineProperty f

tactic: rw [← IsAffineOpen.basicOpen_union_eq_self_iff] at hS
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : Ideal.span ↑S = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ affineProperty f
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ affineProperty f

case ofBasicOpenCover.hU
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : Ideal.span ↑S = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsAffineOpen ⊤

tactic: delta QuasiCompact.affineProperty
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ affineProperty f
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ CompactSpace ↑↑X.toPresheafedSpace

tactic: rw [← isCompact_univ_iff]
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ CompactSpace ↑↑X.toPresheafedSpace
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact Set.univ

tactic: change IsCompact ((Opens.map f.val.base).obj ⊤).1
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact Set.univ
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (f ⁻¹ᵁ ⊤).carrier

tactic: rw [← hS]
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (f ⁻¹ᵁ ⊤).carrier
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (f ⁻¹ᵁ ⨆ f, Y.basicOpen ↑f).carrier

tactic: dsimp [Opens.map]
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (f ⁻¹ᵁ ⨆ f, Y.basicOpen ↑f).carrier
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (⇑f.val.base ⁻¹' ↑(⨆ f, Y.basicOpen ↑f))

tactic: simp only [Opens.iSup_mk, Opens.coe_mk, Set.preimage_iUnion]
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (⇑f.val.base ⁻¹' ↑(⨆ f, Y.basicOpen ↑f))
state_after: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (⋃ i, ⇑f.val.base ⁻¹' (Y.basicOpen ↑i).carrier)

tactic: exact isCompact_iUnion fun i => isCompact_iff_compactSpace.mpr (hS' i)
state_before: case ofBasicOpenCover
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : ⨆ f, Y.basicOpen ↑f = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsCompact (⋃ i, ⇑f.val.base ⁻¹' (Y.basicOpen ↑i).carrier)
state_after: no goals

tactic: exact isAffineOpen_top _
state_before: case ofBasicOpenCover.hU
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
H : IsAffine Y
f : X ⟶ Y
S : Finset ↑Γ(Y, ⊤)
hS : Ideal.span ↑S = ⊤
hS' : ∀ (r : { x // x ∈ S }), affineProperty (f ∣_ Y.basicOpen ↑r)
⊢ IsAffineOpen ⊤
state_after: no goals