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

tactic: rw [w]
state_before: C : Type ?u.4131
inst✝ : Category C
X Y : PresheafedSpace C
α β : Hom X Y
w : α.base = β.base
⊢ Functor.op (Opens.map α.base) = Functor.op (Opens.map β.base)

tactic: rcases α with ⟨base, c⟩
state_before: C : Type u_1
inst✝ : Category C
X Y : PresheafedSpace C
α β : Hom X Y
w : α.base = β.base
h : α.c ≫ whiskerRight (eqToHom (_ : Functor.op (Opens.map α.base) = Functor.op (Opens.map β.base))) X.presheaf = β.c
⊢ α = β

tactic: rcases β with ⟨base', c'⟩
state_before: case mk
C : Type u_1
inst✝ : Category C
X Y : PresheafedSpace C
β : Hom X Y
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ base _* X.presheaf
w : { base := base, c := c }.base = β.base
h :
  { base := base, c := c }.c ≫
      whiskerRight (eqToHom (_ : Functor.op (Opens.map { base := base, c := c }.base) = Functor.op (Opens.map β.base)))
        X.presheaf =
    β.c
⊢ { base := base, c := c } = β

tactic: dsimp at w
state_before: case mk.mk
C : Type u_1
inst✝ : Category C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ base _* X.presheaf
base' : ↑X ⟶ ↑Y
c' : Y.presheaf ⟶ base' _* X.presheaf
w : { base := base, c := c }.base = { base := base', c := c' }.base
h :
  { base := base, c := c }.c ≫
      whiskerRight
        (eqToHom
          (_ :
            Functor.op (Opens.map { base := base, c := c }.base) =
              Functor.op (Opens.map { base := base', c := c' }.base)))
        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 C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ base _* X.presheaf
base' : ↑X ⟶ ↑Y
c' : Y.presheaf ⟶ base' _* X.presheaf
w : base = base'
h :
  { base := base, c := c }.c ≫
      whiskerRight
        (eqToHom
          (_ :
            Functor.op (Opens.map { base := base, c := c }.base) =
              Functor.op (Opens.map { base := base', c := c' }.base)))
        X.presheaf =
    { base := base', c := c' }.c
⊢ { base := base, c := c } = { base := base', c := c' }

tactic: dsimp at h
state_before: case mk.mk
C : Type u_1
inst✝ : Category C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ base _* X.presheaf
h :
  { base := base, c := c }.c ≫
      whiskerRight
        (eqToHom
          (_ :
            Functor.op (Opens.map { base := base, c := c }.base) =
              Functor.op (Opens.map { base := base, c := c' }.base)))
        X.presheaf =
    { base := base, c := 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 C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ base _* X.presheaf
h : c ≫ whiskerRight (𝟙 (Functor.op (Opens.map base))) X.presheaf = c'
⊢ { base := base, c := c } = { base := base, c := c' }

tactic: subst h
state_before: case mk.mk
C : Type u_1
inst✝ : Category C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c c' : Y.presheaf ⟶ base _* X.presheaf
h : c = c'
⊢ { base := base, c := c } = { base := base, c := c' }

tactic: rfl
state_before: case mk.mk
C : Type u_1
inst✝ : Category C
X Y : PresheafedSpace C
base : ↑X ⟶ ↑Y
c : Y.presheaf ⟶ base _* X.presheaf
⊢ { base := base, c := c } = { base := base, c := c }