Theorem: PresheafOfModules.sheafifyMap_val_hom
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 φ
inst✝² : J.WEqualsLocallyBijective AddCommGrp
M₀' : PresheafOfModules R₀
A' : Sheaf J AddCommGrp
φ' : M₀'.presheaf ⟶ A'.val
inst✝¹ : Presheaf.IsLocallyInjective J φ'
inst✝ : Presheaf.IsLocallySurjective J φ'
τ₀ : M₀ ⟶ M₀'
τ : A ⟶ A'
fac : τ₀.hom ≫ φ' = φ ≫ τ.val
⊢ ∀ (X : Cᵒᵖ) (r : ↑(R.val.obj X)) (x : ↑((sheafify α φ).val.presheaf.obj X)),
    (τ.val.app X) (r • x) = r • (τ.val.app X) x
state_after: 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 φ
inst✝² : J.WEqualsLocallyBijective AddCommGrp
M₀' : PresheafOfModules R₀
A' : Sheaf J AddCommGrp
φ' : M₀'.presheaf ⟶ A'.val
inst✝¹ : Presheaf.IsLocallyInjective J φ'
inst✝ : Presheaf.IsLocallySurjective J φ'
τ₀ : M₀ ⟶ M₀'
τ : A ⟶ A'
fac : τ₀.hom ≫ φ' = φ ≫ τ.val
f : (sheafify α φ).val ⟶ (sheafify α φ').val := (sheafifyHomEquiv' α φ ⋯).symm (τ₀ ≫ toSheafify α φ')
⊢ ∀ (X : Cᵒᵖ) (r : ↑(R.val.obj X)) (x : ↑((sheafify α φ).val.presheaf.obj X)),
    (τ.val.app X) (r • x) = r • (τ.val.app X) x
tactic: let f := (sheafifyHomEquiv' α φ (by exact A'.cond)).symm (τ₀ ≫ toSheafify α φ')
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 φ
inst✝² : J.WEqualsLocallyBijective AddCommGrp
M₀' : PresheafOfModules R₀
A' : Sheaf J AddCommGrp
φ' : M₀'.presheaf ⟶ A'.val
inst✝¹ : Presheaf.IsLocallyInjective J φ'
inst✝ : Presheaf.IsLocallySurjective J φ'
τ₀ : M₀ ⟶ M₀'
τ : A ⟶ A'
fac : τ₀.hom ≫ φ' = φ ≫ τ.val
f : (sheafify α φ).val ⟶ (sheafify α φ').val := (sheafifyHomEquiv' α φ ⋯).symm (τ₀ ≫ toSheafify α φ')
⊢ ∀ (X : Cᵒᵖ) (r : ↑(R.val.obj X)) (x : ↑((sheafify α φ).val.presheaf.obj X)),
    (τ.val.app X) (r • x) = r • (τ.val.app X) x
state_after: 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 φ
inst✝² : J.WEqualsLocallyBijective AddCommGrp
M₀' : PresheafOfModules R₀
A' : Sheaf J AddCommGrp
φ' : M₀'.presheaf ⟶ A'.val
inst✝¹ : Presheaf.IsLocallyInjective J φ'
inst✝ : Presheaf.IsLocallySurjective J φ'
τ₀ : M₀ ⟶ M₀'
τ : A ⟶ A'
fac : τ₀.hom ≫ φ' = φ ≫ τ.val
f : (sheafify α φ).val ⟶ (sheafify α φ').val := (sheafifyHomEquiv' α φ ⋯).symm (τ₀ ≫ toSheafify α φ')
eq : τ.val = f.hom
⊢ ∀ (X : Cᵒᵖ) (r : ↑(R.val.obj X)) (x : ↑((sheafify α φ).val.presheaf.obj X)),
    (τ.val.app X) (r • x) = r • (τ.val.app X) x
tactic: have eq : τ.val = f.hom := ((J.W_of_isLocallyBijective φ).homEquiv _ A'.cond).injective
          (by
            dsimp [f]
            erw [comp_sheafifyHomEquiv'_symm_hom]
            simp only [← fac, toSheafify_hom, Hom.comp_hom])
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 φ
inst✝² : J.WEqualsLocallyBijective AddCommGrp
M₀' : PresheafOfModules R₀
A' : Sheaf J AddCommGrp
φ' : M₀'.presheaf ⟶ A'.val
inst✝¹ : Presheaf.IsLocallyInjective J φ'
inst✝ : Presheaf.IsLocallySurjective J φ'
τ₀ : M₀ ⟶ M₀'
τ : A ⟶ A'
fac : τ₀.hom ≫ φ' = φ ≫ τ.val
f : (sheafify α φ).val ⟶ (sheafify α φ').val := (sheafifyHomEquiv' α φ ⋯).symm (τ₀ ≫ toSheafify α φ')
eq : τ.val = f.hom
⊢ ∀ (X : Cᵒᵖ) (r : ↑(R.val.obj X)) (x : ↑((sheafify α φ).val.presheaf.obj X)),
    (τ.val.app X) (r • x) = r • (τ.val.app X) x
state_after: no goals
tactic: convert f.map_smul