Theorem: FormalMultilinearSeries.rightInv_removeZero
File: Mathlib/Analysis/Analytic/Inverse.lean

tactic: ext1 n
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
⊢ p.removeZero.rightInv i = p.rightInv i
state_after: case h
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n : ℕ
⊢ p.removeZero.rightInv i n = p.rightInv i n

tactic: induction' n using Nat.strongRec' with n IH
state_before: case h
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n : ℕ
⊢ p.removeZero.rightInv i n = p.rightInv i n
state_after: case h.H
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n : ℕ
IH : ∀ m < n, p.removeZero.rightInv i m = p.rightInv i m
⊢ p.removeZero.rightInv i n = p.rightInv i n

tactic: match n with
| 0 => simp only [rightInv_coeff_zero]
| 1 => simp only [rightInv_coeff_one]
| n + 2 =>
  simp only [rightInv, neg_inj]
  rw [removeZero_comp_of_pos _ _ (add_pos_of_nonneg_of_pos n.zero_le zero_lt_two)]
  congr (config := { closePost := false }) 2 with k
  by_cases hk : k < n + 2 <;> simp [hk, IH]
state_before: case h.H
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n : ℕ
IH : ∀ m < n, p.removeZero.rightInv i m = p.rightInv i m
⊢ p.removeZero.rightInv i n = p.rightInv i n
state_after: no goals

tactic: simp only [rightInv_coeff_zero]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n : ℕ
IH : ∀ m < 0, p.removeZero.rightInv i m = p.rightInv i m
⊢ p.removeZero.rightInv i 0 = p.rightInv i 0
state_after: no goals

tactic: simp only [rightInv_coeff_one]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n : ℕ
IH : ∀ m < 1, p.removeZero.rightInv i m = p.rightInv i m
⊢ p.removeZero.rightInv i 1 = p.rightInv i 1
state_after: no goals

tactic: simp only [rightInv, neg_inj]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n✝ n : ℕ
IH : ∀ m < n + 2, p.removeZero.rightInv i m = p.rightInv i m
⊢ p.removeZero.rightInv i (n + 2) = p.rightInv i (n + 2)
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n✝ n : ℕ
IH : ∀ m < n + 2, p.removeZero.rightInv i m = p.rightInv i m
⊢ (↑i.symm).compContinuousMultilinearMap
      (p.removeZero.comp (fun k => if k < n + 2 then p.removeZero.rightInv i k else 0) (n + 2)) =
    (↑i.symm).compContinuousMultilinearMap (p.comp (fun k => if k < n + 2 then p.rightInv i k else 0) (n + 2))

tactic: rw [removeZero_comp_of_pos _ _ (add_pos_of_nonneg_of_pos n.zero_le zero_lt_two)]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n✝ n : ℕ
IH : ∀ m < n + 2, p.removeZero.rightInv i m = p.rightInv i m
⊢ (↑i.symm).compContinuousMultilinearMap
      (p.removeZero.comp (fun k => if k < n + 2 then p.removeZero.rightInv i k else 0) (n + 2)) =
    (↑i.symm).compContinuousMultilinearMap (p.comp (fun k => if k < n + 2 then p.rightInv i k else 0) (n + 2))
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n✝ n : ℕ
IH : ∀ m < n + 2, p.removeZero.rightInv i m = p.rightInv i m
⊢ (↑i.symm).compContinuousMultilinearMap
      (p.comp (fun k => if k < n + 2 then p.removeZero.rightInv i k else 0) (n + 2)) =
    (↑i.symm).compContinuousMultilinearMap (p.comp (fun k => if k < n + 2 then p.rightInv i k else 0) (n + 2))

tactic: congr (config := { closePost := false }) 2 with k
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n✝ n : ℕ
IH : ∀ m < n + 2, p.removeZero.rightInv i m = p.rightInv i m
⊢ (↑i.symm).compContinuousMultilinearMap
      (p.comp (fun k => if k < n + 2 then p.removeZero.rightInv i k else 0) (n + 2)) =
    (↑i.symm).compContinuousMultilinearMap (p.comp (fun k => if k < n + 2 then p.rightInv i k else 0) (n + 2))
state_after: case e_f.e_p.h.H
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n✝ n : ℕ
IH : ∀ m < n + 2, p.removeZero.rightInv i m = p.rightInv i m
k : ℕ
x✝ : Fin k → F
⊢ (if k < n + 2 then p.removeZero.rightInv i k else 0) x✝ = (if k < n + 2 then p.rightInv i k else 0) x✝

tactic: by_cases hk : k < n + 2 <;> simp [hk, IH]
state_before: case e_f.e_p.h.H
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
n✝ n : ℕ
IH : ∀ m < n + 2, p.removeZero.rightInv i m = p.rightInv i m
k : ℕ
x✝ : Fin k → F
⊢ (if k < n + 2 then p.removeZero.rightInv i k else 0) x✝ = (if k < n + 2 then p.rightInv i k else 0) x✝
state_after: no goals