[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : Subsingleton A
a : A
⊢ spectralRadius 𝕜 a = 0
[PROOFSTEP]
simp [spectralRadius]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
⊢ spectralRadius 𝕜 0 = 0
[PROOFSTEP]
nontriviality A
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
✝ : Nontrivial A
⊢ spectralRadius 𝕜 0 = 0
[PROOFSTEP]
simp [spectralRadius]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ * ‖1‖ < ‖k‖
⊢ k ∈ ρ a
[PROOFSTEP]
rw [resolventSet, Set.mem_setOf_eq, Algebra.algebraMap_eq_smul_one]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ * ‖1‖ < ‖k‖
⊢ IsUnit (k • 1 - a)
[PROOFSTEP]
nontriviality A
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ * ‖1‖ < ‖k‖
✝ : Nontrivial A
⊢ IsUnit (k • 1 - a)
[PROOFSTEP]
have hk : k ≠ 0 := ne_zero_of_norm_ne_zero ((mul_nonneg (norm_nonneg _) (norm_nonneg _)).trans_lt h).ne'
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ * ‖1‖ < ‖k‖
✝ : Nontrivial A
hk : k ≠ 0
⊢ IsUnit (k • 1 - a)
[PROOFSTEP]
letI ku := Units.map ↑ₐ.toMonoidHom (Units.mk0 k hk)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ * ‖1‖ < ‖k‖
✝ : Nontrivial A
hk : k ≠ 0
ku : (fun x => Aˣ) (Units.mk0 k hk) := ↑(Units.map ↑↑ₐ) (Units.mk0 k hk)
⊢ IsUnit (k • 1 - a)
[PROOFSTEP]
rw [← inv_inv ‖(1 : A)‖, mul_inv_lt_iff (inv_pos.2 <| norm_pos_iff.2 (one_ne_zero : (1 : A) ≠ 0))] at h 
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ < ‖1‖⁻¹ * ‖k‖
✝ : Nontrivial A
hk : k ≠ 0
ku : Aˣ := ↑(Units.map ↑↑ₐ) (Units.mk0 k hk)
⊢ IsUnit (k • 1 - a)
[PROOFSTEP]
have hku : ‖-a‖ < ‖(↑ku⁻¹ : A)‖⁻¹ := by simpa [norm_algebraMap] using h
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ < ‖1‖⁻¹ * ‖k‖
✝ : Nontrivial A
hk : k ≠ 0
ku : Aˣ := ↑(Units.map ↑↑ₐ) (Units.mk0 k hk)
⊢ ‖-a‖ < ‖↑ku⁻¹‖⁻¹
[PROOFSTEP]
simpa [norm_algebraMap] using h
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
h : ‖a‖ < ‖1‖⁻¹ * ‖k‖
✝ : Nontrivial A
hk : k ≠ 0
ku : Aˣ := ↑(Units.map ↑↑ₐ) (Units.mk0 k hk)
hku : ‖-a‖ < ‖↑ku⁻¹‖⁻¹
⊢ IsUnit (k • 1 - a)
[PROOFSTEP]
simpa [sub_eq_add_neg, Algebra.algebraMap_eq_smul_one] using (ku.add (-a) hku).isUnit
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
a : A
k : 𝕜
h : ‖a‖ < ‖k‖
⊢ ‖a‖ * ‖1‖ < ‖k‖
[PROOFSTEP]
rwa [norm_one, mul_one]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
hk : k ∈ σ a
⊢ k ∈ Metric.closedBall 0 (‖a‖ * ‖1‖)
[PROOFSTEP]
simp [norm_le_norm_mul_of_mem hk]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
a : A
k : 𝕜
hk : k ∈ σ a
⊢ k ∈ Metric.closedBall 0 ‖a‖
[PROOFSTEP]
simp [norm_le_norm_of_mem hk]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
a : A
⊢ spectralRadius 𝕜 a ≤ ↑‖a‖₊
[PROOFSTEP]
refine' iSup₂_le fun k hk => _
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
a : A
k : 𝕜
hk : k ∈ σ a
⊢ ↑‖k‖₊ ≤ ↑‖a‖₊
[PROOFSTEP]
exact_mod_cast norm_le_norm_of_mem hk
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : ProperSpace 𝕜
a : A
ha : Set.Nonempty (σ a)
⊢ ∃ k, k ∈ σ a ∧ ↑‖k‖₊ = spectralRadius 𝕜 a
[PROOFSTEP]
obtain ⟨k, hk, h⟩ := (spectrum.isCompact a).exists_forall_ge ha continuous_nnnorm.continuousOn
[GOAL]
case intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : ProperSpace 𝕜
a : A
ha : Set.Nonempty (σ a)
k : 𝕜
hk : k ∈ σ a
h : ∀ (y : 𝕜), y ∈ σ a → ‖y‖₊ ≤ ‖k‖₊
⊢ ∃ k, k ∈ σ a ∧ ↑‖k‖₊ = spectralRadius 𝕜 a
[PROOFSTEP]
exact ⟨k, hk, le_antisymm (le_iSup₂ (α := ℝ≥0∞) k hk) (iSup₂_le <| by exact_mod_cast h)⟩
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : ProperSpace 𝕜
a : A
ha : Set.Nonempty (σ a)
k : 𝕜
hk : k ∈ σ a
h : ∀ (y : 𝕜), y ∈ σ a → ‖y‖₊ ≤ ‖k‖₊
⊢ ∀ (i : 𝕜), i ∈ σ a → ↑‖i‖₊ ≤ ↑‖k‖₊
[PROOFSTEP]
exact_mod_cast h
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : ProperSpace 𝕜
a : A
ha : Set.Nonempty (σ a)
r : ℝ≥0
hr : ∀ (k : 𝕜), k ∈ σ a → ‖k‖₊ < r
⊢ ∀ (x : 𝕜), x ∈ σ a → (ENNReal.some ∘ fun a => ‖a‖₊) x < ↑r
[PROOFSTEP]
dsimp only [(· ∘ ·)]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : ProperSpace 𝕜
a : A
ha : Set.Nonempty (σ a)
r : ℝ≥0
hr : ∀ (k : 𝕜), k ∈ σ a → ‖k‖₊ < r
⊢ ∀ (x : 𝕜), x ∈ σ a → ↑‖x‖₊ < ↑r
[PROOFSTEP]
exact_mod_cast hr
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
⊢ spectralRadius 𝕜 a ≤ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1))
[PROOFSTEP]
refine'
  iSup₂_le fun k hk =>
    _
      -- apply easy direction of the spectral mapping theorem for polynomials
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
⊢ ↑‖k‖₊ ≤ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1))
[PROOFSTEP]
have pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1)) := by
  simpa only [one_mul, Algebra.algebraMap_eq_smul_one, one_smul, aeval_monomial, one_mul, eval_monomial] using
    subset_polynomial_aeval a (@monomial 𝕜 _ (n + 1) (1 : 𝕜))
      ⟨k, hk, rfl⟩
        -- power of the norm is bounded by norm of the power
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
⊢ k ^ (n + 1) ∈ σ (a ^ (n + 1))
[PROOFSTEP]
simpa only [one_mul, Algebra.algebraMap_eq_smul_one, one_smul, aeval_monomial, one_mul, eval_monomial] using
  subset_polynomial_aeval a (@monomial 𝕜 _ (n + 1) (1 : 𝕜))
    ⟨k, hk, rfl⟩
      -- power of the norm is bounded by norm of the power
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
⊢ ↑‖k‖₊ ≤ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1))
[PROOFSTEP]
have nnnorm_pow_le : (↑(‖k‖₊ ^ (n + 1)) : ℝ≥0∞) ≤ ‖a ^ (n + 1)‖₊ * ‖(1 : A)‖₊ := by
  simpa only [Real.toNNReal_mul (norm_nonneg _), norm_toNNReal, nnnorm_pow k (n + 1), ENNReal.coe_mul] using
    coe_mono
      (Real.toNNReal_mono (norm_le_norm_mul_of_mem pow_mem))
        -- take (n + 1)ᵗʰ roots and clean up the left-hand side
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
⊢ ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
[PROOFSTEP]
simpa only [Real.toNNReal_mul (norm_nonneg _), norm_toNNReal, nnnorm_pow k (n + 1), ENNReal.coe_mul] using
  coe_mono
    (Real.toNNReal_mono (norm_le_norm_mul_of_mem pow_mem))
      -- take (n + 1)ᵗʰ roots and clean up the left-hand side
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
⊢ ↑‖k‖₊ ≤ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1))
[PROOFSTEP]
have hn : 0 < ((n + 1 : ℕ) : ℝ) := by exact_mod_cast Nat.succ_pos'
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
⊢ 0 < ↑(n + 1)
[PROOFSTEP]
exact_mod_cast Nat.succ_pos'
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖k‖₊ ≤ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1))
[PROOFSTEP]
convert monotone_rpow_of_nonneg (one_div_pos.mpr hn).le nnnorm_pow_le using 1
[GOAL]
case h.e'_3
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖k‖₊ = (fun x => x ^ (1 / ↑(n + 1))) ↑(‖k‖₊ ^ (n + 1))
case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1)) = (fun x => x ^ (1 / ↑(n + 1))) (↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊)
[PROOFSTEP]
all_goals dsimp
[GOAL]
case h.e'_3
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖k‖₊ = (fun x => x ^ (1 / ↑(n + 1))) ↑(‖k‖₊ ^ (n + 1))
[PROOFSTEP]
dsimp
[GOAL]
case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1)) = (fun x => x ^ (1 / ↑(n + 1))) (↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊)
[PROOFSTEP]
dsimp
[GOAL]
case h.e'_3
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖k‖₊ = ↑(‖k‖₊ ^ (n + 1)) ^ (1 / ↑(n + 1))
case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1)) = (↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊) ^ (1 / ↑(n + 1))
[PROOFSTEP]
erw [coe_pow, ← rpow_nat_cast, ← rpow_mul, mul_one_div_cancel hn.ne', rpow_one]
[GOAL]
case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
n : ℕ
k : 𝕜
hk : k ∈ σ a
pow_mem : k ^ (n + 1) ∈ σ (a ^ (n + 1))
nnnorm_pow_le : ↑(‖k‖₊ ^ (n + 1)) ≤ ↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊
hn : 0 < ↑(n + 1)
⊢ ↑‖a ^ (n + 1)‖₊ ^ (1 / (↑n + 1)) * ↑‖1‖₊ ^ (1 / (↑n + 1)) = (↑‖a ^ (n + 1)‖₊ * ↑‖1‖₊) ^ (1 / ↑(n + 1))
[PROOFSTEP]
rw [Nat.cast_succ, ENNReal.coe_mul_rpow]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
⊢ spectralRadius 𝕜 a ≤ liminf (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop
[PROOFSTEP]
refine' ENNReal.le_of_forall_lt_one_mul_le fun ε hε => _
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
⊢ ε * spectralRadius 𝕜 a ≤ liminf (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop
[PROOFSTEP]
by_cases ε = 0
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
⊢ ε * spectralRadius 𝕜 a ≤ liminf (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop
[PROOFSTEP]
by_cases ε = 0
[GOAL]
case pos
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ε = 0
⊢ ε * spectralRadius 𝕜 a ≤ liminf (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop
[PROOFSTEP]
simp only [h, zero_mul, zero_le']
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
⊢ ε * spectralRadius 𝕜 a ≤ liminf (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop
[PROOFSTEP]
have hε' : ε⁻¹ ≠ ∞ := fun h' => h (by simpa only [inv_inv, inv_top] using congr_arg (fun x : ℝ≥0∞ => x⁻¹) h')
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
h' : ε⁻¹ = ⊤
⊢ ε = 0
[PROOFSTEP]
simpa only [inv_inv, inv_top] using congr_arg (fun x : ℝ≥0∞ => x⁻¹) h'
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
⊢ ε * spectralRadius 𝕜 a ≤ liminf (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop
[PROOFSTEP]
simp only [ENNReal.mul_le_iff_le_inv h (hε.trans_le le_top).ne, mul_comm ε⁻¹, liminf_eq_iSup_iInf_of_nat',
  ENNReal.iSup_mul]
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
⊢ spectralRadius 𝕜 a ≤ ⨆ (i : ℕ), (⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i))) * ε⁻¹
[PROOFSTEP]
conv_rhs => arg 1; intro i; rw [ENNReal.iInf_mul hε']
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
| ⨆ (i : ℕ), (⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i))) * ε⁻¹
[PROOFSTEP]
arg 1; intro i; rw [ENNReal.iInf_mul hε']
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
| ⨆ (i : ℕ), (⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i))) * ε⁻¹
[PROOFSTEP]
arg 1; intro i; rw [ENNReal.iInf_mul hε']
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
| ⨆ (i : ℕ), (⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i))) * ε⁻¹
[PROOFSTEP]
arg 1
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
| fun i => (⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i))) * ε⁻¹
[PROOFSTEP]
intro i
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
i : ℕ
| (⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i))) * ε⁻¹
[PROOFSTEP]
rw [ENNReal.iInf_mul hε']
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : ε < 1
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
⊢ spectralRadius 𝕜 a ≤ ⨆ (i : ℕ), ⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i)) * ε⁻¹
[PROOFSTEP]
rw [← ENNReal.inv_lt_inv, inv_one] at hε 
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
⊢ spectralRadius 𝕜 a ≤ ⨆ (i : ℕ), ⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i)) * ε⁻¹
[PROOFSTEP]
obtain ⟨N, hN⟩ := eventually_atTop.mp (ENNReal.eventually_pow_one_div_le (ENNReal.coe_ne_top : ↑‖(1 : A)‖₊ ≠ ∞) hε)
[GOAL]
case neg.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
N : ℕ
hN : ∀ (b : ℕ), b ≥ N → ↑‖1‖₊ ^ (1 / ↑b) ≤ ε⁻¹
⊢ spectralRadius 𝕜 a ≤ ⨆ (i : ℕ), ⨅ (i_1 : ℕ), ↑‖a ^ (i_1 + i)‖₊ ^ (1 / ↑(i_1 + i)) * ε⁻¹
[PROOFSTEP]
refine' le_trans _ (le_iSup _ (N + 1))
[GOAL]
case neg.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
N : ℕ
hN : ∀ (b : ℕ), b ≥ N → ↑‖1‖₊ ^ (1 / ↑b) ≤ ε⁻¹
⊢ spectralRadius 𝕜 a ≤ ⨅ (i : ℕ), ↑‖a ^ (i + (N + 1))‖₊ ^ (1 / ↑(i + (N + 1))) * ε⁻¹
[PROOFSTEP]
refine' le_iInf fun n => _
[GOAL]
case neg.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
N : ℕ
hN : ∀ (b : ℕ), b ≥ N → ↑‖1‖₊ ^ (1 / ↑b) ≤ ε⁻¹
n : ℕ
⊢ spectralRadius 𝕜 a ≤ ↑‖a ^ (n + (N + 1))‖₊ ^ (1 / ↑(n + (N + 1))) * ε⁻¹
[PROOFSTEP]
simp only [← add_assoc]
[GOAL]
case neg.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
N : ℕ
hN : ∀ (b : ℕ), b ≥ N → ↑‖1‖₊ ^ (1 / ↑b) ≤ ε⁻¹
n : ℕ
⊢ spectralRadius 𝕜 a ≤ ↑‖a ^ (n + N + 1)‖₊ ^ (1 / ↑(n + N + 1)) * ε⁻¹
[PROOFSTEP]
refine' (spectralRadius_le_pow_nnnorm_pow_one_div 𝕜 a (n + N)).trans _
[GOAL]
case neg.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
N : ℕ
hN : ∀ (b : ℕ), b ≥ N → ↑‖1‖₊ ^ (1 / ↑b) ≤ ε⁻¹
n : ℕ
⊢ ↑‖a ^ (n + N + 1)‖₊ ^ (1 / (↑(n + N) + 1)) * ↑‖1‖₊ ^ (1 / (↑(n + N) + 1)) ≤
    ↑‖a ^ (n + N + 1)‖₊ ^ (1 / ↑(n + N + 1)) * ε⁻¹
