Theorem: LinearMap.commute_pow_left_of_commute
File: Mathlib/Algebra/Module/LinearMap/End.lean

tactic: induction' k with k ih
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommGroup N₁
inst✝⁷ : Module R M
inst✝⁶ : Module R N₁
inst✝⁵ : Monoid S
inst✝⁴ : DistribMulAction S M
inst✝³ : SMulCommClass R S M
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₁₂ : R →+* R₂
f : M →ₛₗ[σ₁₂] M₂
g : Module.End R M
g₂ : Module.End R₂ M₂
h : comp g₂ f = f.comp g
k : ℕ
⊢ comp (g₂ ^ k) f = f.comp (g ^ k)
state_after: case zero
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommGroup N₁
inst✝⁷ : Module R M
inst✝⁶ : Module R N₁
inst✝⁵ : Monoid S
inst✝⁴ : DistribMulAction S M
inst✝³ : SMulCommClass R S M
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₁₂ : R →+* R₂
f : M →ₛₗ[σ₁₂] M₂
g : Module.End R M
g₂ : Module.End R₂ M₂
h : comp g₂ f = f.comp g
⊢ comp (g₂ ^ 0) f = f.comp (g ^ 0)

case succ
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommGroup N₁
inst✝⁷ : Module R M
inst✝⁶ : Module R N₁
inst✝⁵ : Monoid S
inst✝⁴ : DistribMulAction S M
inst✝³ : SMulCommClass R S M
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₁₂ : R →+* R₂
f : M →ₛₗ[σ₁₂] M₂
g : Module.End R M
g₂ : Module.End R₂ M₂
h : comp g₂ f = f.comp g
k : ℕ
ih : comp (g₂ ^ k) f = f.comp (g ^ k)
⊢ comp (g₂ ^ (k + 1)) f = f.comp (g ^ (k + 1))

tactic: simp only [Nat.zero_eq, pow_zero, one_eq_id, id_comp, comp_id]
state_before: case zero
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommGroup N₁
inst✝⁷ : Module R M
inst✝⁶ : Module R N₁
inst✝⁵ : Monoid S
inst✝⁴ : DistribMulAction S M
inst✝³ : SMulCommClass R S M
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₁₂ : R →+* R₂
f : M →ₛₗ[σ₁₂] M₂
g : Module.End R M
g₂ : Module.End R₂ M₂
h : comp g₂ f = f.comp g
⊢ comp (g₂ ^ 0) f = f.comp (g ^ 0)
state_after: no goals

tactic: rw [pow_succ', pow_succ', LinearMap.mul_eq_comp, LinearMap.comp_assoc, ih,
← LinearMap.comp_assoc, h, LinearMap.comp_assoc, LinearMap.mul_eq_comp]
state_before: case succ
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝¹⁰ : Semiring R
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommGroup N₁
inst✝⁷ : Module R M
inst✝⁶ : Module R N₁
inst✝⁵ : Monoid S
inst✝⁴ : DistribMulAction S M
inst✝³ : SMulCommClass R S M
inst✝² : Semiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
σ₁₂ : R →+* R₂
f : M →ₛₗ[σ₁₂] M₂
g : Module.End R M
g₂ : Module.End R₂ M₂
h : comp g₂ f = f.comp g
k : ℕ
ih : comp (g₂ ^ k) f = f.comp (g ^ k)
⊢ comp (g₂ ^ (k + 1)) f = f.comp (g ^ (k + 1))
state_after: no goals