Theorem: NormedRing.inverse_one_sub_norm
File: Mathlib/Analysis/NormedSpace/Units.lean

tactic: simp only [IsBigO, IsBigOWith, Metric.eventually_nhds_iff]
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
⊢ (fun t => inverse (1 - t)) =O[𝓝 0] fun _t => 1

tactic: refine ⟨‖(1 : R)‖ + 1, (2 : ℝ)⁻¹, by norm_num, fun t ht ↦ ?_⟩
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
⊢ ∃ c ε, ε > 0 ∧ ∀ ⦃y : R⦄, dist y 0 < ε → ‖inverse (1 - y)‖ ≤ c * ‖1‖

tactic: rw [dist_zero_right] at ht
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : dist t 0 < 2⁻¹
⊢ ‖inverse (1 - t)‖ ≤ (‖1‖ + 1) * ‖1‖

tactic: have ht' : ‖t‖ < 1 := by
  have : (2 : ℝ)⁻¹ < 1 := by cancel_denoms
  linarith
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
⊢ ‖inverse (1 - t)‖ ≤ (‖1‖ + 1) * ‖1‖

tactic: simp only [inverse_one_sub t ht', norm_one, mul_one, Set.mem_setOf_eq]
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
⊢ ‖inverse (1 - t)‖ ≤ (‖1‖ + 1) * ‖1‖

tactic: change ‖∑' n : ℕ, t ^ n‖ ≤ _
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
⊢ ‖↑(Units.oneSub t ht')⁻¹‖ ≤ ‖1‖ + 1

tactic: have := NormedRing.tsum_geometric_of_norm_lt_1 t ht'
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
⊢ ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ + 1

tactic: have : (1 - ‖t‖)⁻¹ ≤ 2 := by
  rw [← inv_inv (2 : ℝ)]
  refine' inv_le_inv_of_le (by norm_num) _
  have : (2 : ℝ)⁻¹ + (2 : ℝ)⁻¹ = 1 := by ring
  linarith
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
⊢ ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ + 1

tactic: linarith
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this✝ : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
this : (1 - ‖t‖)⁻¹ ≤ 2
⊢ ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ + 1

tactic: norm_num
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
⊢ 2⁻¹ > 0

tactic: have : (2 : ℝ)⁻¹ < 1 := by cancel_denoms
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
⊢ ‖t‖ < 1

tactic: linarith
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
this : 2⁻¹ < 1
⊢ ‖t‖ < 1

tactic: cancel_denoms
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
⊢ 2⁻¹ < 1

tactic: rw [← inv_inv (2 : ℝ)]
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
⊢ (1 - ‖t‖)⁻¹ ≤ 2

tactic: refine' inv_le_inv_of_le (by norm_num) _
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
⊢ (1 - ‖t‖)⁻¹ ≤ 2⁻¹⁻¹

tactic: have : (2 : ℝ)⁻¹ + (2 : ℝ)⁻¹ = 1 := by ring
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
⊢ 2⁻¹ ≤ 1 - ‖t‖

tactic: linarith
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this✝ : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
this : 2⁻¹ + 2⁻¹ = 1
⊢ 2⁻¹ ≤ 1 - ‖t‖

tactic: norm_num
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
⊢ 0 < 2⁻¹

tactic: ring
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
t : R
ht : ‖t‖ < 2⁻¹
ht' : ‖t‖ < 1
this : ‖∑' (n : ℕ), t ^ n‖ ≤ ‖1‖ - 1 + (1 - ‖t‖)⁻¹
⊢ 2⁻¹ + 2⁻¹ = 1