Theorem: Submodule.mapQ_pow
File: Mathlib/LinearAlgebra/Quotient.lean

tactic: induction' k with k ih
state_before: R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
k : ℕ
h' : optParam (p ≤ comap (f ^ k) p) ⋯
⊢ p.mapQ p (f ^ k) h' = p.mapQ p f h ^ k
state_after: case zero
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
h' : optParam (p ≤ comap (f ^ 0) p) ⋯
⊢ p.mapQ p (f ^ 0) h' = p.mapQ p f h ^ 0

case succ
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) ⋯), p.mapQ p (f ^ k) h' = p.mapQ p f h ^ k
h' : optParam (p ≤ comap (f ^ (k + 1)) p) ⋯
⊢ p.mapQ p (f ^ (k + 1)) h' = p.mapQ p f h ^ (k + 1)

tactic: simp [LinearMap.one_eq_id]
state_before: case zero
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
h' : optParam (p ≤ comap (f ^ 0) p) ⋯
⊢ p.mapQ p (f ^ 0) h' = p.mapQ p f h ^ 0
state_after: no goals

tactic: simp only [LinearMap.iterate_succ]
state_before: case succ
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) ⋯), p.mapQ p (f ^ k) h' = p.mapQ p f h ^ k
h' : optParam (p ≤ comap (f ^ (k + 1)) p) ⋯
⊢ p.mapQ p (f ^ (k + 1)) h' = p.mapQ p f h ^ (k + 1)
state_after: case succ
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) ⋯), p.mapQ p (f ^ k) h' = p.mapQ p f h ^ k
h' : optParam (p ≤ comap (f ^ (k + 1)) p) ⋯
⊢ p.mapQ p ((f ^ k) ∘ₗ f) ⋯ = (p.mapQ p f h ^ k) ∘ₗ p.mapQ p f h

tactic: convert mapQ_comp p p p f (f ^ k) h (p.le_comap_pow_of_le_comap h k)
  (h.trans (comap_mono <| p.le_comap_pow_of_le_comap h k))
state_before: case succ
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) ⋯), p.mapQ p (f ^ k) h' = p.mapQ p f h ^ k
h' : optParam (p ≤ comap (f ^ (k + 1)) p) ⋯
⊢ p.mapQ p ((f ^ k) ∘ₗ f) ⋯ = (p.mapQ p f h ^ k) ∘ₗ p.mapQ p f h
state_after: case h.e'_3.h.e'_20
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) ⋯), p.mapQ p (f ^ k) h' = p.mapQ p f h ^ k
h' : optParam (p ≤ comap (f ^ (k + 1)) p) ⋯
⊢ p.mapQ p f h ^ k = p.mapQ p (f ^ k) ⋯

tactic: exact (ih _).symm
state_before: case h.e'_3.h.e'_20
R : Type u_1
M : Type u_2
r : R
x y : M
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
p p' : Submodule R M
R₂ : Type u_3
M₂ : Type u_4
inst✝² : Ring R₂
inst✝¹ : AddCommGroup M₂
inst✝ : Module R₂ M₂
τ₁₂ : R →+* R₂
q : Submodule R₂ M₂
f : M →ₗ[R] M
h : p ≤ comap f p
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) ⋯), p.mapQ p (f ^ k) h' = p.mapQ p f h ^ k
h' : optParam (p ≤ comap (f ^ (k + 1)) p) ⋯
⊢ p.mapQ p f h ^ k = p.mapQ p (f ^ k) ⋯
state_after: no goals