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

tactic: have h01 := (QuasiSeparated.affine_openCover_TFAE f).out 0 1
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
⊢ QuasiSeparated f
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
h01 :
  QuasiSeparated f ↔
    ∃ 𝒰,
      ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
        ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
⊢ QuasiSeparated f

tactic: rw [h01]
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
h01 :
  QuasiSeparated f ↔
    ∃ 𝒰,
      ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
        ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
⊢ QuasiSeparated f
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
h01 :
  QuasiSeparated f ↔
    ∃ 𝒰,
      ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
        ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace

tactic: clear h01
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
h01 :
  QuasiSeparated f ↔
    ∃ 𝒰,
      ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)),
        ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace

tactic: have h02 := (QuasiSeparated.affine_openCover_TFAE (f ≫ g)).out 0 2
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
h02 :
  QuasiSeparated (f ≫ g) ↔
    ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
      QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace

tactic: rw [h02] at H
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H : QuasiSeparated (f ≫ g)
h02 :
  QuasiSeparated (f ≫ g) ↔
    ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
      QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
h02 :
  QuasiSeparated (f ≫ g) ↔
    ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
      QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace

tactic: clear h02
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
h02 :
  QuasiSeparated (f ≫ g) ↔
    ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
      QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace

tactic: refine ⟨(Z.affineCover.pullbackCover g).bind fun x => Scheme.affineCover _, ?_, ?_⟩
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∃ 𝒰,
    ∃ (_ : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)), ∀ (i : 𝒰.J), QuasiSeparatedSpace ↑↑(pullback f (𝒰.map i)).toPresheafedSpace
state_after: case refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∀ (i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J),
    IsAffine (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).obj i)

case refine_2
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∀ (i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J),
    QuasiSeparatedSpace
      ↑↑(pullback f
              (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
                i)).toPresheafedSpace

tactic: rintro ⟨i, j⟩
state_before: case refine_2
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∀ (i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J),
    QuasiSeparatedSpace
      ↑↑(pullback f
              (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
                i)).toPresheafedSpace
state_after: case refine_2.mk
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : (Z.affineCover.pullbackCover g).J
j : ((fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover) i).J
⊢ QuasiSeparatedSpace
    ↑↑(pullback f
            (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
              ⟨i, j⟩)).toPresheafedSpace

tactic: dsimp at i j
state_before: case refine_2.mk
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : (Z.affineCover.pullbackCover g).J
j : ((fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover) i).J
⊢ QuasiSeparatedSpace
    ↑↑(pullback f
            (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
              ⟨i, j⟩)).toPresheafedSpace
state_after: case refine_2.mk
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
⊢ QuasiSeparatedSpace
    ↑↑(pullback f
            (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
              ⟨i, j⟩)).toPresheafedSpace

tactic: specialize H _ i
state_before: case refine_2.mk
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
⊢ QuasiSeparatedSpace
    ↑↑(pullback f
            (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
              ⟨i, j⟩)).toPresheafedSpace
state_after: case refine_2.mk
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
H : QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (Z.affineCover.map i)).toPresheafedSpace
⊢ QuasiSeparatedSpace
    ↑↑(pullback f
            (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
              ⟨i, j⟩)).toPresheafedSpace

tactic: refine @quasiSeparatedSpace_of_quasiSeparated _ _ ?_ H ?_
state_before: case refine_2.mk
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
H : QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (Z.affineCover.map i)).toPresheafedSpace
⊢ QuasiSeparatedSpace
    ↑↑(pullback f
            (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map
              ⟨i, j⟩)).toPresheafedSpace
state_after: case refine_2.mk.refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
H : QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (Z.affineCover.map i)).toPresheafedSpace
⊢ pullback f
      (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map ⟨i, j⟩) ⟶
    pullback (f ≫ g) (Z.affineCover.map i)

case refine_2.mk.refine_2
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
H : QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (Z.affineCover.map i)).toPresheafedSpace
⊢ QuasiSeparated ?refine_2.mk.refine_1

tactic: intro i
state_before: case refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
⊢ ∀ (i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J),
    IsAffine (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).obj i)
state_after: case refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J
⊢ IsAffine (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).obj i)

tactic: dsimp
state_before: case refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J
⊢ IsAffine (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).obj i)
state_after: case refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J
⊢ IsAffine ((pullback g (Z.affineCover.map i.fst)).affineCover.obj i.snd)

tactic: infer_instance
state_before: case refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
H :
  ∀ (𝒰 : Z.OpenCover) [inst : ∀ (i : 𝒰.J), IsAffine (𝒰.obj i)] (i : 𝒰.J),
    QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (𝒰.map i)).toPresheafedSpace
i : ((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).J
⊢ IsAffine ((pullback g (Z.affineCover.map i.fst)).affineCover.obj i.snd)
state_after: no goals

tactic: exact pullback.map _ _ _ _ (𝟙 _) _ _ (by simp) (Category.comp_id _) ≫
  (pullbackRightPullbackFstIso g (Z.affineCover.map i) f).hom
state_before: case refine_2.mk.refine_1
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
H : QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (Z.affineCover.map i)).toPresheafedSpace
⊢ pullback f
      (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map ⟨i, j⟩) ⟶
    pullback (f ≫ g) (Z.affineCover.map i)
state_after: no goals

tactic: simp
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
H : QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (Z.affineCover.map i)).toPresheafedSpace
⊢ f ≫ 𝟙 Y = 𝟙 X ≫ f
state_after: no goals

tactic: exact inferInstance
state_before: case refine_2.mk.refine_2
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
i : Z.affineCover.J
j : (pullback g (Z.affineCover.map i)).affineCover.J
H : QuasiSeparatedSpace ↑↑(pullback (f ≫ g) (Z.affineCover.map i)).toPresheafedSpace
⊢ QuasiSeparated
    (pullback.map f
        (((Z.affineCover.pullbackCover g).bind fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover).map ⟨i, j⟩)
        f ((Z.affineCover.pullbackCover g).map ⟨i, j⟩.fst) (𝟙 X)
        (((fun x => ((Z.affineCover.pullbackCover g).obj x).affineCover) ⟨i, j⟩.fst).map ⟨i, j⟩.snd) (𝟙 Y) ⋯ ⋯ ≫
      (pullbackRightPullbackFstIso g (Z.affineCover.map i) f).hom)
state_after: no goals