Theorem: PresheafOfModules.Sheafify.zero_smul
File: Mathlib/Algebra/Category/ModuleCat/Presheaf/Sheafify.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ : Cᵒᵖ ⥤ RingCat
R : Sheaf J RingCat
α : R₀ ⟶ R.val
inst✝³ : Presheaf.IsLocallyInjective J α
inst✝² : Presheaf.IsLocallySurjective J α
M₀ : PresheafOfModules R₀
A : Sheaf J AddCommGrp
φ : M₀.presheaf ⟶ A.val
inst✝¹ : Presheaf.IsLocallyInjective J φ
inst✝ : Presheaf.IsLocallySurjective J φ
X Y : Cᵒᵖ
π : X ⟶ Y
r r' : ↑(R.val.obj X)
m m' : ↑(A.val.obj X)
⊢ smul α φ 0 m = 0
state_after: case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ : Cᵒᵖ ⥤ RingCat
R : Sheaf J RingCat
α : R₀ ⟶ R.val
inst✝³ : Presheaf.IsLocallyInjective J α
inst✝² : Presheaf.IsLocallySurjective J α
M₀ : PresheafOfModules R₀
A : Sheaf J AddCommGrp
φ : M₀.presheaf ⟶ A.val
inst✝¹ : Presheaf.IsLocallyInjective J φ
inst✝ : Presheaf.IsLocallySurjective J φ
X Y : Cᵒᵖ
π : X ⟶ Y
r r' : ↑(R.val.obj X)
m m' : ↑(A.val.obj X)
⊢ ∀ (Y : C) (f : Y ⟶ Opposite.unop X),
    (Presheaf.imageSieve φ m).arrows f → (A.val.map f.op) (smul α φ 0 m) = (A.val.map f.op) 0
tactic: apply A.isSeparated _ _ (Presheaf.imageSieve_mem J φ m)
state_before: case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ : Cᵒᵖ ⥤ RingCat
R : Sheaf J RingCat
α : R₀ ⟶ R.val
inst✝³ : Presheaf.IsLocallyInjective J α
inst✝² : Presheaf.IsLocallySurjective J α
M₀ : PresheafOfModules R₀
A : Sheaf J AddCommGrp
φ : M₀.presheaf ⟶ A.val
inst✝¹ : Presheaf.IsLocallyInjective J φ
inst✝ : Presheaf.IsLocallySurjective J φ
X Y : Cᵒᵖ
π : X ⟶ Y
r r' : ↑(R.val.obj X)
m m' : ↑(A.val.obj X)
⊢ ∀ (Y : C) (f : Y ⟶ Opposite.unop X),
    (Presheaf.imageSieve φ m).arrows f → (A.val.map f.op) (smul α φ 0 m) = (A.val.map f.op) 0
state_after: case a.intro
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ : Cᵒᵖ ⥤ RingCat
R : Sheaf J RingCat
α : R₀ ⟶ R.val
inst✝³ : Presheaf.IsLocallyInjective J α
inst✝² : Presheaf.IsLocallySurjective J α
M₀ : PresheafOfModules R₀
A : Sheaf J AddCommGrp
φ : M₀.presheaf ⟶ A.val
inst✝¹ : Presheaf.IsLocallyInjective J φ
inst✝ : Presheaf.IsLocallySurjective J φ
X Y✝ : Cᵒᵖ
π : X ⟶ Y✝
r r' : ↑(R.val.obj X)
m m' : ↑(A.val.obj X)
Y : C
f : Y ⟶ Opposite.unop X
m₀ : (forget AddCommGrp).obj (M₀.presheaf.obj (Opposite.op Y))
hm₀ : (φ.app (Opposite.op Y)) m₀ = (A.val.map f.op) m
⊢ (A.val.map f.op) (smul α φ 0 m) = (A.val.map f.op) 0
tactic: rintro Y f ⟨m₀, hm₀⟩
state_before: case a.intro
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ : Cᵒᵖ ⥤ RingCat
R : Sheaf J RingCat
α : R₀ ⟶ R.val
inst✝³ : Presheaf.IsLocallyInjective J α
inst✝² : Presheaf.IsLocallySurjective J α
M₀ : PresheafOfModules R₀
A : Sheaf J AddCommGrp
φ : M₀.presheaf ⟶ A.val
inst✝¹ : Presheaf.IsLocallyInjective J φ
inst✝ : Presheaf.IsLocallySurjective J φ
X Y✝ : Cᵒᵖ
π : X ⟶ Y✝
r r' : ↑(R.val.obj X)
m m' : ↑(A.val.obj X)
Y : C
f : Y ⟶ Opposite.unop X
m₀ : (forget AddCommGrp).obj (M₀.presheaf.obj (Opposite.op Y))
hm₀ : (φ.app (Opposite.op Y)) m₀ = (A.val.map f.op) m
⊢ (A.val.map f.op) (smul α φ 0 m) = (A.val.map f.op) 0
state_after: no goals
tactic: erw [map_smul_eq α φ 0 m f.op 0 (by simp) m₀ hm₀, zero_smul, map_zero,
    (A.val.map f.op).map_zero]