Theorem: AlgebraicGeometry.PresheafedSpace.Hom.ext
File: Mathlib/Geometry/RingedSpace/PresheafedSpace.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{?u.3893, u_1} C
X Y : PresheafedSpace C
α β : X.Hom Y
w : α.base = β.base
⊢ (Opens.map α.base).op = (Opens.map β.base).op
state_after: no goals
tactic: rw [w]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
α β : X.Hom Y
w : α.base = β.base
h : α.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = β.c
⊢ α = β
state_after: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
β : X.Hom Y
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
w : { base := base, c := c }.base = β.base
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = β.c
⊢ { base := base, c := c } = β
tactic: rcases α with ⟨base, c⟩
state_before: case mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
β : X.Hom Y
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
w : { base := base, c := c }.base = β.base
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = β.c
⊢ { base := base, c := c } = β
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
base' : ↑X ⟶ ↑Y
c' : Y.presheaf ⟶ (Presheaf.pushforward C base').obj X.presheaf
w : { base := base, c := c }.base = { base := base', c := c' }.base
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = { base := base', c := c' }.c
⊢ { base := base, c := c } = { base := base', c := c' }
tactic: rcases β with ⟨base', c'⟩
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
base' : ↑X ⟶ ↑Y
c' : Y.presheaf ⟶ (Presheaf.pushforward C base').obj X.presheaf
w : { base := base, c := c }.base = { base := base', c := c' }.base
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = { base := base', c := c' }.c
⊢ { base := base, c := c } = { base := base', c := c' }
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
base' : ↑X ⟶ ↑Y
c' : Y.presheaf ⟶ (Presheaf.pushforward C base').obj X.presheaf
w : base = base'
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = { base := base', c := c' }.c
⊢ { base := base, c := c } = { base := base', c := c' }
tactic: dsimp at w
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
base' : ↑X ⟶ ↑Y
c' : Y.presheaf ⟶ (Presheaf.pushforward C base').obj X.presheaf
w : base = base'
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = { base := base', c := c' }.c
⊢ { base := base, c := c } = { base := base', c := c' }
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = { base := base, c := c' }.c
⊢ { base := base, c := c } = { base := base, c := c' }
tactic: subst w
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
h : { base := base, c := c }.c ≫ whiskerRight (eqToHom ⋯) X.presheaf = { base := base, c := c' }.c
⊢ { base := base, c := c } = { base := base, c := c' }
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
h : c ≫ whiskerRight (𝟙 (Opens.map base).op) X.presheaf = c'
⊢ { base := base, c := c } = { base := base, c := c' }
tactic: dsimp at h
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
h : c ≫ whiskerRight (𝟙 (Opens.map base).op) X.presheaf = c'
⊢ { base := base, c := c } = { base := base, c := c' }
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
h : c = c'
⊢ { base := base, c := c } = { base := base, c := c' }
tactic: erw [whiskerRight_id', comp_id] at h
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
h : c = c'
⊢ { base := base, c := c } = { base := base, c := c' }
state_after: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
⊢ { base := base, c := c } = { base := base, c := c }
tactic: subst h
state_before: case mk.mk
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ (Presheaf.pushforward C base).obj X.presheaf
⊢ { base := base, c := c } = { base := base, c := c }
state_after: no goals
tactic: rfl