Theorem: CategoryTheory.Presieve.FamilyOfElements.isCompatible_map_smul_aux
File: Mathlib/Algebra/Category/ModuleCat/Presheaf/Sheafify.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ R : Cᵒᵖ ⥤ RingCat
α : R₀ ⟶ R
inst✝¹ : Presheaf.IsLocallyInjective J α
M₀ : PresheafOfModules R₀
A : Cᵒᵖ ⥤ AddCommGrp
φ : M₀.presheaf ⟶ A
inst✝ : Presheaf.IsLocallyInjective J φ
hA : Presheaf.IsSeparated J A
X : C
r : ↑(R.obj (Opposite.op X))
m : ↑(A.obj (Opposite.op X))
P : Presieve X
r₀✝ : FamilyOfElements (R₀ ⋙ forget RingCat) P
m₀✝ : FamilyOfElements (M₀.presheaf ⋙ forget AddCommGrp) P
hr₀✝ : (r₀✝.map (whiskerRight α (forget RingCat))).IsAmalgamation r
hm₀✝ : (m₀✝.map (whiskerRight φ (forget AddCommGrp))).IsAmalgamation m
Y Z : C
f : Y ⟶ X
g : Z ⟶ Y
r₀ : ↑(R₀.obj (Opposite.op Y))
r₀' : ↑(R₀.obj (Opposite.op Z))
m₀ : ↑(M₀.presheaf.obj (Opposite.op Y))
m₀' : ↑(M₀.presheaf.obj (Opposite.op Z))
hr₀ : (α.app (Opposite.op Y)) r₀ = (R.map f.op) r
hr₀' : (α.app (Opposite.op Z)) r₀' = (R.map (f.op ≫ g.op)) r
hm₀ : (φ.app (Opposite.op Y)) m₀ = (A.map f.op) m
hm₀' : (φ.app (Opposite.op Z)) m₀' = (A.map (f.op ≫ g.op)) m
⊢ (φ.app (Opposite.op Z)) ((M₀.presheaf.map g.op) (r₀ • m₀)) = (φ.app (Opposite.op Z)) (r₀' • m₀')
state_after: case hr₀
C : Type u₁
inst✝² : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ R : Cᵒᵖ ⥤ RingCat
α : R₀ ⟶ R
inst✝¹ : Presheaf.IsLocallyInjective J α
M₀ : PresheafOfModules R₀
A : Cᵒᵖ ⥤ AddCommGrp
φ : M₀.presheaf ⟶ A
inst✝ : Presheaf.IsLocallyInjective J φ
hA : Presheaf.IsSeparated J A
X : C
r : ↑(R.obj (Opposite.op X))
m : ↑(A.obj (Opposite.op X))
P : Presieve X
r₀✝ : FamilyOfElements (R₀ ⋙ forget RingCat) P
m₀✝ : FamilyOfElements (M₀.presheaf ⋙ forget AddCommGrp) P
hr₀✝ : (r₀✝.map (whiskerRight α (forget RingCat))).IsAmalgamation r
hm₀✝ : (m₀✝.map (whiskerRight φ (forget AddCommGrp))).IsAmalgamation m
Y Z : C
f : Y ⟶ X
g : Z ⟶ Y
r₀ : ↑(R₀.obj (Opposite.op Y))
r₀' : ↑(R₀.obj (Opposite.op Z))
m₀ : ↑(M₀.presheaf.obj (Opposite.op Y))
m₀' : ↑(M₀.presheaf.obj (Opposite.op Z))
hr₀ : (α.app (Opposite.op Y)) r₀ = (R.map f.op) r
hr₀' : (α.app (Opposite.op Z)) r₀' = (R.map (f.op ≫ g.op)) r
hm₀ : (φ.app (Opposite.op Y)) m₀ = (A.map f.op) m
hm₀' : (φ.app (Opposite.op Z)) m₀' = (A.map (f.op ≫ g.op)) m
⊢ (α.app (Opposite.op Z)) ((R₀.map g.op) r₀) = (α.app (Opposite.op Z)) r₀'

case hm₀
C : Type u₁
inst✝² : Category.{v₁, u₁} C
J : GrothendieckTopology C
R₀ R : Cᵒᵖ ⥤ RingCat
α : R₀ ⟶ R
inst✝¹ : Presheaf.IsLocallyInjective J α
M₀ : PresheafOfModules R₀
A : Cᵒᵖ ⥤ AddCommGrp
φ : M₀.presheaf ⟶ A
inst✝ : Presheaf.IsLocallyInjective J φ
hA : Presheaf.IsSeparated J A
X : C
r : ↑(R.obj (Opposite.op X))
m : ↑(A.obj (Opposite.op X))
P : Presieve X
r₀✝ : FamilyOfElements (R₀ ⋙ forget RingCat) P
m₀✝ : FamilyOfElements (M₀.presheaf ⋙ forget AddCommGrp) P
hr₀✝ : (r₀✝.map (whiskerRight α (forget RingCat))).IsAmalgamation r
hm₀✝ : (m₀✝.map (whiskerRight φ (forget AddCommGrp))).IsAmalgamation m
Y Z : C
f : Y ⟶ X
g : Z ⟶ Y
r₀ : ↑(R₀.obj (Opposite.op Y))
r₀' : ↑(R₀.obj (Opposite.op Z))
m₀ : ↑(M₀.presheaf.obj (Opposite.op Y))
m₀' : ↑(M₀.presheaf.obj (Opposite.op Z))
hr₀ : (α.app (Opposite.op Y)) r₀ = (R.map f.op) r
hr₀' : (α.app (Opposite.op Z)) r₀' = (R.map (f.op ≫ g.op)) r
hm₀ : (φ.app (Opposite.op Y)) m₀ = (A.map f.op) m
hm₀' : (φ.app (Opposite.op Z)) m₀' = (A.map (f.op ≫ g.op)) m
⊢ (φ.app (Opposite.op Z)) ((M₀.presheaf.map g.op) m₀) = (φ.app (Opposite.op Z)) m₀'
tactic: rw [← PresheafOfModules.Sheafify.app_eq_of_isLocallyInjective α φ hA (R₀.map g.op r₀) r₀'
    (M₀.presheaf.map g.op m₀) m₀', M₀.map_smul]