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.292638
M₂ : Type ?u.292641
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 ≤ comap (f ^ k) p)
⊢ mapQ p p (f ^ k) h' = mapQ p p f h ^ k

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.292638
M₂ : Type ?u.292641
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 ≤ comap (f ^ k) p)
h' : optParam (p ≤ comap (f ^ Nat.zero) p) (_ : p ≤ comap (f ^ Nat.zero) p)
⊢ mapQ p p (f ^ Nat.zero) h' = mapQ p p f h ^ Nat.zero

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.292638
M₂ : Type ?u.292641
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 ≤ comap (f ^ k✝) p)
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) (_ : p ≤ comap (f ^ k) p)), mapQ p p (f ^ k) h' = mapQ p p f h ^ k
h' : optParam (p ≤ comap (f ^ Nat.succ k) p) (_ : p ≤ comap (f ^ Nat.succ k) p)
⊢ mapQ p p (f ^ Nat.succ k) h' = mapQ p p f h ^ Nat.succ k

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.292638
M₂ : Type ?u.292641
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 ≤ comap (f ^ k✝) p)
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) (_ : p ≤ comap (f ^ k) p)), mapQ p p (f ^ k) h' = mapQ p p f h ^ k
h' : optParam (p ≤ comap (f ^ Nat.succ k) p) (_ : p ≤ comap (f ^ Nat.succ k) p)
⊢ mapQ p p (comp (f ^ k) f) (_ : p ≤ comap (comp (f ^ k) f) p) = comp (mapQ p p f h ^ k) (mapQ p p f h)

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.292638
M₂ : Type ?u.292641
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 ≤ comap (f ^ k✝) p)
k : ℕ
ih : ∀ (h' : optParam (p ≤ comap (f ^ k) p) (_ : p ≤ comap (f ^ k) p)), mapQ p p (f ^ k) h' = mapQ p p f h ^ k
h' : optParam (p ≤ comap (f ^ Nat.succ k) p) (_ : p ≤ comap (f ^ Nat.succ k) p)
⊢ mapQ p p f h ^ k = mapQ p p (f ^ k) (_ : p ≤ comap (f ^ k) p)