awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
rw : failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)
⊢ failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)

Tactic:
rw [← cancel_epi α.isoOpensRange.hom]

Premises used: AlgebraicGeometry.Scheme.Hom.isoOpensRange, CategoryTheory.cancel_epi, CategoryTheory.Iso.hom
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
simp_rw : failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)
⊢ failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)

Tactic:
simp_rw [Scheme.Hom.isoOpensRange_hom_ι_assoc, IsOpenImmersion.comp_lift_assoc]

Premises used: AlgebraicGeometry.IsOpenImmersion.comp_lift_assoc, AlgebraicGeometry.Scheme.Hom.isoOpensRange_hom_ι_assoc
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
simp : failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)
⊢ failed to pretty print expression (use 'set_option pp.rawOnError true' for raw representation)

Tactic:
simp only [reassoc_of% hα₁, homOfLE_tAux F _ _ fi fj, Iso.hom_inv_id_assoc, reassoc_of% hα₂]

Premises used: AlgebraicGeometry.Scheme.IsLocallyDirected.homOfLE_tAux, CategoryTheory.Iso.hom_inv_id_assoc
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
pf : IsOpenImmersion (X := (↑(V F (↓j) ↓k) : Scheme)) (Opens.ι (V F (↓j) ↓k))
h₁ :
  Subset (α := Set ↥(F.obj ↓j)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fj))
    (Set.range (ι := ↥(↑(V F (↓j) ↓k) : Scheme)) ⇑(Opens.ι (V F (↓j) ↓k)))
pf_1 : IsOpenImmersion (X := (↑(V F (↓k) ↓i) : Scheme)) (Opens.ι (V F (↓k) ↓i))
pf_2 :
  Subset (α := Set ↥(F.obj ↓k))
    (Set.range (ι := ↥(F.obj l)) ⇑(IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
pf_3 : IsOpenImmersion (F.map fi)
pf_4 :
  ∀ (k_1 : (k_1 : J) × (k_1 ⟶ ↓i) × (k_1 ⟶ ↓k)),
    IsOpenImmersion (F.map k_1.snd (β := fun (k_2 : J) ↦ (k_2 ⟶ ↓i) × (k_2 ⟶ ↓k)).1)
pf_5 : Hom.opensRange (F.map fi) ≤ V F (↓i) ↓k
rw :
  (Hom.opensRange (F.map fj)).ι =
    CategoryStruct.comp (Y := (↑(V F (↓j) ↓k) : Scheme)) ((F.obj ↓j).homOfLE ⋯) (Opens.ι (V F (↓j) ↓k))
⊢ IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fj)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fj)))
      ((F.obj ↓j).homOfLE ⋯)

Tactic:
rw [← cancel_mono (Scheme.Opens.ι _), Category.assoc, IsOpenImmersion.lift_fac,
        ← Iso.inv_comp_eq, Scheme.Hom.isoOpensRange_inv_comp]

Premises used: CategoryTheory.Category.assoc, CategoryTheory.Iso.inv_comp_eq, CategoryTheory.cancel_mono, AlgebraicGeometry.Scheme.Opens.ι, AlgebraicGeometry.Scheme.Hom.isoOpensRange_inv_comp, AlgebraicGeometry.IsOpenImmersion.lift_fac
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
pf : IsOpenImmersion (X := (↑(V F (↓j) ↓k) : Scheme)) (Opens.ι (V F (↓j) ↓k))
h₁ :
  Subset (α := Set ↥(F.obj ↓j)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fj))
    (Set.range (ι := ↥(↑(V F (↓j) ↓k) : Scheme)) ⇑(Opens.ι (V F (↓j) ↓k)))
