Theorem: TopCat.GlueData.ι_eq_iff_rel
File: Mathlib/Topology/Gluing.lean

tactic: constructor
state_before: D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ (D.ι i) x = (D.ι j) y ↔ D.Rel ⟨i, x⟩ ⟨j, y⟩
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ (D.ι i) x = (D.ι j) y → D.Rel ⟨i, x⟩ ⟨j, y⟩

case mpr
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ D.Rel ⟨i, x⟩ ⟨j, y⟩ → (D.ι i) x = (D.ι j) y

tactic: delta GlueData.ι
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ (D.ι i) x = (D.ι j) y → D.Rel ⟨i, x⟩ ⟨j, y⟩
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ (Multicoequalizer.π D.diagram i) x = (Multicoequalizer.π D.diagram j) y → D.Rel ⟨i, x⟩ ⟨j, y⟩

tactic: simp_rw [← Multicoequalizer.ι_sigmaπ]
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ (Multicoequalizer.π D.diagram i) x = (Multicoequalizer.π D.diagram j) y → D.Rel ⟨i, x⟩ ⟨j, y⟩
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
      (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y →
    D.Rel ⟨i, x⟩ ⟨j, y⟩

tactic: intro h
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
      (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y →
    D.Rel ⟨i, x⟩ ⟨j, y⟩
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ D.Rel ⟨i, x⟩ ⟨j, y⟩

tactic: rw [←
  show _ = Sigma.mk i x from ConcreteCategory.congr_hom (sigmaIsoSigma.{_, u} D.U).inv_hom_id _]
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ D.Rel ⟨i, x⟩ ⟨j, y⟩
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ D.Rel (((sigmaIsoSigma D.U).inv ≫ (sigmaIsoSigma D.U).hom) ⟨i, x⟩) ⟨j, y⟩

tactic: rw [←
  show _ = Sigma.mk j y from ConcreteCategory.congr_hom (sigmaIsoSigma.{_, u} D.U).inv_hom_id _]
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ D.Rel (((sigmaIsoSigma D.U).inv ≫ (sigmaIsoSigma D.U).hom) ⟨i, x⟩) ⟨j, y⟩
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ D.Rel (((sigmaIsoSigma D.U).inv ≫ (sigmaIsoSigma D.U).hom) ⟨i, x⟩)
    (((sigmaIsoSigma D.U).inv ≫ (sigmaIsoSigma D.U).hom) ⟨j, y⟩)

tactic: change InvImage D.Rel (sigmaIsoSigma.{_, u} D.U).hom _ _
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ D.Rel (((sigmaIsoSigma D.U).inv ≫ (sigmaIsoSigma D.U).hom) ⟨i, x⟩)
    (((sigmaIsoSigma D.U).inv ≫ (sigmaIsoSigma D.U).hom) ⟨j, y⟩)
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom) ((sigmaIsoSigma D.U).inv ⟨i, x⟩) ((sigmaIsoSigma D.U).inv ⟨j, y⟩)

tactic: rw [← (InvImage.equivalence _ _ D.rel_equiv).eqvGen_iff]
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom) ((sigmaIsoSigma D.U).inv ⟨i, x⟩) ((sigmaIsoSigma D.U).inv ⟨j, y⟩)
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ EqvGen (InvImage D.Rel ⇑(sigmaIsoSigma D.U).hom) ((sigmaIsoSigma D.U).inv ⟨i, x⟩) ((sigmaIsoSigma D.U).inv ⟨j, y⟩)

tactic: refine EqvGen.mono ?_ (D.eqvGen_of_π_eq h : _)
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ EqvGen (InvImage D.Rel ⇑(sigmaIsoSigma D.U).hom) ((sigmaIsoSigma D.U).inv ⟨i, x⟩) ((sigmaIsoSigma D.U).inv ⟨j, y⟩)
state_after: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ ∀ (a b : ↑(∐ D.U)),
    Types.CoequalizerRel (⇑D.diagram.fstSigmaMap) (⇑D.diagram.sndSigmaMap) a b →
      InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom) a b

tactic: rintro _ _ ⟨x⟩
state_before: case mp
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
⊢ ∀ (a b : ↑(∐ D.U)),
    Types.CoequalizerRel (⇑D.diagram.fstSigmaMap) (⇑D.diagram.sndSigmaMap) a b →
      InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom) a b
