Theorem: PresheafOfModules.Hom.ext
File: Mathlib/Algebra/Category/ModuleCat/Presheaf.lean

Proof steps:
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
f g : P ⟶ Q
w : ∀ (X : Cᵒᵖ), app f X = app g X
⊢ f = g
state_after: case mk
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
g : P ⟶ Q
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝, map_smul := map_smul✝ }.app X = app g X
⊢ { hom := hom✝, map_smul := map_smul✝ } = g
tactic: cases f
state_before: case mk
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
g : P ⟶ Q
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝, map_smul := map_smul✝ }.app X = app g X
⊢ { hom := hom✝, map_smul := map_smul✝ } = g
state_after: case mk.mk
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
hom✝¹ : P.presheaf ⟶ Q.presheaf
map_smul✝¹ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝¹.app X) (r • x) = r • (hom✝¹.app X) x
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝¹, map_smul := map_smul✝¹ }.app X = { hom := hom✝, map_smul := map_smul✝ }.app X
⊢ { hom := hom✝¹, map_smul := map_smul✝¹ } = { hom := hom✝, map_smul := map_smul✝ }
tactic: cases g
state_before: case mk.mk
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
hom✝¹ : P.presheaf ⟶ Q.presheaf
map_smul✝¹ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝¹.app X) (r • x) = r • (hom✝¹.app X) x
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝¹, map_smul := map_smul✝¹ }.app X = { hom := hom✝, map_smul := map_smul✝ }.app X
⊢ { hom := hom✝¹, map_smul := map_smul✝¹ } = { hom := hom✝, map_smul := map_smul✝ }
state_after: case mk.mk.e_hom
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
hom✝¹ : P.presheaf ⟶ Q.presheaf
map_smul✝¹ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝¹.app X) (r • x) = r • (hom✝¹.app X) x
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝¹, map_smul := map_smul✝¹ }.app X = { hom := hom✝, map_smul := map_smul✝ }.app X
⊢ hom✝¹ = hom✝
tactic: congr
state_before: case mk.mk.e_hom
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
hom✝¹ : P.presheaf ⟶ Q.presheaf
map_smul✝¹ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝¹.app X) (r • x) = r • (hom✝¹.app X) x
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝¹, map_smul := map_smul✝¹ }.app X = { hom := hom✝, map_smul := map_smul✝ }.app X
⊢ hom✝¹ = hom✝
state_after: case mk.mk.e_hom.w.h.w
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
hom✝¹ : P.presheaf ⟶ Q.presheaf
map_smul✝¹ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝¹.app X) (r • x) = r • (hom✝¹.app X) x
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝¹, map_smul := map_smul✝¹ }.app X = { hom := hom✝, map_smul := map_smul✝ }.app X
X : Cᵒᵖ
x : ↑(P.presheaf.obj X)
⊢ (hom✝¹.app X) x = (hom✝.app X) x
tactic: ext X x
state_before: case mk.mk.e_hom.w.h.w
C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
P Q : PresheafOfModules R
T : PresheafOfModules R
hom✝¹ : P.presheaf ⟶ Q.presheaf
map_smul✝¹ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝¹.app X) (r • x) = r • (hom✝¹.app X) x
hom✝ : P.presheaf ⟶ Q.presheaf
map_smul✝ : ∀ (X : Cᵒᵖ) (r : ↑(R.obj X)) (x : ↑(P.presheaf.obj X)), (hom✝.app X) (r • x) = r • (hom✝.app X) x
w : ∀ (X : Cᵒᵖ), { hom := hom✝¹, map_smul := map_smul✝¹ }.app X = { hom := hom✝, map_smul := map_smul✝ }.app X
X : Cᵒᵖ
x : ↑(P.presheaf.obj X)
⊢ (hom✝¹.app X) x = (hom✝.app X) x
state_after: no goals
tactic: exact LinearMap.congr_fun (w X) x