pf_1 : IsOpenImmersion (X := (↑(V F (↓k) ↓i) : Scheme)) (Opens.ι (V F (↓k) ↓i))
pf_2 :
  Subset (α := Set ↥(F.obj ↓k))
    (Set.range (ι := ↥(F.obj l)) ⇑(IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
pf_3 : IsOpenImmersion (F.map fi)
pf_4 :
  ∀ (k_1 : (k_1 : J) × (k_1 ⟶ ↓i) × (k_1 ⟶ ↓k)),
    IsOpenImmersion (F.map k_1.snd (β := fun (k_2 : J) ↦ (k_2 ⟶ ↓i) × (k_2 ⟶ ↓k)).1)
pf_5 : Hom.opensRange (F.map fi) ≤ V F (↓i) ↓k
⊢ (Hom.opensRange (F.map fj)).ι =
    CategoryStruct.comp (Y := (↑(V F (↓j) ↓k) : Scheme)) ((F.obj ↓j).homOfLE ⋯) (Opens.ι (V F (↓j) ↓k))

Tactic:
(Scheme.homOfLE_ι _ _).symm

Premises used: AlgebraicGeometry.Scheme.homOfLE_ι, AlgebraicGeometry.Scheme.IsLocallyDirected.V, Eq.symm
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
pf : IsOpenImmersion (X := (↑(V F (↓j) ↓k) : Scheme)) (Opens.ι (V F (↓j) ↓k))
h₁ :
  Subset (α := Set ↥(F.obj ↓j)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fj))
    (Set.range (ι := ↥(↑(V F (↓j) ↓k) : Scheme)) ⇑(Opens.ι (V F (↓j) ↓k)))
pf_1 : IsOpenImmersion (X := (↑(V F (↓k) ↓i) : Scheme)) (Opens.ι (V F (↓k) ↓i))
pf_2 :
  Subset (α := Set ↥(F.obj ↓k))
    (Set.range (ι := ↥(F.obj l)) ⇑(IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
pf_3 : IsOpenImmersion (F.map fi)
pf_4 :
  ∀ (k_1 : (k_1 : J) × (k_1 ⟶ ↓i) × (k_1 ⟶ ↓k)),
    IsOpenImmersion (F.map k_1.snd (β := fun (k_2 : J) ↦ (k_2 ⟶ ↓i) × (k_2 ⟶ ↓k)).1)
pf_5 : Hom.opensRange (F.map fi) ≤ V F (↓i) ↓k
⊢ (Hom.opensRange (F.map fj)).ι =
    CategoryStruct.comp (Y := (↑(V F (↓j) ↓k) : Scheme)) ((F.obj ↓j).homOfLE ⋯) (Opens.ι (V F (↓j) ↓k))

Tactic:
exact (Scheme.homOfLE_ι _ _).symm

Premises used: AlgebraicGeometry.Scheme.homOfLE_ι, Eq.symm
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
pf : IsOpenImmersion (X := (↑(V F (↓j) ↓k) : Scheme)) (Opens.ι (V F (↓j) ↓k))
h₁ :
  Subset (α := Set ↥(F.obj ↓j)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fj))
    (Set.range (ι := ↥(↑(V F (↓j) ↓k) : Scheme)) ⇑(Opens.ι (V F (↓j) ↓k)))
pf_1 : IsOpenImmersion (X := (↑(V F (↓k) ↓i) : Scheme)) (Opens.ι (V F (↓k) ↓i))
pf_2 :
  Subset (α := Set ↥(F.obj ↓k))
    (Set.range (ι := ↥(F.obj l)) ⇑(IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
pf_3 : IsOpenImmersion (F.map fi)
pf_4 :
  ∀ (k_1 : (k_1 : J) × (k_1 ⟶ ↓i) × (k_1 ⟶ ↓k)),
    IsOpenImmersion (F.map k_1.snd (β := fun (k_2 : J) ↦ (k_2 ⟶ ↓i) × (k_2 ⟶ ↓k)).1)
pf_5 : Hom.opensRange (F.map fi) ≤ V F (↓i) ↓k
⊢ IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fj)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fj)))
      ((F.obj ↓j).homOfLE ⋯)

Tactic:
have : IsOpenImmersion.lift (V F ↓j ↓k).ι (F.map fj) h₁ = (F.map fj).isoOpensRange.hom ≫
        (F.obj ↓j).homOfLE (le_iSup_of_le ⟨l, fj, fk⟩ le_rfl) := by
      rw [← cancel_mono (Scheme.Opens.ι _), Category.assoc, IsOpenImmersion.lift_fac,
        ← Iso.inv_comp_eq, Scheme.Hom.isoOpensRange_inv_comp]
      exact (Scheme.homOfLE_ι _ _).symm
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
pf : IsOpenImmersion (X := (↑(V F (↓j) ↓k) : Scheme)) (Opens.ι (V F (↓j) ↓k))
h₁ :
  Subset (α := Set ↥(F.obj ↓j)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fj))
    (Set.range (ι := ↥(↑(V F (↓j) ↓k) : Scheme)) ⇑(Opens.ι (V F (↓j) ↓k)))