state_after: case mp.Rel
D : GlueData
i j : D.J
x✝ : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x✝ =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
x : ↑(∐ D.diagram.left)
⊢ InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom) (D.diagram.fstSigmaMap x) (D.diagram.sndSigmaMap x)

tactic: obtain ⟨⟨⟨i, j⟩, y⟩, rfl⟩ :=
  (ConcreteCategory.bijective_of_isIso (sigmaIsoSigma.{u, u} _).inv).2 x
state_before: case mp.Rel
D : GlueData
i j : D.J
x✝ : ↑(D.U i)
y : ↑(D.U j)
h :
  (Sigma.ι D.diagram.right i ≫ Multicoequalizer.sigmaπ D.diagram) x✝ =
    (Sigma.ι D.diagram.right j ≫ Multicoequalizer.sigmaπ D.diagram) y
x : ↑(∐ D.diagram.left)
⊢ InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom) (D.diagram.fstSigmaMap x) (D.diagram.sndSigmaMap x)
state_after: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom)
    (D.diagram.fstSigmaMap ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩))
    (D.diagram.sndSigmaMap ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩))

tactic: unfold InvImage MultispanIndex.fstSigmaMap MultispanIndex.sndSigmaMap
state_before: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ InvImage D.Rel (⇑(sigmaIsoSigma D.U).hom)
    (D.diagram.fstSigmaMap ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩))
    (D.diagram.sndSigmaMap ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩))
state_after: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.fst b ≫ Sigma.ι D.diagram.right (D.diagram.fstFrom b))
        ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.snd b ≫ Sigma.ι D.diagram.right (D.diagram.sndFrom b))
        ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))

tactic: simp only [forget_map_eq_coe]
state_before: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.fst b ≫ Sigma.ι D.diagram.right (D.diagram.fstFrom b))
        ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.snd b ≫ Sigma.ι D.diagram.right (D.diagram.sndFrom b))
        ((forget TopCat).map (sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))
state_after: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.fst b ≫ Sigma.ι D.diagram.right (D.diagram.fstFrom b))
        ((sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.snd b ≫ Sigma.ι D.diagram.right (D.diagram.sndFrom b))
        ((sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))

tactic: erw [TopCat.comp_app, sigmaIsoSigma_inv_apply, ← comp_apply, ← comp_apply,
  colimit.ι_desc_assoc, ← comp_apply, ← comp_apply, colimit.ι_desc_assoc]
state_before: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.fst b ≫ Sigma.ι D.diagram.right (D.diagram.fstFrom b))
        ((sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))
    ((sigmaIsoSigma D.U).hom
      ((Sigma.desc fun b => D.diagram.snd b ≫ Sigma.ι D.diagram.right (D.diagram.sndFrom b))
        ((sigmaIsoSigma D.diagram.left).inv ⟨(i, j), y⟩)))
state_after: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel
    (((Cofan.mk (∐ D.diagram.right) fun b => D.diagram.fst b ≫ Sigma.ι D.diagram.right (D.diagram.fstFrom b)).ι.app
          { as := (i, j) } ≫
        (sigmaIsoSigma D.U).hom)
      y)
    (((Cofan.mk (∐ D.diagram.right) fun b => D.diagram.snd b ≫ Sigma.ι D.diagram.right (D.diagram.sndFrom b)).ι.app
          { as := (i, j) } ≫
        (sigmaIsoSigma D.U).hom)
      y)

tactic: erw [sigmaIsoSigma_hom_ι_apply, sigmaIsoSigma_hom_ι_apply]
state_before: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel
    (((Cofan.mk (∐ D.diagram.right) fun b => D.diagram.fst b ≫ Sigma.ι D.diagram.right (D.diagram.fstFrom b)).ι.app
          { as := (i, j) } ≫
        (sigmaIsoSigma D.U).hom)
      y)
    (((Cofan.mk (∐ D.diagram.right) fun b => D.diagram.snd b ≫ Sigma.ι D.diagram.right (D.diagram.sndFrom b)).ι.app
          { as := (i, j) } ≫
        (sigmaIsoSigma D.U).hom)
      y)
