-- Mathlib/Algebra/Module/Equiv/Defs.lean
theorem eq_comp_toLinearMap_symm (f : M₂ →ₛₗ[σ₂₃] M₃) (g : M₁ →ₛₗ[σ₁₃] M₃) :
    f = g.comp e₁₂.symm.toLinearMap ↔ f.comp e₁₂.toLinearMap = g

Proof state:
case mpr.h
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
inst✝⁷ : Semiring R₁
inst✝⁶ : Semiring R₂
inst✝⁵ : Semiring R₃
inst✝⁴ : AddCommMonoid M₁
inst✝³ : AddCommMonoid M₂
inst✝² : AddCommMonoid M₃
module_M₁ : Module R₁ M₁
module_M₂ : Module R₂ M₂
module_M₃ : Module R₃ M₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
σ₂₁ : R₂ →+* R₁
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
re₁₂ : RingHomInvPair σ₁₂ σ₂₁
re₂₁ : RingHomInvPair σ₂₁ σ₁₂
e₁₂ : M₁ ≃ₛₗ[σ₁₂] M₂
inst✝ : RingHomCompTriple σ₂₁ σ₁₃ σ₂₃
f : M₂ →ₛₗ[σ₂₃] M₃
g : M₁ →ₛₗ[σ₁₃] M₃
H : f.comp ↑e₁₂ = g
x✝ : M₂
⊢ f x✝ = (g.comp ↑e₁₂.symm) x✝

Tactic:
simp [← H, ← e₁₂.toEquiv.eq_comp_symm f g]

Result:
no goals

Proof state:
case mp.h
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
inst✝⁷ : Semiring R₁
inst✝⁶ : Semiring R₂
inst✝⁵ : Semiring R₃
inst✝⁴ : AddCommMonoid M₁
inst✝³ : AddCommMonoid M₂
inst✝² : AddCommMonoid M₃
module_M₁ : Module R₁ M₁
module_M₂ : Module R₂ M₂
module_M₃ : Module R₃ M₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
σ₂₁ : R₂ →+* R₁
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
re₁₂ : RingHomInvPair σ₁₂ σ₂₁
re₂₁ : RingHomInvPair σ₂₁ σ₁₂
e₁₂ : M₁ ≃ₛₗ[σ₁₂] M₂
inst✝ : RingHomCompTriple σ₂₁ σ₁₃ σ₂₃
f : M₂ →ₛₗ[σ₂₃] M₃
g : M₁ →ₛₗ[σ₁₃] M₃
H : f = g.comp ↑e₁₂.symm
x✝ : M₁
⊢ (f.comp ↑e₁₂) x✝ = g x✝

Tactic:
simp [H, e₁₂.toEquiv.eq_comp_symm f g]

Result:
no goals

Proof state:
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
inst✝⁷ : Semiring R₁
inst✝⁶ : Semiring R₂
inst✝⁵ : Semiring R₃
inst✝⁴ : AddCommMonoid M₁
inst✝³ : AddCommMonoid M₂
inst✝² : AddCommMonoid M₃
module_M₁ : Module R₁ M₁
module_M₂ : Module R₂ M₂
module_M₃ : Module R₃ M₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
σ₂₁ : R₂ →+* R₁
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
re₁₂ : RingHomInvPair σ₁₂ σ₂₁
re₂₁ : RingHomInvPair σ₂₁ σ₁₂
e₁₂ : M₁ ≃ₛₗ[σ₁₂] M₂
inst✝ : RingHomCompTriple σ₂₁ σ₁₃ σ₂₃
f : M₂ →ₛₗ[σ₂₃] M₃
g : M₁ →ₛₗ[σ₁₃] M₃
⊢ f = g.comp ↑e₁₂.symm ↔ f.comp ↑e₁₂ = g

Tactic:
constructor <;> intro H <;> ext

Result:
case mp.h
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
inst✝⁷ : Semiring R₁
inst✝⁶ : Semiring R₂
inst✝⁵ : Semiring R₃
inst✝⁴ : AddCommMonoid M₁
inst✝³ : AddCommMonoid M₂
inst✝² : AddCommMonoid M₃
module_M₁ : Module R₁ M₁
module_M₂ : Module R₂ M₂
module_M₃ : Module R₃ M₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
σ₂₁ : R₂ →+* R₁
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
re₁₂ : RingHomInvPair σ₁₂ σ₂₁
re₂₁ : RingHomInvPair σ₂₁ σ₁₂
e₁₂ : M₁ ≃ₛₗ[σ₁₂] M₂
inst✝ : RingHomCompTriple σ₂₁ σ₁₃ σ₂₃
f : M₂ →ₛₗ[σ₂₃] M₃
g : M₁ →ₛₗ[σ₁₃] M₃
H : f = g.comp ↑e₁₂.symm
x✝ : M₁
⊢ (f.comp ↑e₁₂) x✝ = g x✝

case mpr.h
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
inst✝⁷ : Semiring R₁
inst✝⁶ : Semiring R₂
inst✝⁵ : Semiring R₃
inst✝⁴ : AddCommMonoid M₁
inst✝³ : AddCommMonoid M₂
inst✝² : AddCommMonoid M₃
module_M₁ : Module R₁ M₁
module_M₂ : Module R₂ M₂
module_M₃ : Module R₃ M₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
σ₂₁ : R₂ →+* R₁
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
re₁₂ : RingHomInvPair σ₁₂ σ₂₁
re₂₁ : RingHomInvPair σ₂₁ σ₁₂
e₁₂ : M₁ ≃ₛₗ[σ₁₂] M₂
inst✝ : RingHomCompTriple σ₂₁ σ₁₃ σ₂₃
f : M₂ →ₛₗ[σ₂₃] M₃
g : M₁ →ₛₗ[σ₁₃] M₃
H : f.comp ↑e₁₂ = g
x✝ : M₂
⊢ f x✝ = (g.comp ↑e₁₂.symm) x✝