pf_1 : IsOpenImmersion (X := (↑(V F (↓k) ↓i) : Scheme)) (Opens.ι (V F (↓k) ↓i))
pf_2 :
  Subset (α := Set ↥(F.obj ↓k))
    (Set.range (ι := ↥(F.obj l)) ⇑(IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
pf_3 : IsOpenImmersion (F.map fi)
pf_4 :
  ∀ (k_1 : (k_1 : J) × (k_1 ⟶ ↓i) × (k_1 ⟶ ↓k)),
    IsOpenImmersion (F.map k_1.snd (β := fun (k_2 : J) ↦ (k_2 ⟶ ↓i) × (k_2 ⟶ ↓k)).1)
pf_5 : Hom.opensRange (F.map fi) ≤ V F (↓i) ↓k
this :
  IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fj)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fj)))
      ((F.obj ↓j).homOfLE ⋯)
simp_rw :
  CategoryStruct.comp (Y := (↑(V F (↓k) ↓i) : Scheme)) (IsOpenImmersion.lift (Opens.ι (V F (↓k) ↓i)) (F.map fk) ⋯)
      (tAux F (↓k) ↓i) =
    Iso.hom (Hom.isoOpensRange (F.map fi)) ≫ (F.obj ↓i).homOfLE pf_5 ≫ Opens.ι (V F (↓i) ↓k)
⊢ IsOpenImmersion.lift (Opens.ι (V F (↓k) ↓i))
        (IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k) pf_2 ≫
      tAux F (↓k) ↓i =
    Iso.hom (Hom.isoOpensRange (F.map fi)) ≫ (F.obj ↓i).homOfLE pf_5 ≫ Opens.ι (V F (↓i) ↓k)

Tactic:
simp_rw [this, Category.assoc, homOfLE_tAux F _ _ fj fk, Iso.hom_inv_id_assoc]

Premises used: CategoryTheory.Category.assoc, AlgebraicGeometry.Scheme.IsLocallyDirected.homOfLE_tAux, CategoryTheory.Iso.hom_inv_id_assoc
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
pf : IsOpenImmersion (X := (↑(V F (↓j) ↓k) : Scheme)) (Opens.ι (V F (↓j) ↓k))
h₁ :
  Subset (α := Set ↥(F.obj ↓j)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fj))
    (Set.range (ι := ↥(↑(V F (↓j) ↓k) : Scheme)) ⇑(Opens.ι (V F (↓j) ↓k)))
pf_1 : IsOpenImmersion (X := (↑(V F (↓k) ↓i) : Scheme)) (Opens.ι (V F (↓k) ↓i))
pf_2 :
  Subset (α := Set ↥(F.obj ↓k))
    (Set.range (ι := ↥(F.obj l)) ⇑(IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
pf_3 : IsOpenImmersion (F.map fi)
pf_4 :
  ∀ (k_1 : (k_1 : J) × (k_1 ⟶ ↓i) × (k_1 ⟶ ↓k)),
    IsOpenImmersion (F.map k_1.snd (β := fun (k_2 : J) ↦ (k_2 ⟶ ↓i) × (k_2 ⟶ ↓k)).1)
pf_5 : Hom.opensRange (F.map fi) ≤ V F (↓i) ↓k
this :
  IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fj)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fj)))
      ((F.obj ↓j).homOfLE ⋯)
⊢ Subset (α := Set ↥(F.obj ↓k)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fk))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))

