Theorem: AlgebraicGeometry.AffineTargetMorphismProperty.IsLocal.diagonal_affine_openCover_TFAE
File: Mathlib/AlgebraicGeometry/Morphisms/Constructors.lean

tactic: tfae_have 1 → 4
state_before: P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
state_after: case tfae_1_to_4
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
⊢ (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd

P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE

tactic: tfae_have 4 → 3
state_before: P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
state_after: case tfae_4_to_3
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
⊢ (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd

P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE

tactic: tfae_have 3 → 2
state_before: P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
state_after: case tfae_3_to_2
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
⊢ (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd

P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE

tactic: tfae_have 2 → 5
state_before: P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
state_after: case tfae_2_to_5
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
⊢ (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)

P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE

tactic: tfae_have 5 → 1
state_before: P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
state_after: case tfae_5_to_1
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) 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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)) →
    (targetAffineLocally P).diagonal f

P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
tfae_5_to_1 :
  (∃ 𝒰,
      ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
        ∃ 𝒰',
          ∃ (x_1 : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
            ∀ (i : 𝒰.J) (j k : (𝒰' i).J), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)) →
    (targetAffineLocally P).diagonal f
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE

tactic: tfae_finish
state_before: P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
tfae_5_to_1 :
  (∃ 𝒰,
      ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
        ∃ 𝒰',
          ∃ (x_1 : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)),
            ∀ (i : 𝒰.J) (j k : (𝒰' i).J), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)) →
    (targetAffineLocally P).diagonal f
⊢ [(targetAffineLocally P).diagonal f,
      ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd,
      ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)].TFAE
state_after: no goals

tactic: introv H hU hg _ _
state_before: case tfae_1_to_4
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
⊢ (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
state_after: case tfae_1_to_4
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
H : (targetAffineLocally P).diagonal f
U : Scheme
g : U ⟶ Y
inst✝⁴ : IsAffine U
hU : IsOpenImmersion g
hg U₂ : Scheme
f₁ : hg ⟶ pullback f g
f₂ : U₂ ⟶ pullback f g
inst✝³ : IsAffine hg
inst✝² : IsAffine U₂
inst✝¹ : IsOpenImmersion f₁
inst✝ : IsOpenImmersion f₂
⊢ P (pullback.mapDesc f₁ f₂ pullback.snd)

tactic: apply P.diagonal_of_targetAffineLocally <;> assumption
state_before: case tfae_1_to_4
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
H : (targetAffineLocally P).diagonal f
U : Scheme
g : U ⟶ Y
inst✝⁴ : IsAffine U
hU : IsOpenImmersion g
hg U₂ : Scheme
f₁ : hg ⟶ pullback f g
f₂ : U₂ ⟶ pullback f g
inst✝³ : IsAffine hg
inst✝² : IsAffine U₂
inst✝¹ : IsOpenImmersion f₁
inst✝ : IsOpenImmersion f₂
⊢ P (pullback.mapDesc f₁ f₂ pullback.snd)
state_after: no goals

tactic: introv H h𝒰
state_before: case tfae_4_to_3
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
⊢ (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
state_after: case tfae_4_to_3
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
H : ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
𝒰 : Y.OpenCover
inst✝² : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
i : 𝒰.J
h𝒰 U₂ : Scheme
f₁ : h𝒰 ⟶ pullback f (𝒰.map i)
f₂ : U₂ ⟶ pullback f (𝒰.map i)
inst✝¹ : IsAffine h𝒰
inst✝ : IsAffine U₂
⊢ ∀ [inst : IsOpenImmersion f₁] [inst : IsOpenImmersion f₂], P (pullback.mapDesc f₁ f₂ pullback.snd)

tactic: apply H
state_before: case tfae_4_to_3
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
H : ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
𝒰 : Y.OpenCover
inst✝² : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
i : 𝒰.J
h𝒰 U₂ : Scheme
f₁ : h𝒰 ⟶ pullback f (𝒰.map i)
f₂ : U₂ ⟶ pullback f (𝒰.map i)
inst✝¹ : IsAffine h𝒰
inst✝ : IsAffine U₂
⊢ ∀ [inst : IsOpenImmersion f₁] [inst : IsOpenImmersion f₂], P (pullback.mapDesc f₁ f₂ pullback.snd)
state_after: no goals

tactic: exact fun H => ⟨Y.affineCover, inferInstance, H Y.affineCover⟩
state_before: case tfae_3_to_2
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
⊢ (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
state_after: no goals

tactic: rintro ⟨𝒰, h𝒰, H⟩
state_before: case tfae_2_to_5
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
⊢ (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
state_after: case tfae_2_to_5.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
𝒰 : Y.OpenCover
h𝒰 : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
H : ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)

tactic: refine ⟨𝒰, inferInstance, fun _ => Scheme.affineCover _, inferInstance, ?_⟩
state_before: case tfae_2_to_5.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
𝒰 : Y.OpenCover
h𝒰 : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
H : ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
state_after: case tfae_2_to_5.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
𝒰 : Y.OpenCover
h𝒰 : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
H : ∀ (i : 𝒰.J), P.diagonal pullback.snd
⊢ ∀ (i : 𝒰.J) (j k : ((fun x => (pullback f (𝒰.map x)).affineCover) i).J),
    P
      (pullback.mapDesc (((fun x => (pullback f (𝒰.map x)).affineCover) i).map j)
        (((fun x => (pullback f (𝒰.map x)).affineCover) i).map k) pullback.snd)

tactic: intro i j k
state_before: case tfae_2_to_5.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
𝒰 : Y.OpenCover
h𝒰 : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
H : ∀ (i : 𝒰.J), P.diagonal pullback.snd
⊢ ∀ (i : 𝒰.J) (j k : ((fun x => (pullback f (𝒰.map x)).affineCover) i).J),
    P
      (pullback.mapDesc (((fun x => (pullback f (𝒰.map x)).affineCover) i).map j)
        (((fun x => (pullback f (𝒰.map x)).affineCover) i).map k) pullback.snd)
state_after: case tfae_2_to_5.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
𝒰 : Y.OpenCover
h𝒰 : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
H : ∀ (i : 𝒰.J), P.diagonal pullback.snd
i : 𝒰.J
j k : ((fun x => (pullback f (𝒰.map x)).affineCover) i).J
⊢ P
    (pullback.mapDesc (((fun x => (pullback f (𝒰.map x)).affineCover) i).map j)
      (((fun x => (pullback f (𝒰.map x)).affineCover) i).map k) pullback.snd)

tactic: apply H
state_before: case tfae_2_to_5.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
𝒰 : Y.OpenCover
h𝒰 : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
H : ∀ (i : 𝒰.J), P.diagonal pullback.snd
i : 𝒰.J
j k : ((fun x => (pullback f (𝒰.map x)).affineCover) i).J
⊢ P
    (pullback.mapDesc (((fun x => (pullback f (𝒰.map x)).affineCover) i).map j)
      (((fun x => (pullback f (𝒰.map x)).affineCover) i).map k) pullback.snd)
state_after: no goals

tactic: rintro ⟨𝒰, _, 𝒰', _, H⟩
state_before: case tfae_5_to_1
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) 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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)) →
    (targetAffineLocally P).diagonal f
state_after: case tfae_5_to_1.intro.intro.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
𝒰 : Y.OpenCover
w✝¹ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
𝒰' : (i : 𝒰.J) → (pullback f (𝒰.map i)).OpenCover
w✝ : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)
H : ∀ (i : 𝒰.J) (j k : (𝒰' i).J), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
⊢ (targetAffineLocally P).diagonal f

tactic: exact diagonal_targetAffineLocally_of_openCover P hP f 𝒰 𝒰' H
state_before: case tfae_5_to_1.intro.intro.intro.intro
P : AffineTargetMorphismProperty
hP : P.IsLocal
X Y : Scheme
f : X ⟶ Y
tfae_1_to_4 :
  (targetAffineLocally P).diagonal f →
    ∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd
tfae_4_to_3 :
  (∀ {U : Scheme} (g : U ⟶ Y) [inst : IsAffine U] [inst_1 : IsOpenImmersion g], P.diagonal pullback.snd) →
    ∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd
tfae_3_to_2 :
  (∀ (𝒰 : Y.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J), P.diagonal pullback.snd) →
    ∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.diagonal pullback.snd
tfae_2_to_5 :
  (∃ 𝒰, ∃ (x : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), P.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), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
𝒰 : Y.OpenCover
w✝¹ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)
𝒰' : (i : 𝒰.J) → (pullback f (𝒰.map i)).OpenCover
w✝ : ∀ (i : 𝒰.J) (j : (𝒰' i).J), IsAffine ((𝒰' i).obj j)
H : ∀ (i : 𝒰.J) (j k : (𝒰' i).J), P (pullback.mapDesc ((𝒰' i).map j) ((𝒰' i).map k) pullback.snd)
⊢ (targetAffineLocally P).diagonal f
state_after: no goals