Theorem: AlgebraicGeometry.Scheme.GlueData.ι_eq_iff
File: Mathlib/AlgebraicGeometry/Gluing.lean

tactic: refine Iff.trans ?_
  (TopCat.GlueData.ι_eq_iff_rel
    D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData
    i j x y)
state_before: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (D.ι i).val.base x = (D.ι j).val.base y ↔ D.Rel ⟨i, x⟩ ⟨j, y⟩
state_after: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (D.ι i).val.base x = (D.ι j).val.base y ↔
    (D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι i) x =
      (D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι j) y

tactic: rw [← ((TopCat.mono_iff_injective D.isoCarrier.inv).mp _).eq_iff]
state_before: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (D.ι i).val.base x = (D.ι j).val.base y ↔
    (D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι i) x =
      (D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι j) y
state_after: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (D.ι i).val.base x = (D.ι j).val.base y ↔
    D.isoCarrier.inv
        ((D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι i) x) =
      D.isoCarrier.inv
        ((D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι j) y)

D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ Mono D.isoCarrier.inv

tactic: erw [← comp_apply]
state_before: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (D.ι i).val.base x = (D.ι j).val.base y ↔
    D.isoCarrier.inv
        ((D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι i) x) =
      D.isoCarrier.inv
        ((D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι j) y)
state_after: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (D.ι i).val.base x = (D.ι j).val.base y ↔
    (D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι i ≫
          D.isoCarrier.inv)
        x =
      D.isoCarrier.inv
        ((D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι j) y)

tactic: simp_rw [← D.ι_isoCarrier_inv]
state_before: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (D.ι i).val.base x = (D.ι j).val.base y ↔
    (D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι i ≫
          D.isoCarrier.inv)
        x =
      D.isoCarrier.inv
        ((D.toLocallyRingedSpaceGlueData.toSheafedSpaceGlueData.toPresheafedSpaceGlueData.toTopGlueData.ι j) y)
state_after: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            i ≫
          D.isoCarrier.inv)
        x =
      (((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            j ≫
          D.isoCarrier.inv)
        y ↔
    (((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            i ≫
          D.isoCarrier.inv)
        x =
      D.isoCarrier.inv
        ((((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            j)
          y)

tactic: rfl
state_before: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ (((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            i ≫
          D.isoCarrier.inv)
        x =
      (((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            j ≫
          D.isoCarrier.inv)
        y ↔
    (((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            i ≫
          D.isoCarrier.inv)
        x =
      D.isoCarrier.inv
        ((((((D.mapGlueData forgetToLocallyRingedSpace).mapGlueData LocallyRingedSpace.forgetToSheafedSpace).mapGlueData
                    SheafedSpace.forgetToPresheafedSpace).mapGlueData
                (PresheafedSpace.forget CommRingCat)).ι
            j)
          y)
state_after: no goals

tactic: infer_instance
state_before: D : GlueData
i j : D.J
x : ↑↑(D.U i).toPresheafedSpace
y : ↑↑(D.U j).toPresheafedSpace
⊢ Mono D.isoCarrier.inv
state_after: no goals