Tactic:
generalize_proofs h₂
-- Module: Mathlib.AlgebraicGeometry.Gluing
Goal:
J : Type w
inst : Category.{v, w} J
F : CategoryTheory.Functor.{v, u, w, u + 1} J Scheme
inst_1 : ∀ {i j : J} (f : i ⟶ j), IsOpenImmersion (F.map f)
inst_2 : (F ⋙ forget).IsLocallyDirected
inst_3 : Quiver.IsThin.{w, v} J
inst_4 : Small.{u, w} J
i j k : Shrink.{u, w} J
x :
  ↥(pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, k).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, k).1) ↓(i, k).2)))
l : J
fi : l ⟶ ↓(i, j).1
fj : l ⟶ ↓(i, j).2
fk : l ⟶ ↓(i, k).2
α :
  F.obj l ⟶
    pullback (X := (↑(V F (↓(i, j).1) ↓(i, j).2) : Scheme)) (Y := (↑(V F (↓(i, j).1) ↓(i, k).2) : Scheme))
      (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2))
z : ↥(F.obj l)
hα : IsOpenImmersion α
hα₁ :
  α ≫ pullback.fst (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
hα₂ :
  α ≫ pullback.snd (Opens.ι (V F (↓(i, j).1) ↓(i, j).2)) (Opens.ι (V F (↓(i, j).1) ↓(i, k).2)) =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fi)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fi)))
      ((F.obj ↓(i, j).1).homOfLE ⋯)
e : α z = x
pf : IsOpenImmersion (X := (↑(V F (↓j) ↓k) : Scheme)) (Opens.ι (V F (↓j) ↓k))
h₁ :
  Subset (α := Set ↥(F.obj ↓j)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fj))
    (Set.range (ι := ↥(↑(V F (↓j) ↓k) : Scheme)) ⇑(Opens.ι (V F (↓j) ↓k)))
pf_1 : IsOpenImmersion (X := (↑(V F (↓k) ↓i) : Scheme)) (Opens.ι (V F (↓k) ↓i))
pf_2 :
  Subset (α := Set ↥(F.obj ↓k))
    (Set.range (ι := ↥(F.obj l)) ⇑(IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ ≫ tAux F (↓j) ↓k))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
pf_3 : IsOpenImmersion (F.map fi)
pf_4 :
  ∀ (k_1 : (k_1 : J) × (k_1 ⟶ ↓i) × (k_1 ⟶ ↓k)),
    IsOpenImmersion (F.map k_1.snd (β := fun (k_2 : J) ↦ (k_2 ⟶ ↓i) × (k_2 ⟶ ↓k)).1)
pf_5 : Hom.opensRange (F.map fi) ≤ V F (↓i) ↓k
this :
  IsOpenImmersion.lift (Opens.ι (V F (↓j) ↓k)) (F.map fj) h₁ =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fj)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fj)))
      ((F.obj ↓j).homOfLE ⋯)
h₂ :
  Subset (α := Set ↥(F.obj ↓k)) (Set.range (ι := ↥(F.obj l)) ⇑(F.map fk))
    (Set.range (ι := ↥(↑(V F (↓k) ↓i) : Scheme)) ⇑(Opens.ι (V F (↓k) ↓i)))
rw :
  (Hom.opensRange (F.map fk)).ι =
    CategoryStruct.comp (Y := (↑(V F (↓k) ↓i) : Scheme)) ((F.obj ↓k).homOfLE ⋯) (Opens.ι (V F (↓k) ↓i))
⊢ IsOpenImmersion.lift (Opens.ι (V F (↓k) ↓i)) (F.map fk) h₂ =
    CategoryStruct.comp (Y := (↑(Hom.opensRange (F.map fk)) : Scheme)) (Iso.hom (Hom.isoOpensRange (F.map fk)))
      ((F.obj ↓k).homOfLE ⋯)

Tactic:
rw [← cancel_mono (Scheme.Opens.ι _), Category.assoc, IsOpenImmersion.lift_fac,
        ← Iso.inv_comp_eq, Scheme.Hom.isoOpensRange_inv_comp]

Premises used: CategoryTheory.Category.assoc, CategoryTheory.Iso.inv_comp_eq, CategoryTheory.cancel_mono, AlgebraicGeometry.Scheme.Opens.ι, AlgebraicGeometry.Scheme.Hom.isoOpensRange_inv_comp, AlgebraicGeometry.IsOpenImmersion.lift_fac