[PROOFSTEP]
norm_cast
[GOAL]
case neg.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
N : ℕ
hN : ∀ (b : ℕ), b ≥ N → ↑‖1‖₊ ^ (1 / ↑b) ≤ ε⁻¹
n : ℕ
⊢ ↑‖a ^ (n + N + 1)‖₊ ^ (1 / ↑(n + N + 1)) * ↑‖1‖₊ ^ (1 / ↑(n + N + 1)) ≤ ↑‖a ^ (n + N + 1)‖₊ ^ (1 / ↑(n + N + 1)) * ε⁻¹
[PROOFSTEP]
exact mul_le_mul_left' (hN (n + N + 1) (by linarith)) _
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
ε : ℝ≥0∞
hε : 1 < ε⁻¹
h : ¬ε = 0
hε' : ε⁻¹ ≠ ⊤
N : ℕ
hN : ∀ (b : ℕ), b ≥ N → ↑‖1‖₊ ^ (1 / ↑b) ≤ ε⁻¹
n : ℕ
⊢ n + N + 1 ≥ N
[PROOFSTEP]
linarith
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
hk : k ∈ ρ a
⊢ HasDerivAt (resolvent a) (-resolvent a k ^ 2) k
[PROOFSTEP]
have H₁ : HasFDerivAt Ring.inverse _ (↑ₐ k - a) := hasFDerivAt_ring_inverse (𝕜 := 𝕜) hk.unit
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
hk : k ∈ ρ a
H₁ :
  HasFDerivAt Ring.inverse
    (-↑(↑(ContinuousLinearMap.mulLeftRight 𝕜 ((fun x => A) k)) ↑(IsUnit.unit hk)⁻¹) ↑(IsUnit.unit hk)⁻¹) (↑↑ₐ k - a)
