Theorem: AlgebraicGeometry.QuasiSeparated.affine_openCover_TFAE
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiSeparated.lean

tactic: have := QuasiCompact.affineProperty_isLocal.diagonal_affine_openCover_TFAE f
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
⊢ [QuasiSeparated f,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
        QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst : IsOpenImmersion g],
        QuasiSeparatedSpace ↑↑(pullback f g).toPresheafedSpace,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (_ : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                CompactSpace ↑↑(pullback ((𝒰' i).map j) ((𝒰' i).map k)).toPresheafedSpace].TFAE
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
this :
  [(targetAffineLocally QuasiCompact.affineProperty).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiCompact.affineProperty.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
        QuasiCompact.affineProperty.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g],
        QuasiCompact.affineProperty.diagonal pullback.snd,
      ∃ 𝒰,
        ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (x_1 : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                QuasiCompact.affineProperty (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
⊢ [QuasiSeparated f,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
        QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst : IsOpenImmersion g],
        QuasiSeparatedSpace ↑↑(pullback f g).toPresheafedSpace,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (_ : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                CompactSpace ↑↑(pullback ((𝒰' i).map j) ((𝒰' i).map k)).toPresheafedSpace].TFAE

tactic: simp_rw [← quasiCompact_eq_affineProperty, ← quasiSeparated_eq_diagonal_is_quasiCompact,
  quasi_compact_affineProperty_diagonal_eq] at this
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
this :
  [(targetAffineLocally QuasiCompact.affineProperty).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiCompact.affineProperty.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
        QuasiCompact.affineProperty.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g],
        QuasiCompact.affineProperty.diagonal pullback.snd,
      ∃ 𝒰,
        ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (x_1 : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                QuasiCompact.affineProperty (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
⊢ [QuasiSeparated f,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
        QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst : IsOpenImmersion g],
        QuasiSeparatedSpace ↑↑(pullback f g).toPresheafedSpace,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (_ : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                CompactSpace ↑↑(pullback ((𝒰' i).map j) ((𝒰' i).map k)).toPresheafedSpace].TFAE
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
this :
  [QuasiSeparated f, ∃ 𝒰, ∃ (h : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), affineProperty pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), affineProperty pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], affineProperty pullback.snd,
      ∃ 𝒰,
        ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (x_1 : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                QuasiCompact.affineProperty (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
⊢ [QuasiSeparated f,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
        QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst : IsOpenImmersion g],
        QuasiSeparatedSpace ↑↑(pullback f g).toPresheafedSpace,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (_ : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                CompactSpace ↑↑(pullback ((𝒰' i).map j) ((𝒰' i).map k)).toPresheafedSpace].TFAE

tactic: exact this
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
this :
  [QuasiSeparated f, ∃ 𝒰, ∃ (h : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), affineProperty pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), affineProperty pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], affineProperty pullback.snd,
      ∃ 𝒰,
        ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (x_1 : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                QuasiCompact.affineProperty (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
⊢ [QuasiSeparated f,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
        QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst : IsOpenImmersion g],
        QuasiSeparatedSpace ↑↑(pullback f g).toPresheafedSpace,
      ∃ 𝒰,
        ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
          ∃ 𝒰',
            ∃ (_ : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
              ∀ (i : 𝒰.J) (j k : (𝒰' i).J),
                CompactSpace ↑↑(pullback ((𝒰' i).map j) ((𝒰' i).map k)).toPresheafedSpace].TFAE
state_after: no goals