state_after: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel ⟨D.diagram.fstFrom { as := (i, j) }.as, (D.diagram.fst { as := (i, j) }.as) y⟩
    ⟨D.diagram.sndFrom { as := (i, j) }.as, (D.diagram.snd { as := (i, j) }.as) y⟩

tactic: exact Or.inr ⟨y, ⟨rfl, rfl⟩⟩
state_before: case mp.Rel.intro.mk.mk
D : GlueData
i✝ j✝ : D.J
x : ↑(D.U i✝)
y✝ : ↑(D.U j✝)
h :
  (Sigma.ι D.diagram.right i✝ ≫ Multicoequalizer.sigmaπ D.diagram) x =
    (Sigma.ι D.diagram.right j✝ ≫ Multicoequalizer.sigmaπ D.diagram) y✝
i j : D.J
y : ↑(D.diagram.left (i, j))
⊢ D.Rel ⟨D.diagram.fstFrom { as := (i, j) }.as, (D.diagram.fst { as := (i, j) }.as) y⟩
    ⟨D.diagram.sndFrom { as := (i, j) }.as, (D.diagram.snd { as := (i, j) }.as) y⟩
state_after: no goals

tactic: rintro (⟨⟨⟩⟩ | ⟨z, e₁, e₂⟩)
state_before: case mpr
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
⊢ D.Rel ⟨i, x⟩ ⟨j, y⟩ → (D.ι i) x = (D.ι j) y
state_after: case mpr.inl.refl
D : GlueData
i : D.J
x : ↑(D.U i)
⊢ (D.ι i) x = (D.ι i) x

case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f ⟨i, x⟩.fst ⟨j, y⟩.fst) z = ⟨i, x⟩.snd
e₂ : (D.f ⟨j, y⟩.fst ⟨i, x⟩.fst) ((D.t ⟨i, x⟩.fst ⟨j, y⟩.fst) z) = ⟨j, y⟩.snd
⊢ (D.ι i) x = (D.ι j) y

tactic: dsimp only at *
state_before: case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f ⟨i, x⟩.fst ⟨j, y⟩.fst) z = ⟨i, x⟩.snd
e₂ : (D.f ⟨j, y⟩.fst ⟨i, x⟩.fst) ((D.t ⟨i, x⟩.fst ⟨j, y⟩.fst) z) = ⟨j, y⟩.snd
⊢ (D.ι i) x = (D.ι j) y
state_after: case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f i j) z = x
e₂ : (D.f j i) ((D.t i j) z) = y
⊢ (D.ι i) x = (D.ι j) y

tactic: rw [← e₁, ← e₂] at *
state_before: case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f i j) z = x
e₂ : (D.f j i) ((D.t i j) z) = y
⊢ (D.ι i) x = (D.ι j) y
state_after: case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f i j) z = (D.f i j) z
e₂ : (D.f j i) ((D.t i j) z) = (D.f j i) ((D.t i j) z)
⊢ (D.ι i) ((D.f i j) z) = (D.ι j) ((D.f j i) ((D.t i j) z))

tactic: erw [D.glue_condition_apply]
state_before: case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f i j) z = (D.f i j) z
e₂ : (D.f j i) ((D.t i j) z) = (D.f j i) ((D.t i j) z)
⊢ (D.ι i) ((D.f i j) z) = (D.ι j) ((D.f j i) ((D.t i j) z))
state_after: case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f i j) z = (D.f i j) z
e₂ : (D.f j i) ((D.t i j) z) = (D.f j i) ((D.t i j) z)
⊢ (D.ι i) ((D.f i j) z) = (D.ι i) ((D.f i j) z)

tactic: rfl
state_before: case mpr.inr.intro.intro
D : GlueData
i j : D.J
x : ↑(D.U i)
y : ↑(D.U j)
z : ↑(D.V (⟨i, x⟩.fst, ⟨j, y⟩.fst))
e₁ : (D.f i j) z = (D.f i j) z
e₂ : (D.f j i) ((D.t i j) z) = (D.f j i) ((D.t i j) z)
⊢ (D.ι i) ((D.f i j) z) = (D.ι i) ((D.f i j) z)
state_after: no goals

tactic: rfl
state_before: case mpr.inl.refl
D : GlueData
i : D.J
x : ↑(D.U i)
⊢ (D.ι i) x = (D.ι i) x
state_after: no goals