Theorem: AlgebraicGeometry.Scheme.Pullback.gluedLift_p1
File: Mathlib/AlgebraicGeometry/Pullbacks.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
⊢ gluedLift 𝒰 f g s ≫ p1 𝒰 f g = s.fst
state_after: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
⊢ (𝒰.pullbackCover s.fst).fromGlued ≫ gluedLift 𝒰 f g s ≫ p1 𝒰 f g = (𝒰.pullbackCover s.fst).fromGlued ≫ s.fst
tactic: rw [← cancel_epi (𝒰.pullbackCover s.fst).fromGlued]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
⊢ (𝒰.pullbackCover s.fst).fromGlued ≫ gluedLift 𝒰 f g s ≫ p1 𝒰 f g = (𝒰.pullbackCover s.fst).fromGlued ≫ s.fst
state_after: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
⊢ ∀ (b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R),
    Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫
        (𝒰.pullbackCover s.fst).fromGlued ≫ gluedLift 𝒰 f g s ≫ p1 𝒰 f g =
      Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫ (𝒰.pullbackCover s.fst).fromGlued ≫ s.fst
tactic: apply Multicoequalizer.hom_ext
state_before: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
⊢ ∀ (b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R),
    Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫
        (𝒰.pullbackCover s.fst).fromGlued ≫ gluedLift 𝒰 f g s ≫ p1 𝒰 f g =
      Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫ (𝒰.pullbackCover s.fst).fromGlued ≫ s.fst
state_after: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R
⊢ Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫
      (𝒰.pullbackCover s.fst).fromGlued ≫ gluedLift 𝒰 f g s ≫ p1 𝒰 f g =
    Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫ (𝒰.pullbackCover s.fst).fromGlued ≫ s.fst
tactic: intro b
state_before: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R
⊢ Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫
      (𝒰.pullbackCover s.fst).fromGlued ≫ gluedLift 𝒰 f g s ≫ p1 𝒰 f g =
    Multicoequalizer.π (𝒰.pullbackCover s.fst).gluedCover.diagram b ≫ (𝒰.pullbackCover s.fst).fromGlued ≫ s.fst
state_after: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R
⊢ ((𝒰.pullbackCover s.fst).map b ≫
        (𝒰.pullbackCover s.fst).glueMorphisms
          (fun i =>
            ((pullbackSymmetry s.fst (𝒰.map i)).hom ≫
                pullback.map (𝒰.map i) s.fst (𝒰.map i ≫ f) g (𝟙 (𝒰.obj i)) s.snd f ⋯ ⋯) ≫
              (gluing 𝒰 f g).ι i)
          ⋯) ≫
      p1 𝒰 f g =
    (𝒰.pullbackCover s.fst).map b ≫ s.fst
tactic: simp_rw [OpenCover.fromGlued, Multicoequalizer.π_desc_assoc, gluedLift, ← Category.assoc]
state_before: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R
⊢ ((𝒰.pullbackCover s.fst).map b ≫
        (𝒰.pullbackCover s.fst).glueMorphisms
          (fun i =>
            ((pullbackSymmetry s.fst (𝒰.map i)).hom ≫
                pullback.map (𝒰.map i) s.fst (𝒰.map i ≫ f) g (𝟙 (𝒰.obj i)) s.snd f ⋯ ⋯) ≫
              (gluing 𝒰 f g).ι i)
          ⋯) ≫
      p1 𝒰 f g =
    (𝒰.pullbackCover s.fst).map b ≫ s.fst
state_after: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R
⊢ (((pullbackSymmetry s.fst (𝒰.map b)).hom ≫ pullback.map (𝒰.map b) s.fst (𝒰.map b ≫ f) g (𝟙 (𝒰.obj b)) s.snd f ⋯ ⋯) ≫
        (gluing 𝒰 f g).ι b) ≫
      p1 𝒰 f g =
    (𝒰.pullbackCover s.fst).map b ≫ s.fst
tactic: simp_rw [(𝒰.pullbackCover s.fst).ι_glueMorphisms]
state_before: case h
C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
b : (𝒰.pullbackCover s.fst).gluedCover.diagram.R
⊢ (((pullbackSymmetry s.fst (𝒰.map b)).hom ≫ pullback.map (𝒰.map b) s.fst (𝒰.map b ≫ f) g (𝟙 (𝒰.obj b)) s.snd f ⋯ ⋯) ≫
        (gluing 𝒰 f g).ι b) ≫
      p1 𝒰 f g =
    (𝒰.pullbackCover s.fst).map b ≫ s.fst
state_after: no goals
tactic: simp [p1, pullback.condition]