⊢ HasDerivAt (resolvent a) (-resolvent a k ^ 2) k
[PROOFSTEP]
have H₂ : HasDerivAt (fun k => ↑ₐ k - a) 1 k := by simpa using (Algebra.linearMap 𝕜 A).hasDerivAt.sub_const a
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
hk : k ∈ ρ a
H₁ :
  HasFDerivAt Ring.inverse
    (-↑(↑(ContinuousLinearMap.mulLeftRight 𝕜 ((fun x => A) k)) ↑(IsUnit.unit hk)⁻¹) ↑(IsUnit.unit hk)⁻¹) (↑↑ₐ k - a)
⊢ HasDerivAt (fun k => ↑↑ₐ k - a) 1 k
[PROOFSTEP]
simpa using (Algebra.linearMap 𝕜 A).hasDerivAt.sub_const a
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
k : 𝕜
hk : k ∈ ρ a
H₁ :
  HasFDerivAt Ring.inverse
    (-↑(↑(ContinuousLinearMap.mulLeftRight 𝕜 ((fun x => A) k)) ↑(IsUnit.unit hk)⁻¹) ↑(IsUnit.unit hk)⁻¹) (↑↑ₐ k - a)
H₂ : HasDerivAt (fun k => ↑↑ₐ k - a) 1 k
⊢ HasDerivAt (resolvent a) (-resolvent a k ^ 2) k
[PROOFSTEP]
simpa [resolvent, sq, hk.unit_spec, ← Ring.inverse_unit hk.unit] using H₁.comp_hasDerivAt k H₂
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
⊢ ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
obtain ⟨c, c_pos, hc⟩ := (@NormedRing.inverse_one_sub_norm A _ _).exists_pos
[GOAL]
case intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
hc : IsBigOWith c (nhds 0) (fun t => Ring.inverse (1 - t)) fun _t => 1
⊢ ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
rw [isBigOWith_iff, eventually_iff, Metric.mem_nhds_iff] at hc 
[GOAL]
case intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
hc : ∃ ε, ε > 0 ∧ Metric.ball 0 ε ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c * ‖1‖}
⊢ ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
rcases hc with ⟨δ, δ_pos, hδ⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c * ‖1‖}
⊢ ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
simp only [CstarRing.norm_one, mul_one] at hδ 
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
⊢ ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
intro ε hε
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
⊢ ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
have ha₁ : 0 < ‖a‖ + 1 := lt_of_le_of_lt (norm_nonneg a) (lt_add_one _)
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
⊢ ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
have min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹) :=
  lt_min (mul_pos δ_pos (inv_pos.mpr ha₁)) (mul_pos hε (inv_pos.mpr c_pos))
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
⊢ ∃ R, R > 0 ∧ ∀ (z : 𝕜), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
refine' ⟨(min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹))⁻¹, inv_pos.mpr min_pos, fun z hz => _⟩
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜
hz : (min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹))⁻¹ ≤ ‖z‖
⊢ ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
have hnz : z ≠ 0 := norm_pos_iff.mp (lt_of_lt_of_le (inv_pos.mpr min_pos) hz)
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜
hz : (min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹))⁻¹ ≤ ‖z‖
hnz : z ≠ 0
⊢ ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
replace hz := inv_le_of_inv_le min_pos hz
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜
hnz : z ≠ 0
hz : ‖z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
⊢ ‖resolvent a z‖ ≤ ε
[PROOFSTEP]
rcases(⟨Units.mk0 z hnz, Units.val_mk0 hnz⟩ : IsUnit z) with ⟨z, rfl⟩
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
⊢ ‖resolvent a ↑z‖ ≤ ε
[PROOFSTEP]
have lt_δ : ‖z⁻¹ • a‖ < δ :=
  by
  rw [Units.smul_def, norm_smul, Units.val_inv_eq_inv_val, norm_inv]
  calc
    ‖(z : 𝕜)‖⁻¹ * ‖a‖ ≤ δ * (‖a‖ + 1)⁻¹ * ‖a‖ := mul_le_mul_of_nonneg_right (hz.trans (min_le_left _ _)) (norm_nonneg _)
    _ < δ := by
      conv => rw [mul_assoc]; rhs; rw [(mul_one δ).symm]
      exact mul_lt_mul_of_pos_left ((inv_mul_lt_iff ha₁).mpr ((mul_one (‖a‖ + 1)).symm ▸ lt_add_one _)) δ_pos
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
⊢ ‖z⁻¹ • a‖ < δ
[PROOFSTEP]
rw [Units.smul_def, norm_smul, Units.val_inv_eq_inv_val, norm_inv]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
⊢ ‖↑z‖⁻¹ * ‖a‖ < δ
[PROOFSTEP]
calc
  ‖(z : 𝕜)‖⁻¹ * ‖a‖ ≤ δ * (‖a‖ + 1)⁻¹ * ‖a‖ := mul_le_mul_of_nonneg_right (hz.trans (min_le_left _ _)) (norm_nonneg _)
  _ < δ := by
    conv => rw [mul_assoc]; rhs; rw [(mul_one δ).symm]
    exact mul_lt_mul_of_pos_left ((inv_mul_lt_iff ha₁).mpr ((mul_one (‖a‖ + 1)).symm ▸ lt_add_one _)) δ_pos
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
⊢ δ * (‖a‖ + 1)⁻¹ * ‖a‖ < δ
[PROOFSTEP]
conv => rw [mul_assoc]; rhs; rw [(mul_one δ).symm]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
| δ * (‖a‖ + 1)⁻¹ * ‖a‖ < δ
[PROOFSTEP]
rw [mul_assoc]; rhs; rw [(mul_one δ).symm]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
| δ * (‖a‖ + 1)⁻¹ * ‖a‖ < δ
[PROOFSTEP]
rw [mul_assoc]; rhs; rw [(mul_one δ).symm]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
| δ * (‖a‖ + 1)⁻¹ * ‖a‖ < δ
[PROOFSTEP]
rw [mul_assoc]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
| δ * ((‖a‖ + 1)⁻¹ * ‖a‖) < δ
[PROOFSTEP]
rhs
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
| δ
[PROOFSTEP]
rw [(mul_one δ).symm]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
⊢ δ * ((‖a‖ + 1)⁻¹ * ‖a‖) < δ * 1
[PROOFSTEP]
exact mul_lt_mul_of_pos_left ((inv_mul_lt_iff ha₁).mpr ((mul_one (‖a‖ + 1)).symm ▸ lt_add_one _)) δ_pos
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
lt_δ : ‖z⁻¹ • a‖ < δ
⊢ ‖resolvent a ↑z‖ ≤ ε
[PROOFSTEP]
rw [← inv_smul_smul z (resolvent a (z : 𝕜)), units_smul_resolvent_self, resolvent, Algebra.algebraMap_eq_smul_one,
  one_smul, Units.smul_def, norm_smul, Units.val_inv_eq_inv_val, norm_inv]
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
c : ℝ
c_pos : 0 < c
δ : ℝ
δ_pos : δ > 0
hδ : Metric.ball 0 δ ⊆ {x | ‖Ring.inverse (1 - x)‖ ≤ c}
ε : ℝ
hε : ε > 0
ha₁ : 0 < ‖a‖ + 1
min_pos : 0 < min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
z : 𝕜ˣ
hnz : ↑z ≠ 0
hz : ‖↑z‖⁻¹ ≤ min (δ * (‖a‖ + 1)⁻¹) (ε * c⁻¹)
lt_δ : ‖z⁻¹ • a‖ < δ
⊢ ‖↑z‖⁻¹ * ‖Ring.inverse (1 - z⁻¹ • a)‖ ≤ ε
[PROOFSTEP]
calc
  _ ≤ ε * c⁻¹ * c :=
    mul_le_mul (hz.trans (min_le_right _ _)) (hδ (mem_ball_zero_iff.mpr lt_δ)) (norm_nonneg _)
      (mul_pos hε (inv_pos.mpr c_pos)).le
  _ = _ := inv_mul_cancel_right₀ c_pos.ne.symm ε
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
⊢ (↑‖a‖₊)⁻¹ ≤ radius fun n => ContinuousMultilinearMap.mkPiField 𝕜 (Fin n) (a ^ n)
[PROOFSTEP]
refine' le_of_forall_nnreal_lt fun r hr => le_radius_of_bound_nnreal _ (max 1 ‖(1 : A)‖₊) fun n => _
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
n : ℕ
⊢ ‖ContinuousMultilinearMap.mkPiField 𝕜 (Fin n) (a ^ n)‖₊ * r ^ n ≤ max 1 ‖1‖₊
[PROOFSTEP]
rw [← norm_toNNReal, norm_mkPiField, norm_toNNReal]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
n : ℕ
⊢ ‖a ^ n‖₊ * r ^ n ≤ max 1 ‖1‖₊
[PROOFSTEP]
cases' n with n
[GOAL]
case zero
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
⊢ ‖a ^ Nat.zero‖₊ * r ^ Nat.zero ≤ max 1 ‖1‖₊
[PROOFSTEP]
simp only [Nat.zero_eq, le_refl, mul_one, or_true_iff, le_max_iff, pow_zero]
[GOAL]
case succ
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
n : ℕ
⊢ ‖a ^ Nat.succ n‖₊ * r ^ Nat.succ n ≤ max 1 ‖1‖₊
[PROOFSTEP]
refine' le_trans (le_trans (mul_le_mul_right' (nnnorm_pow_le' a n.succ_pos) (r ^ n.succ)) _) (le_max_left _ _)
[GOAL]
case succ
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
n : ℕ
⊢ ‖a‖₊ ^ Nat.succ n * r ^ Nat.succ n ≤ 1
[PROOFSTEP]
by_cases ‖a‖₊ = 0
[GOAL]
case succ
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
n : ℕ
⊢ ‖a‖₊ ^ Nat.succ n * r ^ Nat.succ n ≤ 1
[PROOFSTEP]
by_cases ‖a‖₊ = 0
[GOAL]
case pos
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
n : ℕ
h : ‖a‖₊ = 0
⊢ ‖a‖₊ ^ Nat.succ n * r ^ Nat.succ n ≤ 1
[PROOFSTEP]
simp only [h, zero_mul, zero_le', pow_succ]
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (↑‖a‖₊)⁻¹
n : ℕ
h : ¬‖a‖₊ = 0
⊢ ‖a‖₊ ^ Nat.succ n * r ^ Nat.succ n ≤ 1
[PROOFSTEP]
rw [← coe_inv h, coe_lt_coe, NNReal.lt_inv_iff_mul_lt h] at hr 
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : r * ‖a‖₊ < 1
n : ℕ
h : ¬‖a‖₊ = 0
⊢ ‖a‖₊ ^ Nat.succ n * r ^ Nat.succ n ≤ 1
[PROOFSTEP]
simpa only [← mul_pow, mul_comm] using pow_le_one' hr.le n.succ
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
y : 𝕜
hy : y ∈ EMetric.ball 0 (↑‖a‖₊)⁻¹
⊢ HasSum (fun n => ↑(ContinuousMultilinearMap.mkPiField 𝕜 (Fin n) (a ^ n)) fun x => y) (Ring.inverse (1 - (0 + y) • a))
[PROOFSTEP]
have norm_lt : ‖y • a‖ < 1 := by
  by_cases h : ‖a‖₊ = 0
  · simp only [nnnorm_eq_zero.mp h, norm_zero, zero_lt_one, smul_zero]
  · have nnnorm_lt : ‖y‖₊ < ‖a‖₊⁻¹ := by
      simpa only [← coe_inv h, mem_ball_zero_iff, Metric.emetric_ball_nnreal] using hy
    rwa [← coe_nnnorm, ← Real.lt_toNNReal_iff_coe_lt, Real.toNNReal_one, nnnorm_smul, ← NNReal.lt_inv_iff_mul_lt h]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
y : 𝕜
hy : y ∈ EMetric.ball 0 (↑‖a‖₊)⁻¹
⊢ ‖y • a‖ < 1
[PROOFSTEP]
by_cases h : ‖a‖₊ = 0
[GOAL]
case pos
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
y : 𝕜
hy : y ∈ EMetric.ball 0 (↑‖a‖₊)⁻¹
h : ‖a‖₊ = 0
⊢ ‖y • a‖ < 1
[PROOFSTEP]
simp only [nnnorm_eq_zero.mp h, norm_zero, zero_lt_one, smul_zero]
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
y : 𝕜
hy : y ∈ EMetric.ball 0 (↑‖a‖₊)⁻¹
h : ¬‖a‖₊ = 0
⊢ ‖y • a‖ < 1
[PROOFSTEP]
have nnnorm_lt : ‖y‖₊ < ‖a‖₊⁻¹ := by simpa only [← coe_inv h, mem_ball_zero_iff, Metric.emetric_ball_nnreal] using hy
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
y : 𝕜
hy : y ∈ EMetric.ball 0 (↑‖a‖₊)⁻¹
h : ¬‖a‖₊ = 0
⊢ ‖y‖₊ < ‖a‖₊⁻¹
[PROOFSTEP]
simpa only [← coe_inv h, mem_ball_zero_iff, Metric.emetric_ball_nnreal] using hy
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
y : 𝕜
hy : y ∈ EMetric.ball 0 (↑‖a‖₊)⁻¹
h : ¬‖a‖₊ = 0
nnnorm_lt : ‖y‖₊ < ‖a‖₊⁻¹
⊢ ‖y • a‖ < 1
[PROOFSTEP]
rwa [← coe_nnnorm, ← Real.lt_toNNReal_iff_coe_lt, Real.toNNReal_one, nnnorm_smul, ← NNReal.lt_inv_iff_mul_lt h]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
y : 𝕜
hy : y ∈ EMetric.ball 0 (↑‖a‖₊)⁻¹
norm_lt : ‖y • a‖ < 1
⊢ HasSum (fun n => ↑(ContinuousMultilinearMap.mkPiField 𝕜 (Fin n) (a ^ n)) fun x => y) (Ring.inverse (1 - (0 + y) • a))
[PROOFSTEP]
simpa [← smul_pow, (NormedRing.summable_geometric_of_norm_lt_1 _ norm_lt).hasSum_iff] using
  (NormedRing.inverse_one_sub _ norm_lt).symm
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
⊢ IsUnit (1 - z • a)
[PROOFSTEP]
by_cases hz : z = 0
[GOAL]
case pos
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
hz : z = 0
⊢ IsUnit (1 - z • a)
[PROOFSTEP]
simp only [hz, isUnit_one, sub_zero, zero_smul]
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
hz : ¬z = 0
⊢ IsUnit (1 - z • a)
[PROOFSTEP]
let u := Units.mk0 z hz
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
hz : ¬z = 0
u : 𝕜ˣ := Units.mk0 z hz
⊢ IsUnit (1 - z • a)
[PROOFSTEP]
suffices hu : IsUnit (u⁻¹ • (1 : A) - a)
[GOAL]
case neg
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
hz : ¬z = 0
u : 𝕜ˣ := Units.mk0 z hz
hu : IsUnit (u⁻¹ • 1 - a)
⊢ IsUnit (1 - z • a)
[PROOFSTEP]
rwa [IsUnit.smul_sub_iff_sub_inv_smul, inv_inv u] at hu 
[GOAL]
case hu
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
hz : ¬z = 0
u : 𝕜ˣ := Units.mk0 z hz
⊢ IsUnit (u⁻¹ • 1 - a)
[PROOFSTEP]
rw [Units.smul_def, ← Algebra.algebraMap_eq_smul_one, ← mem_resolventSet_iff]
[GOAL]
case hu
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
hz : ¬z = 0
u : 𝕜ˣ := Units.mk0 z hz
⊢ ↑u⁻¹ ∈ resolventSet 𝕜 a
[PROOFSTEP]
refine' mem_resolventSet_of_spectralRadius_lt _
[GOAL]
case hu
𝕜 : Type u_1
A : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra 𝕜 A
a : A
z : 𝕜
h : ↑‖z‖₊ < (spectralRadius 𝕜 a)⁻¹
hz : ¬z = 0
u : 𝕜ˣ := Units.mk0 z hz
⊢ spectralRadius 𝕜 a < ↑‖↑u⁻¹‖₊
[PROOFSTEP]
rwa [Units.val_inv_eq_inv_val, nnnorm_inv, coe_inv (nnnorm_ne_zero_iff.mpr (Units.val_mk0 hz ▸ hz : (u : 𝕜) ≠ 0)),
  lt_inv_iff_lt_inv]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (spectralRadius 𝕜 a)⁻¹
⊢ DifferentiableOn 𝕜 (fun z => Ring.inverse (1 - z • a)) (Metric.closedBall 0 ↑r)
[PROOFSTEP]
intro z z_mem
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (spectralRadius 𝕜 a)⁻¹
z : 𝕜
z_mem : z ∈ Metric.closedBall 0 ↑r
⊢ DifferentiableWithinAt 𝕜 (fun z => Ring.inverse (1 - z • a)) (Metric.closedBall 0 ↑r) z
[PROOFSTEP]
apply DifferentiableAt.differentiableWithinAt
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (spectralRadius 𝕜 a)⁻¹
z : 𝕜
z_mem : z ∈ Metric.closedBall 0 ↑r
⊢ DifferentiableAt 𝕜 (fun z => Ring.inverse (1 - z • a)) z
[PROOFSTEP]
have hu : IsUnit (1 - z • a) :=
  by
  refine' isUnit_one_sub_smul_of_lt_inv_radius (lt_of_le_of_lt (coe_mono _) hr)
  simpa only [norm_toNNReal, Real.toNNReal_coe] using Real.toNNReal_mono (mem_closedBall_zero_iff.mp z_mem)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (spectralRadius 𝕜 a)⁻¹
z : 𝕜
z_mem : z ∈ Metric.closedBall 0 ↑r
⊢ IsUnit (1 - z • a)
[PROOFSTEP]
refine' isUnit_one_sub_smul_of_lt_inv_radius (lt_of_le_of_lt (coe_mono _) hr)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (spectralRadius 𝕜 a)⁻¹
z : 𝕜
z_mem : z ∈ Metric.closedBall 0 ↑r
⊢ ‖z‖₊ ≤ r
[PROOFSTEP]
simpa only [norm_toNNReal, Real.toNNReal_coe] using Real.toNNReal_mono (mem_closedBall_zero_iff.mp z_mem)
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (spectralRadius 𝕜 a)⁻¹
z : 𝕜
z_mem : z ∈ Metric.closedBall 0 ↑r
hu : IsUnit (1 - z • a)
⊢ DifferentiableAt 𝕜 (fun z => Ring.inverse (1 - z • a)) z
[PROOFSTEP]
have H₁ : Differentiable 𝕜 fun w : 𝕜 => 1 - w • a := (differentiable_id.smul_const a).const_sub 1
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
hr : ↑r < (spectralRadius 𝕜 a)⁻¹
z : 𝕜
z_mem : z ∈ Metric.closedBall 0 ↑r
hu : IsUnit (1 - z • a)
H₁ : Differentiable 𝕜 fun w => 1 - w • a
⊢ DifferentiableAt 𝕜 (fun z => Ring.inverse (1 - z • a)) z
[PROOFSTEP]
exact DifferentiableAt.comp z (differentiableAt_inverse hu) H₁.differentiableAt
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
⊢ limsup (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop ≤ spectralRadius ℂ a
[PROOFSTEP]
refine' ENNReal.inv_le_inv.mp (le_of_forall_pos_nnreal_lt fun r r_pos r_lt => _)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
⊢ ↑r ≤ (limsup (fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)) atTop)⁻¹
[PROOFSTEP]
simp_rw [inv_limsup, ← one_div]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
⊢ ↑r ≤ liminf (fun i => 1 / ↑‖a ^ i‖₊ ^ (1 / ↑i)) atTop
[PROOFSTEP]
let p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
⊢ ↑r ≤ liminf (fun i => 1 / ↑‖a ^ i‖₊ ^ (1 / ↑i)) atTop
[PROOFSTEP]
suffices h : (r : ℝ≥0∞) ≤ p.radius
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
h : ↑r ≤ FormalMultilinearSeries.radius p
⊢ ↑r ≤ liminf (fun i => 1 / ↑‖a ^ i‖₊ ^ (1 / ↑i)) atTop
[PROOFSTEP]
convert h
[GOAL]
case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
h : ↑r ≤ FormalMultilinearSeries.radius p
⊢ liminf (fun i => 1 / ↑‖a ^ i‖₊ ^ (1 / ↑i)) atTop = FormalMultilinearSeries.radius p
[PROOFSTEP]
simp only [p.radius_eq_liminf, ← norm_toNNReal, norm_mkPiField]
[GOAL]
case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
h : ↑r ≤ FormalMultilinearSeries.radius p
⊢ liminf (fun i => 1 / ↑(Real.toNNReal ‖a ^ i‖) ^ (1 / ↑i)) atTop =
    liminf (fun n => 1 / ↑(Real.toNNReal ‖a ^ n‖ ^ (1 / ↑n))) atTop
[PROOFSTEP]
congr
[GOAL]
case h.e'_4.e_u
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
h : ↑r ≤ FormalMultilinearSeries.radius p
⊢ (fun i => 1 / ↑(Real.toNNReal ‖a ^ i‖) ^ (1 / ↑i)) = fun n => 1 / ↑(Real.toNNReal ‖a ^ n‖ ^ (1 / ↑n))
[PROOFSTEP]
ext n
[GOAL]
case h.e'_4.e_u.h
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
h : ↑r ≤ FormalMultilinearSeries.radius p
n : ℕ
⊢ 1 / ↑(Real.toNNReal ‖a ^ n‖) ^ (1 / ↑n) = 1 / ↑(Real.toNNReal ‖a ^ n‖ ^ (1 / ↑n))
[PROOFSTEP]
rw [norm_toNNReal, ENNReal.coe_rpow_def ‖a ^ n‖₊ (1 / n : ℝ), if_neg]
[GOAL]
case h.e'_4.e_u.h.hnc
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
h : ↑r ≤ FormalMultilinearSeries.radius p
n : ℕ
⊢ ¬(‖a ^ n‖₊ = 0 ∧ 1 / ↑n < 0)
[PROOFSTEP]
exact fun ha => (lt_self_iff_false _).mp (ha.2.trans_le (one_div_nonneg.mpr n.cast_nonneg : 0 ≤ (1 / n : ℝ)))
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
⊢ ↑r ≤ FormalMultilinearSeries.radius p
[PROOFSTEP]
have H₁ := (differentiableOn_inverse_one_sub_smul r_lt).hasFPowerSeriesOnBall r_pos
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
r : ℝ≥0
r_pos : 0 < r
r_lt : ↑r < (spectralRadius ℂ a)⁻¹
p : FormalMultilinearSeries ℂ ℂ A := fun n => ContinuousMultilinearMap.mkPiField ℂ (Fin n) (a ^ n)
H₁ :
  HasFPowerSeriesOnBall (fun z => Ring.inverse (1 - z • a)) (cauchyPowerSeries (fun z => Ring.inverse (1 - z • a)) 0 ↑r)
    0 ↑r
⊢ ↑r ≤ FormalMultilinearSeries.radius p
[PROOFSTEP]
exact ((hasFPowerSeriesOnBall_inverse_one_sub_smul ℂ a).exchange_radius H₁).r_le
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
⊢ Tendsto (fun n => ENNReal.ofReal (‖a ^ n‖ ^ (1 / ↑n))) atTop (𝓝 (spectralRadius ℂ a))
[PROOFSTEP]
convert pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius a using 1
[GOAL]
case h.e'_3
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
⊢ (fun n => ENNReal.ofReal (‖a ^ n‖ ^ (1 / ↑n))) = fun n => ↑‖a ^ n‖₊ ^ (1 / ↑n)
[PROOFSTEP]
ext1
[GOAL]
case h.e'_3.h
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
x✝ : ℕ
⊢ ENNReal.ofReal (‖a ^ x✝‖ ^ (1 / ↑x✝)) = ↑‖a ^ x✝‖₊ ^ (1 / ↑x✝)
[PROOFSTEP]
rw [← ofReal_rpow_of_nonneg (norm_nonneg _) _, ← coe_nnnorm, coe_nnreal_eq]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
x✝ : ℕ
⊢ 0 ≤ 1 / ↑x✝
[PROOFSTEP]
exact one_div_nonneg.mpr (by exact_mod_cast zero_le _)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
inst✝ : CompleteSpace A
a : A
x✝ : ℕ
⊢ 0 ≤ ↑x✝
[PROOFSTEP]
exact_mod_cast zero_le _
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
⊢ Set.Nonempty (spectrum ℂ a)
[PROOFSTEP]
rw [Set.nonempty_iff_ne_empty]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
⊢ spectrum ℂ a ≠ ∅
[PROOFSTEP]
by_contra h
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
⊢ False
[PROOFSTEP]
have H₀ : resolventSet ℂ a = Set.univ := by rwa [spectrum, Set.compl_empty_iff] at h 
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
⊢ resolventSet ℂ a = Set.univ
[PROOFSTEP]
rwa [spectrum, Set.compl_empty_iff] at h 
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
⊢ False
[PROOFSTEP]
have H₁ : Differentiable ℂ fun z : ℂ => resolvent a z := fun z =>
  (hasDerivAt_resolvent (H₀.symm ▸ Set.mem_univ z : z ∈ resolventSet ℂ a)).differentiableAt
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
⊢ False
[PROOFSTEP]
have H₂ := norm_resolvent_le_forall (𝕜 := ℂ) a
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
⊢ False
[PROOFSTEP]
have H₃ : ∀ z : ℂ, resolvent a z = resolvent a (0 : ℂ) :=
  by
  refine' fun z => H₁.apply_eq_apply_of_bounded (bounded_iff_forall_norm_le.mpr _) z 0
  rcases H₂ 1 zero_lt_one with ⟨R, _, hR⟩
  rcases(ProperSpace.isCompact_closedBall (0 : ℂ) R).exists_bound_of_continuousOn H₁.continuous.continuousOn with
    ⟨C, hC⟩
  use max C 1
  rintro _ ⟨w, rfl⟩
  refine' Or.elim (em (‖w‖ ≤ R)) (fun hw => _) fun hw => _
  · exact (hC w (mem_closedBall_zero_iff.mpr hw)).trans (le_max_left _ _)
  ·
    exact
      (hR w (not_le.mp hw).le).trans
        (le_max_right _ _)
          -- `resolvent a 0 = 0`, which is a contradiction because it isn't a unit.
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
⊢ ∀ (z : ℂ), resolvent a z = resolvent a 0
[PROOFSTEP]
refine' fun z => H₁.apply_eq_apply_of_bounded (bounded_iff_forall_norm_le.mpr _) z 0
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
z : ℂ
⊢ ∃ C, ∀ (x : A), (x ∈ Set.range fun z => resolvent a z) → ‖x‖ ≤ C
[PROOFSTEP]
rcases H₂ 1 zero_lt_one with ⟨R, _, hR⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
z : ℂ
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ 1
⊢ ∃ C, ∀ (x : A), (x ∈ Set.range fun z => resolvent a z) → ‖x‖ ≤ C
[PROOFSTEP]
rcases(ProperSpace.isCompact_closedBall (0 : ℂ) R).exists_bound_of_continuousOn H₁.continuous.continuousOn with ⟨C, hC⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
z : ℂ
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ 1
C : ℝ
hC : ∀ (x : ℂ), x ∈ Metric.closedBall 0 R → ‖resolvent a x‖ ≤ C
⊢ ∃ C, ∀ (x : A), (x ∈ Set.range fun z => resolvent a z) → ‖x‖ ≤ C
[PROOFSTEP]
use max C 1
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
z : ℂ
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ 1
C : ℝ
hC : ∀ (x : ℂ), x ∈ Metric.closedBall 0 R → ‖resolvent a x‖ ≤ C
⊢ ∀ (x : A), (x ∈ Set.range fun z => resolvent a z) → ‖x‖ ≤ max C 1
[PROOFSTEP]
rintro _ ⟨w, rfl⟩
[GOAL]
case h.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
z : ℂ
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ 1
C : ℝ
hC : ∀ (x : ℂ), x ∈ Metric.closedBall 0 R → ‖resolvent a x‖ ≤ C
w : ℂ
⊢ ‖(fun z => resolvent a z) w‖ ≤ max C 1
[PROOFSTEP]
refine' Or.elim (em (‖w‖ ≤ R)) (fun hw => _) fun hw => _
[GOAL]
case h.intro.refine'_1
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
z : ℂ
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ 1
C : ℝ
hC : ∀ (x : ℂ), x ∈ Metric.closedBall 0 R → ‖resolvent a x‖ ≤ C
w : ℂ
hw : ‖w‖ ≤ R
⊢ ‖(fun z => resolvent a z) w‖ ≤ max C 1
[PROOFSTEP]
exact (hC w (mem_closedBall_zero_iff.mpr hw)).trans (le_max_left _ _)
[GOAL]
case h.intro.refine'_2
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
z : ℂ
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ 1
C : ℝ
hC : ∀ (x : ℂ), x ∈ Metric.closedBall 0 R → ‖resolvent a x‖ ≤ C
w : ℂ
hw : ¬‖w‖ ≤ R
⊢ ‖(fun z => resolvent a z) w‖ ≤ max C 1
[PROOFSTEP]
exact
  (hR w (not_le.mp hw).le).trans
    (le_max_right _ _)
      -- `resolvent a 0 = 0`, which is a contradiction because it isn't a unit.
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
H₃ : ∀ (z : ℂ), resolvent a z = resolvent a 0
⊢ False
[PROOFSTEP]
have H₅ : resolvent a (0 : ℂ) = 0 :=
  by
  refine' norm_eq_zero.mp (le_antisymm (le_of_forall_pos_le_add fun ε hε => _) (norm_nonneg _))
  rcases H₂ ε hε with ⟨R, _, hR⟩
  simpa only [H₃ R] using
    (zero_add ε).symm.subst
      (hR R (by simp [le_abs_self]))
        -- `not_isUnit_zero` is where we need `Nontrivial A`, it is unavoidable.
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
H₃ : ∀ (z : ℂ), resolvent a z = resolvent a 0
⊢ resolvent a 0 = 0
[PROOFSTEP]
refine' norm_eq_zero.mp (le_antisymm (le_of_forall_pos_le_add fun ε hε => _) (norm_nonneg _))
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
H₃ : ∀ (z : ℂ), resolvent a z = resolvent a 0
ε : ℝ
hε : 0 < ε
⊢ ‖resolvent a 0‖ ≤ 0 + ε
[PROOFSTEP]
rcases H₂ ε hε with ⟨R, _, hR⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
H₃ : ∀ (z : ℂ), resolvent a z = resolvent a 0
ε : ℝ
hε : 0 < ε
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
⊢ ‖resolvent a 0‖ ≤ 0 + ε
[PROOFSTEP]
simpa only [H₃ R] using
  (zero_add ε).symm.subst
    (hR R (by simp [le_abs_self]))
      -- `not_isUnit_zero` is where we need `Nontrivial A`, it is unavoidable.
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
H₃ : ∀ (z : ℂ), resolvent a z = resolvent a 0
ε : ℝ
hε : 0 < ε
R : ℝ
left✝ : R > 0
hR : ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
⊢ R ≤ ‖↑R‖
[PROOFSTEP]
simp [le_abs_self]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
h : spectrum ℂ a = ∅
H₀ : resolventSet ℂ a = Set.univ
H₁ : Differentiable ℂ fun z => resolvent a z
H₂ : ∀ (ε : ℝ), ε > 0 → ∃ R, R > 0 ∧ ∀ (z : ℂ), R ≤ ‖z‖ → ‖resolvent a z‖ ≤ ε
H₃ : ∀ (z : ℂ), resolvent a z = resolvent a 0
H₅ : resolvent a 0 = 0
⊢ False
[PROOFSTEP]
exact not_isUnit_zero (H₅.subst (isUnit_resolvent.mp (mem_resolventSet_iff.mp (H₀.symm ▸ Set.mem_univ 0))))
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NormedRing A
inst✝² : NormedAlgebra ℂ A
inst✝¹ : CompleteSpace A
inst✝ : Nontrivial A
a : A
n : ℕ
⊢ spectrum ℂ (a ^ n) = (fun x => x ^ n) '' spectrum ℂ a
[PROOFSTEP]
simpa only [aeval_X_pow, eval_pow, eval_X] using map_polynomial_aeval a (X ^ n)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝¹ : NormedRing A
inst✝ : NormedAlgebra ℂ A
hA : ∀ {a : A}, IsUnit a ↔ a ≠ 0
a : A
z : ℂ
h : z ∈ σ a
⊢ ↑(algebraMap ℂ A) z = a
[PROOFSTEP]
rwa [mem_iff, hA, Classical.not_not, sub_eq_zero] at h 
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra ℂ A
hA : ∀ {a : A}, IsUnit a ↔ a ≠ 0
inst✝ : CompleteSpace A
nt : Nontrivial A :=
  {
    exists_pair_ne :=
      Exists.intro 1
        (Exists.intro 0
          (Iff.mp hA (Exists.intro { val := 1, inv := 1, val_inv := mul_one 1, inv_val := mul_one 1 } rfl))) }
src✝ : ℂ →ₐ[ℂ] A := Algebra.ofId ℂ A
z : ℂ
⊢ (fun a => Set.Nonempty.some (_ : Set.Nonempty (σ a))) (↑(algebraMap ℂ A) z) = z
[PROOFSTEP]
simpa only [@scalar_eq _ _ _ _ _ nt _] using (@spectrum.nonempty _ _ _ _ nt <| algebraMap ℂ A z).some_mem
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
⊢ exp 𝕜 z ∈ spectrum 𝕜 (exp 𝕜 a)
[PROOFSTEP]
have hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑ₐ z) * ↑ₐ (exp 𝕜 z) := by
  rw [algebraMap_exp_comm z, ← exp_add_of_commute (Algebra.commutes z (a - ↑ₐ z)).symm, sub_add_cancel]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
⊢ exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
[PROOFSTEP]
rw [algebraMap_exp_comm z, ← exp_add_of_commute (Algebra.commutes z (a - ↑ₐ z)).symm, sub_add_cancel]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
⊢ exp 𝕜 z ∈ spectrum 𝕜 (exp 𝕜 a)
[PROOFSTEP]
let b := ∑' n : ℕ, ((n + 1).factorial⁻¹ : 𝕜) • (a - ↑ₐ z) ^ n
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
⊢ exp 𝕜 z ∈ spectrum 𝕜 (exp 𝕜 a)
[PROOFSTEP]
have hb : Summable fun n : ℕ => ((n + 1).factorial⁻¹ : 𝕜) • (a - ↑ₐ z) ^ n :=
  by
  refine' summable_of_norm_bounded_eventually _ (Real.summable_pow_div_factorial ‖a - ↑ₐ z‖) _
  filter_upwards [Filter.eventually_cofinite_ne 0] with n hn
  rw [norm_smul, mul_comm, norm_inv, IsROrC.norm_natCast, ← div_eq_mul_inv]
  exact
    div_le_div (pow_nonneg (norm_nonneg _) n) (norm_pow_le' (a - ↑ₐ z) (zero_lt_iff.mpr hn))
      (by exact_mod_cast Nat.factorial_pos n) (by exact_mod_cast Nat.factorial_le (lt_add_one n).le)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
⊢ Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
[PROOFSTEP]
refine' summable_of_norm_bounded_eventually _ (Real.summable_pow_div_factorial ‖a - ↑ₐ z‖) _
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
⊢ ∀ᶠ (i : ℕ) in Filter.cofinite, ‖(↑(Nat.factorial (i + 1)))⁻¹ • (a - ↑↑ₐ z) ^ i‖ ≤ ‖a - ↑↑ₐ z‖ ^ i / ↑(Nat.factorial i)
[PROOFSTEP]
filter_upwards [Filter.eventually_cofinite_ne 0] with n hn
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
n : ℕ
hn : n ≠ 0
⊢ ‖(↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n‖ ≤ ‖a - ↑↑ₐ z‖ ^ n / ↑(Nat.factorial n)
[PROOFSTEP]
rw [norm_smul, mul_comm, norm_inv, IsROrC.norm_natCast, ← div_eq_mul_inv]
[GOAL]
case h
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
n : ℕ
hn : n ≠ 0
⊢ ‖(a - ↑↑ₐ z) ^ n‖ / ↑(Nat.factorial (n + 1)) ≤ ‖a - ↑↑ₐ z‖ ^ n / ↑(Nat.factorial n)
[PROOFSTEP]
exact
  div_le_div (pow_nonneg (norm_nonneg _) n) (norm_pow_le' (a - ↑ₐ z) (zero_lt_iff.mpr hn))
    (by exact_mod_cast Nat.factorial_pos n) (by exact_mod_cast Nat.factorial_le (lt_add_one n).le)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
n : ℕ
hn : n ≠ 0
⊢ 0 < ↑(Nat.factorial n)
[PROOFSTEP]
exact_mod_cast Nat.factorial_pos n
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
n : ℕ
hn : n ≠ 0
⊢ ↑(Nat.factorial n) ≤ ↑(Nat.factorial (n + 1))
[PROOFSTEP]
exact_mod_cast Nat.factorial_le (lt_add_one n).le
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
⊢ exp 𝕜 z ∈ spectrum 𝕜 (exp 𝕜 a)
[PROOFSTEP]
have h₀ : (∑' n : ℕ, ((n + 1).factorial⁻¹ : 𝕜) • (a - ↑ₐ z) ^ (n + 1)) = (a - ↑ₐ z) * b := by
  simpa only [mul_smul_comm, pow_succ] using hb.tsum_mul_left (a - ↑ₐ z)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
⊢ ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
[PROOFSTEP]
simpa only [mul_smul_comm, pow_succ] using hb.tsum_mul_left (a - ↑ₐ z)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
⊢ exp 𝕜 z ∈ spectrum 𝕜 (exp 𝕜 a)
[PROOFSTEP]
have h₁ : (∑' n : ℕ, ((n + 1).factorial⁻¹ : 𝕜) • (a - ↑ₐ z) ^ (n + 1)) = b * (a - ↑ₐ z) := by
  simpa only [pow_succ', Algebra.smul_mul_assoc] using hb.tsum_mul_right (a - ↑ₐ z)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
⊢ ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
[PROOFSTEP]
simpa only [pow_succ', Algebra.smul_mul_assoc] using hb.tsum_mul_right (a - ↑ₐ z)
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
⊢ exp 𝕜 z ∈ spectrum 𝕜 (exp 𝕜 a)
[PROOFSTEP]
have h₃ : exp 𝕜 (a - ↑ₐ z) = 1 + (a - ↑ₐ z) * b := by
  rw [exp_eq_tsum]
  convert tsum_eq_zero_add (expSeries_summable' (𝕂 := 𝕜) (a - ↑ₐ z))
  simp only [Nat.factorial_zero, Nat.cast_one, inv_one, pow_zero, one_smul]
  exact h₀.symm
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
⊢ exp 𝕜 (a - ↑↑ₐ z) = 1 + (a - ↑↑ₐ z) * b
[PROOFSTEP]
rw [exp_eq_tsum]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
⊢ (fun x => ∑' (n : ℕ), (↑(Nat.factorial n))⁻¹ • x ^ n) (a - ↑↑ₐ z) = 1 + (a - ↑↑ₐ z) * b
[PROOFSTEP]
convert tsum_eq_zero_add (expSeries_summable' (𝕂 := 𝕜) (a - ↑ₐ z))
[GOAL]
case h.e'_3.h.e'_5
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
⊢ 1 = (↑(Nat.factorial 0))⁻¹ • (a - ↑↑ₐ z) ^ 0
case h.e'_3.h.e'_6
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
⊢ (a - ↑↑ₐ z) * b = ∑' (b : ℕ), (↑(Nat.factorial (b + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (b + 1)
[PROOFSTEP]
simp only [Nat.factorial_zero, Nat.cast_one, inv_one, pow_zero, one_smul]
[GOAL]
case h.e'_3.h.e'_6
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
⊢ (a - ↑↑ₐ z) * b = ∑' (b : ℕ), (↑(Nat.factorial (b + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (b + 1)
[PROOFSTEP]
exact h₀.symm
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
h₃ : exp 𝕜 (a - ↑↑ₐ z) = 1 + (a - ↑↑ₐ z) * b
⊢ exp 𝕜 z ∈ spectrum 𝕜 (exp 𝕜 a)
[PROOFSTEP]
rw [spectrum.mem_iff, IsUnit.sub_iff, ← one_mul (↑ₐ (exp 𝕜 z)), hexpmul, ← _root_.sub_mul,
  Commute.isUnit_mul_iff (Algebra.commutes (exp 𝕜 z) (exp 𝕜 (a - ↑ₐ z) - 1)).symm, sub_eq_iff_eq_add'.mpr h₃,
  Commute.isUnit_mul_iff (h₀ ▸ h₁ : (a - ↑ₐ z) * b = b * (a - ↑ₐ z))]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedRing A
inst✝¹ : NormedAlgebra 𝕜 A
inst✝ : CompleteSpace A
a : A
z : 𝕜
hz : z ∈ spectrum 𝕜 a
hexpmul : exp 𝕜 a = exp 𝕜 (a - ↑↑ₐ z) * ↑↑ₐ (exp 𝕜 z)
b : A := ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
hb : Summable fun n => (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ n
h₀ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = (a - ↑↑ₐ z) * b
h₁ : ∑' (n : ℕ), (↑(Nat.factorial (n + 1)))⁻¹ • (a - ↑↑ₐ z) ^ (n + 1) = b * (a - ↑↑ₐ z)
h₃ : exp 𝕜 (a - ↑↑ₐ z) = 1 + (a - ↑↑ₐ z) * b
⊢ ¬((IsUnit (a - ↑↑ₐ z) ∧ IsUnit b) ∧ IsUnit (↑↑ₐ (exp 𝕜 z)))
[PROOFSTEP]
exact not_and_of_not_left _ (not_and_of_not_left _ ((not_iff_not.mpr IsUnit.sub_iff).mp hz))
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedRing A
inst✝² : NormedAlgebra 𝕜 A
inst✝¹ : CompleteSpace A
inst✝ : NormOneClass A
φ : A →ₐ[𝕜] 𝕜
x✝¹ : ℝ
x✝ : x✝¹ ≥ 0
h : ∀ (x : A), ‖↑(toContinuousLinearMap φ) x‖ ≤ x✝¹ * ‖x‖
⊢ 1 ≤ x✝¹
[PROOFSTEP]
simpa only [coe_toContinuousLinearMap, map_one, norm_one, mul_one] using h 1
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : CompleteSpace A
inst✝ : NormedAlgebra 𝕜 A
f : A →ₐ[𝕜] 𝕜
⊢ AlgHom.toContinuousLinearMap f ∈ characterSpace 𝕜 A
[PROOFSTEP]
rw [eq_set_map_one_map_mul]
[GOAL]
𝕜 : Type u_1
A : Type u_2
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedRing A
inst✝¹ : CompleteSpace A
inst✝ : NormedAlgebra 𝕜 A
f : A →ₐ[𝕜] 𝕜
⊢ AlgHom.toContinuousLinearMap f ∈ {φ | ↑φ 1 = 1 ∧ ∀ (x y : A), ↑φ (x * y) = ↑φ x * ↑φ y}
[PROOFSTEP]
exact ⟨map_one f, map_mul f⟩
