analysis.normed_space.units
⟷
Mathlib.Analysis.NormedSpace.Units
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -93,7 +93,7 @@ protected theorem isOpen : IsOpen {x : R | IsUnit x} :=
rintro x' ⟨x, rfl⟩
refine' ⟨‖(↑x⁻¹ : R)‖⁻¹, _root_.inv_pos.mpr (Units.norm_pos x⁻¹), _⟩
intro y hy
- rw [Metric.mem_ball, dist_eq_norm] at hy
+ rw [Metric.mem_ball, dist_eq_norm] at hy
exact (x.unit_of_nearby y hy).IsUnit
#align units.is_open Units.isOpen
-/
@@ -114,7 +114,7 @@ namespace nonunits
theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
Set.subset_compl_comm.mp fun x hx => by
simpa [sub_sub_self, Units.val_oneSub] using
- (Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx )).IsUnit
+ (Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx)).IsUnit
#align nonunits.subset_compl_ball nonunits.subset_compl_ball
-/
@@ -148,7 +148,7 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
have hinv : 0 < ‖(↑x⁻¹ : R)‖⁻¹ := by cancel_denoms
use‖(↑x⁻¹ : R)‖⁻¹, hinv
intro t ht
- simp only [mem_ball, dist_zero_right] at ht
+ simp only [mem_ball, dist_zero_right] at ht
have ht' : ‖-↑x⁻¹ * t‖ < 1 :=
by
refine' lt_of_le_of_lt (norm_mul_le _ _) _
@@ -157,8 +157,8 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
cancel_denoms
have hright := inverse_one_sub (-↑x⁻¹ * t) ht'
have hleft := inverse_unit (x.add t ht)
- simp only [neg_mul, sub_neg_eq_add] at hright
- simp only [Units.val_add] at hleft
+ simp only [neg_mul, sub_neg_eq_add] at hright
+ simp only [Units.val_add] at hleft
simp [hleft, hright, Units.add]
#align normed_ring.inverse_add NormedRing.inverse_add
-/
@@ -170,7 +170,7 @@ theorem inverse_one_sub_nth_order (n : ℕ) :
simp only [eventually_iff, Metric.mem_nhds_iff]
use 1, by norm_num
intro t ht
- simp only [mem_ball, dist_zero_right] at ht
+ simp only [mem_ball, dist_zero_right] at ht
simp only [inverse_one_sub t ht, Set.mem_setOf_eq]
have h : 1 = ((range n).Sum fun i => t ^ i) * Units.oneSub t ht + t ^ n :=
by
@@ -205,7 +205,7 @@ theorem inverse_add_nth_order (x : Rˣ) (n : ℕ) :
simp only [neg_mul, sub_neg_eq_add]
intro t h1 h2
have h := congr_arg (fun a : R => a * ↑x⁻¹) h1
- dsimp at h
+ dsimp at h
convert h
rw [add_mul, mul_assoc]
simp [h2.symm]
@@ -218,7 +218,7 @@ theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t
simp only [is_O, is_O_with, eventually_iff, Metric.mem_nhds_iff]
refine' ⟨‖(1 : R)‖ + 1, (2 : ℝ)⁻¹, by norm_num, _⟩
intro t ht
- simp only [ball, dist_zero_right, Set.mem_setOf_eq] at ht
+ simp only [ball, dist_zero_right, Set.mem_setOf_eq] at ht
have ht' : ‖t‖ < 1 := by
have : (2 : ℝ)⁻¹ < 1 := by cancel_denoms
linarith
@@ -248,7 +248,7 @@ theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0
refine' (inverse_add x).mp ((hzero.eventually hC).mp (eventually_of_forall _))
intro t bound iden
rw [iden]
- simp at bound
+ simp at bound
have hmul := norm_mul_le (inverse (1 + ↑x⁻¹ * t)) ↑x⁻¹
nlinarith [norm_nonneg (↑x⁻¹ : R)]
#align normed_ring.inverse_add_norm NormedRing.inverse_add_norm
@@ -278,7 +278,7 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
simp
refine' h.mp (hC.mp (eventually_of_forall _))
intro t _ hLHS
- simp only [neg_mul] at hLHS
+ simp only [neg_mul] at hLHS
rw [hLHS]
refine' le_trans (norm_mul_le _ _) _
have h' : ‖(-(↑x⁻¹ * t)) ^ n‖ ≤ ‖(↑x⁻¹ : R)‖ ^ n * ‖t‖ ^ n :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -224,7 +224,7 @@ theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t
linarith
simp only [inverse_one_sub t ht', norm_one, mul_one, Set.mem_setOf_eq]
change ‖∑' n : ℕ, t ^ n‖ ≤ _
- have := NormedRing.tsum_geometric_of_norm_lt_1 t ht'
+ have := NormedRing.tsum_geometric_of_norm_lt_one t ht'
have : (1 - ‖t‖)⁻¹ ≤ 2 := by
rw [← inv_inv (2 : ℝ)]
refine' inv_le_inv_of_le (by norm_num) _
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -288,7 +288,7 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
_ = ‖↑x⁻¹ * t‖ ^ n := by rw [norm_neg]
_ ≤ (‖(↑x⁻¹ : R)‖ * ‖t‖) ^ n := _
_ = ‖(↑x⁻¹ : R)‖ ^ n * ‖t‖ ^ n := mul_pow _ _ n
- exact pow_le_pow_of_le_left (norm_nonneg _) (norm_mul_le (↑x⁻¹) t) n
+ exact pow_le_pow_left (norm_nonneg _) (norm_mul_le (↑x⁻¹) t) n
have h'' : 0 ≤ ‖(↑x⁻¹ : R)‖ ^ n * ‖t‖ ^ n := by
refine' mul_nonneg _ _ <;> exact pow_nonneg (norm_nonneg _) n
nlinarith [norm_nonneg (inverse (↑x + t))]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2020 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth
-/
-import Mathbin.Topology.Algebra.Ring.Ideal
-import Mathbin.Analysis.SpecificLimits.Normed
+import Topology.Algebra.Ring.Ideal
+import Analysis.SpecificLimits.Normed
#align_import analysis.normed_space.units from "leanprover-community/mathlib"@"6cf5900728239efa287df7761ec2a1ac9cf39b29"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -329,7 +329,7 @@ theorem inverse_continuousAt (x : Rˣ) : ContinuousAt inverse (x : R) :=
by
refine' tendsto_zero_iff_norm_tendsto_zero.mpr _
exact tendsto_iff_norm_tendsto_zero.mp tendsto_id
- rw [ContinuousAt, tendsto_iff_norm_tendsto_zero, inverse_unit]
+ rw [ContinuousAt, tendsto_iff_norm_sub_tendsto_zero, inverse_unit]
simpa [(· ∘ ·)] using h_is_o.norm_left.tendsto_div_nhds_zero.comp h_lim
#align normed_ring.inverse_continuous_at NormedRing.inverse_continuousAt
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -113,7 +113,7 @@ namespace nonunits
`1` centered at `1 : R`. -/
theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
Set.subset_compl_comm.mp fun x hx => by
- simpa [sub_sub_self, Units.oneSub_val] using
+ simpa [sub_sub_self, Units.val_oneSub] using
(Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx )).IsUnit
#align nonunits.subset_compl_ball nonunits.subset_compl_ball
-/
@@ -135,7 +135,7 @@ open Asymptotics Filter Metric Finset Ring
#print NormedRing.inverse_one_sub /-
theorem inverse_one_sub (t : R) (h : ‖t‖ < 1) : inverse (1 - t) = ↑(Units.oneSub t h)⁻¹ := by
- rw [← inverse_unit (Units.oneSub t h), Units.oneSub_val]
+ rw [← inverse_unit (Units.oneSub t h), Units.val_oneSub]
#align normed_ring.inverse_one_sub NormedRing.inverse_one_sub
-/
@@ -158,7 +158,7 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
have hright := inverse_one_sub (-↑x⁻¹ * t) ht'
have hleft := inverse_unit (x.add t ht)
simp only [neg_mul, sub_neg_eq_add] at hright
- simp only [Units.add_val] at hleft
+ simp only [Units.val_add] at hleft
simp [hleft, hright, Units.add]
#align normed_ring.inverse_add NormedRing.inverse_add
-/
@@ -174,14 +174,14 @@ theorem inverse_one_sub_nth_order (n : ℕ) :
simp only [inverse_one_sub t ht, Set.mem_setOf_eq]
have h : 1 = ((range n).Sum fun i => t ^ i) * Units.oneSub t ht + t ^ n :=
by
- simp only [Units.oneSub_val]
+ simp only [Units.val_oneSub]
rw [geom_sum_mul_neg]
simp
rw [← one_mul ↑(Units.oneSub t ht)⁻¹, h, add_mul]
congr
· rw [mul_assoc, (Units.oneSub t ht).mul_inv]
simp
- · simp only [Units.oneSub_val]
+ · simp only [Units.val_oneSub]
rw [← add_mul, geom_sum_mul_neg]
simp
#align normed_ring.inverse_one_sub_nth_order NormedRing.inverse_one_sub_nth_order
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -146,7 +146,7 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
nontriviality R
rw [eventually_iff, Metric.mem_nhds_iff]
have hinv : 0 < ‖(↑x⁻¹ : R)‖⁻¹ := by cancel_denoms
- use ‖(↑x⁻¹ : R)‖⁻¹, hinv
+ use‖(↑x⁻¹ : R)‖⁻¹, hinv
intro t ht
simp only [mem_ball, dist_zero_right] at ht
have ht' : ‖-↑x⁻¹ * t‖ < 1 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2020 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth
-
-! This file was ported from Lean 3 source module analysis.normed_space.units
-! leanprover-community/mathlib commit 6cf5900728239efa287df7761ec2a1ac9cf39b29
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Algebra.Ring.Ideal
import Mathbin.Analysis.SpecificLimits.Normed
+#align_import analysis.normed_space.units from "leanprover-community/mathlib"@"6cf5900728239efa287df7761ec2a1ac9cf39b29"
+
/-!
# The group of units of a complete normed ring
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -45,6 +45,7 @@ variable {R : Type _} [NormedRing R] [CompleteSpace R]
namespace Units
+#print Units.oneSub /-
/-- In a complete normed ring, a perturbation of `1` by an element `t` of distance less than `1`
from `1` is a unit. Here we construct its `units` structure. -/
@[simps coe]
@@ -54,7 +55,9 @@ def oneSub (t : R) (h : ‖t‖ < 1) : Rˣ where
val_inv := mul_neg_geom_series t h
inv_val := geom_series_mul_neg t h
#align units.one_sub Units.oneSub
+-/
+#print Units.add /-
/-- In a complete normed ring, a perturbation of a unit `x` by an element `t` of distance less than
`‖x⁻¹‖⁻¹` from `x` is a unit. Here we construct its `units` structure. -/
@[simps coe]
@@ -73,14 +76,18 @@ def add (x : Rˣ) (t : R) (h : ‖t‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
_ = 1 := mul_inv_cancel (ne_of_gt hpos)))
(x + t) (by simp [mul_add]) _ rfl
#align units.add Units.add
+-/
+#print Units.ofNearby /-
/-- In a complete normed ring, an element `y` of distance less than `‖x⁻¹‖⁻¹` from `x` is a unit.
Here we construct its `units` structure. -/
@[simps coe]
def ofNearby (x : Rˣ) (y : R) (h : ‖y - x‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
Units.copy (x.add (y - x : R) h) y (by simp) _ rfl
#align units.unit_of_nearby Units.ofNearby
+-/
+#print Units.isOpen /-
/-- The group of units of a complete normed ring is an open subset of the ring. -/
protected theorem isOpen : IsOpen {x : R | IsUnit x} :=
by
@@ -92,15 +99,19 @@ protected theorem isOpen : IsOpen {x : R | IsUnit x} :=
rw [Metric.mem_ball, dist_eq_norm] at hy
exact (x.unit_of_nearby y hy).IsUnit
#align units.is_open Units.isOpen
+-/
+#print Units.nhds /-
protected theorem nhds (x : Rˣ) : {x : R | IsUnit x} ∈ 𝓝 (x : R) :=
IsOpen.mem_nhds Units.isOpen x.IsUnit
#align units.nhds Units.nhds
+-/
end Units
namespace nonunits
+#print nonunits.subset_compl_ball /-
/-- The `nonunits` in a complete normed ring are contained in the complement of the ball of radius
`1` centered at `1 : R`. -/
theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
@@ -108,11 +119,14 @@ theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
simpa [sub_sub_self, Units.oneSub_val] using
(Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx )).IsUnit
#align nonunits.subset_compl_ball nonunits.subset_compl_ball
+-/
+#print nonunits.isClosed /-
-- The `nonunits` in a complete normed ring are a closed set
protected theorem isClosed : IsClosed (nonunits R) :=
Units.isOpen.isClosed_compl
#align nonunits.is_closed nonunits.isClosed
+-/
end nonunits
@@ -122,10 +136,13 @@ open scoped Classical BigOperators
open Asymptotics Filter Metric Finset Ring
+#print NormedRing.inverse_one_sub /-
theorem inverse_one_sub (t : R) (h : ‖t‖ < 1) : inverse (1 - t) = ↑(Units.oneSub t h)⁻¹ := by
rw [← inverse_unit (Units.oneSub t h), Units.oneSub_val]
#align normed_ring.inverse_one_sub NormedRing.inverse_one_sub
+-/
+#print NormedRing.inverse_add /-
/-- The formula `inverse (x + t) = inverse (1 + x⁻¹ * t) * x⁻¹` holds for `t` sufficiently small. -/
theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inverse (1 + ↑x⁻¹ * t) * ↑x⁻¹ :=
by
@@ -147,7 +164,9 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
simp only [Units.add_val] at hleft
simp [hleft, hright, Units.add]
#align normed_ring.inverse_add NormedRing.inverse_add
+-/
+#print NormedRing.inverse_one_sub_nth_order /-
theorem inverse_one_sub_nth_order (n : ℕ) :
∀ᶠ t in 𝓝 0, inverse ((1 : R) - t) = ∑ i in range n, t ^ i + t ^ n * inverse (1 - t) :=
by
@@ -169,7 +188,9 @@ theorem inverse_one_sub_nth_order (n : ℕ) :
rw [← add_mul, geom_sum_mul_neg]
simp
#align normed_ring.inverse_one_sub_nth_order NormedRing.inverse_one_sub_nth_order
+-/
+#print NormedRing.inverse_add_nth_order /-
/-- The formula
`inverse (x + t) = (∑ i in range n, (- x⁻¹ * t) ^ i) * x⁻¹ + (- x⁻¹ * t) ^ n * inverse (x + t)`
holds for `t` sufficiently small. -/
@@ -192,7 +213,9 @@ theorem inverse_add_nth_order (x : Rˣ) (n : ℕ) :
rw [add_mul, mul_assoc]
simp [h2.symm]
#align normed_ring.inverse_add_nth_order NormedRing.inverse_add_nth_order
+-/
+#print NormedRing.inverse_one_sub_norm /-
theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t => 1 : R → ℝ) :=
by
simp only [is_O, is_O_with, eventually_iff, Metric.mem_nhds_iff]
@@ -212,7 +235,9 @@ theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t
linarith
linarith
#align normed_ring.inverse_one_sub_norm NormedRing.inverse_one_sub_norm
+-/
+#print NormedRing.inverse_add_norm /-
/-- The function `λ t, inverse (x + t)` is O(1) as `t → 0`. -/
theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0] fun t => (1 : ℝ) :=
by
@@ -230,7 +255,9 @@ theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0
have hmul := norm_mul_le (inverse (1 + ↑x⁻¹ * t)) ↑x⁻¹
nlinarith [norm_nonneg (↑x⁻¹ : R)]
#align normed_ring.inverse_add_norm NormedRing.inverse_add_norm
+-/
+#print NormedRing.inverse_add_norm_diff_nth_order /-
/-- The function
`λ t, inverse (x + t) - (∑ i in range n, (- x⁻¹ * t) ^ i) * x⁻¹`
is `O(t ^ n)` as `t → 0`. -/
@@ -269,13 +296,17 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
refine' mul_nonneg _ _ <;> exact pow_nonneg (norm_nonneg _) n
nlinarith [norm_nonneg (inverse (↑x + t))]
#align normed_ring.inverse_add_norm_diff_nth_order NormedRing.inverse_add_norm_diff_nth_order
+-/
+#print NormedRing.inverse_add_norm_diff_first_order /-
/-- The function `λ t, inverse (x + t) - x⁻¹` is `O(t)` as `t → 0`. -/
theorem inverse_add_norm_diff_first_order (x : Rˣ) :
(fun t : R => inverse (↑x + t) - ↑x⁻¹) =O[𝓝 0] fun t => ‖t‖ := by
simpa using inverse_add_norm_diff_nth_order x 1
#align normed_ring.inverse_add_norm_diff_first_order NormedRing.inverse_add_norm_diff_first_order
+-/
+#print NormedRing.inverse_add_norm_diff_second_order /-
/-- The function
`λ t, inverse (x + t) - x⁻¹ + x⁻¹ * t * x⁻¹`
is `O(t ^ 2)` as `t → 0`. -/
@@ -288,7 +319,9 @@ theorem inverse_add_norm_diff_second_order (x : Rˣ) :
one_ne_zero, pow_zero, add_mul, pow_one, one_mul, neg_mul, sub_add_eq_sub_sub_swap,
sub_neg_eq_add]
#align normed_ring.inverse_add_norm_diff_second_order NormedRing.inverse_add_norm_diff_second_order
+-/
+#print NormedRing.inverse_continuousAt /-
/-- The function `inverse` is continuous at each unit of `R`. -/
theorem inverse_continuousAt (x : Rˣ) : ContinuousAt inverse (x : R) :=
by
@@ -302,6 +335,7 @@ theorem inverse_continuousAt (x : Rˣ) : ContinuousAt inverse (x : R) :=
rw [ContinuousAt, tendsto_iff_norm_tendsto_zero, inverse_unit]
simpa [(· ∘ ·)] using h_is_o.norm_left.tendsto_div_nhds_zero.comp h_lim
#align normed_ring.inverse_continuous_at NormedRing.inverse_continuousAt
+-/
end NormedRing
@@ -311,6 +345,7 @@ open MulOpposite Filter NormedRing
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Units.isOpenMap_val /-
/-- In a normed ring, the coercion from `Rˣ` (equipped with the induced topology from the
embedding in `R × R`) to `R` is an open map. -/
theorem isOpenMap_val : IsOpenMap (coe : Rˣ → R) :=
@@ -332,29 +367,36 @@ theorem isOpenMap_val : IsOpenMap (coe : Rˣ → R) :=
have : embed_product R y ∈ u ×ˢ v := ⟨huy, by simpa using hvy⟩
simpa using hts (huvt this)
#align units.is_open_map_coe Units.isOpenMap_val
+-/
+#print Units.openEmbedding_val /-
/-- In a normed ring, the coercion from `Rˣ` (equipped with the induced topology from the
embedding in `R × R`) to `R` is an open embedding. -/
theorem openEmbedding_val : OpenEmbedding (coe : Rˣ → R) :=
openEmbedding_of_continuous_injective_open continuous_val ext isOpenMap_val
#align units.open_embedding_coe Units.openEmbedding_val
+-/
end Units
namespace Ideal
+#print Ideal.eq_top_of_norm_lt_one /-
/-- An ideal which contains an element within `1` of `1 : R` is the unit ideal. -/
theorem eq_top_of_norm_lt_one (I : Ideal R) {x : R} (hxI : x ∈ I) (hx : ‖1 - x‖ < 1) : I = ⊤ :=
let u := Units.oneSub (1 - x) hx
I.eq_top_iff_one.mpr <| by simpa only [show u.inv * x = 1 by simp] using I.mul_mem_left u.inv hxI
#align ideal.eq_top_of_norm_lt_one Ideal.eq_top_of_norm_lt_one
+-/
+#print Ideal.closure_ne_top /-
/-- The `ideal.closure` of a proper ideal in a complete normed ring is proper. -/
theorem closure_ne_top (I : Ideal R) (hI : I ≠ ⊤) : I.closure ≠ ⊤ :=
by
have h := closure_minimal (coe_subset_nonunits hI) nonunits.isClosed
simpa only [I.closure.eq_top_iff_one, Ne.def] using mt (@h 1) one_not_mem_nonunits
#align ideal.closure_ne_top Ideal.closure_ne_top
+-/
#print Ideal.IsMaximal.closure_eq /-
/-- The `ideal.closure` of a maximal ideal in a complete normed ring is the ideal itself. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/a3e83f0fa4391c8740f7d773a7a9b74e311ae2a3
@@ -149,7 +149,7 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
#align normed_ring.inverse_add NormedRing.inverse_add
theorem inverse_one_sub_nth_order (n : ℕ) :
- ∀ᶠ t in 𝓝 0, inverse ((1 : R) - t) = (∑ i in range n, t ^ i) + t ^ n * inverse (1 - t) :=
+ ∀ᶠ t in 𝓝 0, inverse ((1 : R) - t) = ∑ i in range n, t ^ i + t ^ n * inverse (1 - t) :=
by
simp only [eventually_iff, Metric.mem_nhds_iff]
use 1, by norm_num
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -70,8 +70,7 @@ def add (x : Rˣ) (t : R) (h : ‖t‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
‖-(↑x⁻¹ * t)‖ = ‖↑x⁻¹ * t‖ := by rw [norm_neg]
_ ≤ ‖(↑x⁻¹ : R)‖ * ‖t‖ := (norm_mul_le ↑x⁻¹ _)
_ < ‖(↑x⁻¹ : R)‖ * ‖(↑x⁻¹ : R)‖⁻¹ := by nlinarith only [h, hpos]
- _ = 1 := mul_inv_cancel (ne_of_gt hpos)
- ))
+ _ = 1 := mul_inv_cancel (ne_of_gt hpos)))
(x + t) (by simp [mul_add]) _ rfl
#align units.add Units.add
@@ -265,7 +264,6 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
_ = ‖↑x⁻¹ * t‖ ^ n := by rw [norm_neg]
_ ≤ (‖(↑x⁻¹ : R)‖ * ‖t‖) ^ n := _
_ = ‖(↑x⁻¹ : R)‖ ^ n * ‖t‖ ^ n := mul_pow _ _ n
-
exact pow_le_pow_of_le_left (norm_nonneg _) (norm_mul_le (↑x⁻¹) t) n
have h'' : 0 ≤ ‖(↑x⁻¹ : R)‖ ^ n * ‖t‖ ^ n := by
refine' mul_nonneg _ _ <;> exact pow_nonneg (norm_nonneg _) n
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -83,7 +83,7 @@ def ofNearby (x : Rˣ) (y : R) (h : ‖y - x‖ < ‖(↑x⁻¹ : R)‖⁻¹) :
#align units.unit_of_nearby Units.ofNearby
/-- The group of units of a complete normed ring is an open subset of the ring. -/
-protected theorem isOpen : IsOpen { x : R | IsUnit x } :=
+protected theorem isOpen : IsOpen {x : R | IsUnit x} :=
by
nontriviality R
apply metric.is_open_iff.mpr
@@ -94,7 +94,7 @@ protected theorem isOpen : IsOpen { x : R | IsUnit x } :=
exact (x.unit_of_nearby y hy).IsUnit
#align units.is_open Units.isOpen
-protected theorem nhds (x : Rˣ) : { x : R | IsUnit x } ∈ 𝓝 (x : R) :=
+protected theorem nhds (x : Rˣ) : {x : R | IsUnit x} ∈ 𝓝 (x : R) :=
IsOpen.mem_nhds Units.isOpen x.IsUnit
#align units.nhds Units.nhds
@@ -182,7 +182,7 @@ theorem inverse_add_nth_order (x : Rˣ) (n : ℕ) :
refine' (inverse_add x).mp _
have hzero : tendsto (fun t : R => -↑x⁻¹ * t) (𝓝 0) (𝓝 0) :=
by
- convert((mulLeft_continuous (-(↑x⁻¹ : R))).Tendsto 0).comp tendsto_id
+ convert ((mulLeft_continuous (-(↑x⁻¹ : R))).Tendsto 0).comp tendsto_id
simp
refine' (hzero.eventually (inverse_one_sub_nth_order n)).mp (eventually_of_forall _)
simp only [neg_mul, sub_neg_eq_add]
@@ -222,7 +222,7 @@ theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0
use C * ‖((x⁻¹ : Rˣ) : R)‖
have hzero : tendsto (fun t => -(↑x⁻¹ : R) * t) (𝓝 0) (𝓝 0) :=
by
- convert((mulLeft_continuous (-↑x⁻¹ : R)).Tendsto 0).comp tendsto_id
+ convert ((mulLeft_continuous (-↑x⁻¹ : R)).Tendsto 0).comp tendsto_id
simp
refine' (inverse_add x).mp ((hzero.eventually hC).mp (eventually_of_forall _))
intro t bound iden
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -90,7 +90,7 @@ protected theorem isOpen : IsOpen { x : R | IsUnit x } :=
rintro x' ⟨x, rfl⟩
refine' ⟨‖(↑x⁻¹ : R)‖⁻¹, _root_.inv_pos.mpr (Units.norm_pos x⁻¹), _⟩
intro y hy
- rw [Metric.mem_ball, dist_eq_norm] at hy
+ rw [Metric.mem_ball, dist_eq_norm] at hy
exact (x.unit_of_nearby y hy).IsUnit
#align units.is_open Units.isOpen
@@ -107,7 +107,7 @@ namespace nonunits
theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
Set.subset_compl_comm.mp fun x hx => by
simpa [sub_sub_self, Units.oneSub_val] using
- (Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx)).IsUnit
+ (Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx )).IsUnit
#align nonunits.subset_compl_ball nonunits.subset_compl_ball
-- The `nonunits` in a complete normed ring are a closed set
@@ -135,7 +135,7 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
have hinv : 0 < ‖(↑x⁻¹ : R)‖⁻¹ := by cancel_denoms
use ‖(↑x⁻¹ : R)‖⁻¹, hinv
intro t ht
- simp only [mem_ball, dist_zero_right] at ht
+ simp only [mem_ball, dist_zero_right] at ht
have ht' : ‖-↑x⁻¹ * t‖ < 1 :=
by
refine' lt_of_le_of_lt (norm_mul_le _ _) _
@@ -144,8 +144,8 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
cancel_denoms
have hright := inverse_one_sub (-↑x⁻¹ * t) ht'
have hleft := inverse_unit (x.add t ht)
- simp only [neg_mul, sub_neg_eq_add] at hright
- simp only [Units.add_val] at hleft
+ simp only [neg_mul, sub_neg_eq_add] at hright
+ simp only [Units.add_val] at hleft
simp [hleft, hright, Units.add]
#align normed_ring.inverse_add NormedRing.inverse_add
@@ -155,7 +155,7 @@ theorem inverse_one_sub_nth_order (n : ℕ) :
simp only [eventually_iff, Metric.mem_nhds_iff]
use 1, by norm_num
intro t ht
- simp only [mem_ball, dist_zero_right] at ht
+ simp only [mem_ball, dist_zero_right] at ht
simp only [inverse_one_sub t ht, Set.mem_setOf_eq]
have h : 1 = ((range n).Sum fun i => t ^ i) * Units.oneSub t ht + t ^ n :=
by
@@ -188,7 +188,7 @@ theorem inverse_add_nth_order (x : Rˣ) (n : ℕ) :
simp only [neg_mul, sub_neg_eq_add]
intro t h1 h2
have h := congr_arg (fun a : R => a * ↑x⁻¹) h1
- dsimp at h
+ dsimp at h
convert h
rw [add_mul, mul_assoc]
simp [h2.symm]
@@ -199,7 +199,7 @@ theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t
simp only [is_O, is_O_with, eventually_iff, Metric.mem_nhds_iff]
refine' ⟨‖(1 : R)‖ + 1, (2 : ℝ)⁻¹, by norm_num, _⟩
intro t ht
- simp only [ball, dist_zero_right, Set.mem_setOf_eq] at ht
+ simp only [ball, dist_zero_right, Set.mem_setOf_eq] at ht
have ht' : ‖t‖ < 1 := by
have : (2 : ℝ)⁻¹ < 1 := by cancel_denoms
linarith
@@ -227,7 +227,7 @@ theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0
refine' (inverse_add x).mp ((hzero.eventually hC).mp (eventually_of_forall _))
intro t bound iden
rw [iden]
- simp at bound
+ simp at bound
have hmul := norm_mul_le (inverse (1 + ↑x⁻¹ * t)) ↑x⁻¹
nlinarith [norm_nonneg (↑x⁻¹ : R)]
#align normed_ring.inverse_add_norm NormedRing.inverse_add_norm
@@ -255,7 +255,7 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
simp
refine' h.mp (hC.mp (eventually_of_forall _))
intro t _ hLHS
- simp only [neg_mul] at hLHS
+ simp only [neg_mul] at hLHS
rw [hLHS]
refine' le_trans (norm_mul_le _ _) _
have h' : ‖(-(↑x⁻¹ * t)) ^ n‖ ≤ ‖(↑x⁻¹ : R)‖ ^ n * ‖t‖ ^ n :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -39,7 +39,7 @@ a unit and 0 if not. The other major results of this file (notably `inverse_add
noncomputable section
-open Topology
+open scoped Topology
variable {R : Type _} [NormedRing R] [CompleteSpace R]
@@ -119,7 +119,7 @@ end nonunits
namespace NormedRing
-open Classical BigOperators
+open scoped Classical BigOperators
open Asymptotics Filter Metric Finset Ring
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -45,12 +45,6 @@ variable {R : Type _} [NormedRing R] [CompleteSpace R]
namespace Units
-/- warning: units.one_sub -> Units.oneSub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R), (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align units.one_sub Units.oneSubₓ'. -/
/-- In a complete normed ring, a perturbation of `1` by an element `t` of distance less than `1`
from `1` is a unit. Here we construct its `units` structure. -/
@[simps coe]
@@ -61,12 +55,6 @@ def oneSub (t : R) (h : ‖t‖ < 1) : Rˣ where
inv_val := geom_series_mul_neg t h
#align units.one_sub Units.oneSub
-/- warning: units.add -> Units.add is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (t : R), (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (Inv.inv.{0} Real Real.hasInv (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))))) -> (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (t : R), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (Inv.inv.{0} Real Real.instInvReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))))) -> (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align units.add Units.addₓ'. -/
/-- In a complete normed ring, a perturbation of a unit `x` by an element `t` of distance less than
`‖x⁻¹‖⁻¹` from `x` is a unit. Here we construct its `units` structure. -/
@[simps coe]
@@ -87,12 +75,6 @@ def add (x : Rˣ) (t : R) (h : ‖t‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
(x + t) (by simp [mul_add]) _ rfl
#align units.add Units.add
-/- warning: units.unit_of_nearby -> Units.ofNearby is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (y : R), (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) y ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x))) (Inv.inv.{0} Real Real.hasInv (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))))) -> (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (y : R), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) y (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x))) (Inv.inv.{0} Real Real.instInvReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))))) -> (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align units.unit_of_nearby Units.ofNearbyₓ'. -/
/-- In a complete normed ring, an element `y` of distance less than `‖x⁻¹‖⁻¹` from `x` is a unit.
Here we construct its `units` structure. -/
@[simps coe]
@@ -100,12 +82,6 @@ def ofNearby (x : Rˣ) (y : R) (h : ‖y - x‖ < ‖(↑x⁻¹ : R)‖⁻¹) :
Units.copy (x.add (y - x : R) h) y (by simp) _ rfl
#align units.unit_of_nearby Units.ofNearby
-/- warning: units.is_open -> Units.isOpen is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpen.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)) x))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpen.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x))
-Case conversion may be inaccurate. Consider using '#align units.is_open Units.isOpenₓ'. -/
/-- The group of units of a complete normed ring is an open subset of the ring. -/
protected theorem isOpen : IsOpen { x : R | IsUnit x } :=
by
@@ -118,12 +94,6 @@ protected theorem isOpen : IsOpen { x : R | IsUnit x } :=
exact (x.unit_of_nearby y hy).IsUnit
#align units.is_open Units.isOpen
-/- warning: units.nhds -> Units.nhds is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Membership.Mem.{u1, u1} (Set.{u1} R) (Filter.{u1} R) (Filter.hasMem.{u1} R) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)) x)) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Membership.mem.{u1, u1} (Set.{u1} R) (Filter.{u1} R) (instMembershipSetFilter.{u1} R) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x)) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x))
-Case conversion may be inaccurate. Consider using '#align units.nhds Units.nhdsₓ'. -/
protected theorem nhds (x : Rˣ) : { x : R | IsUnit x } ∈ 𝓝 (x : R) :=
IsOpen.mem_nhds Units.isOpen x.IsUnit
#align units.nhds Units.nhds
@@ -132,12 +102,6 @@ end Units
namespace nonunits
-/- warning: nonunits.subset_compl_ball -> nonunits.subset_compl_ball is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], HasSubset.Subset.{u1} (Set.{u1} R) (Set.hasSubset.{u1} R) (nonunits.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HasCompl.compl.{u1} (Set.{u1} R) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} R) (Set.booleanAlgebra.{u1} R)) (Metric.ball.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], HasSubset.Subset.{u1} (Set.{u1} R) (Set.instHasSubsetSet.{u1} R) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HasCompl.compl.{u1} (Set.{u1} R) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} R) (Set.instBooleanAlgebraSet.{u1} R)) (Metric.ball.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))))
-Case conversion may be inaccurate. Consider using '#align nonunits.subset_compl_ball nonunits.subset_compl_ballₓ'. -/
/-- The `nonunits` in a complete normed ring are contained in the complement of the ball of radius
`1` centered at `1 : R`. -/
theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
@@ -146,12 +110,6 @@ theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
(Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx)).IsUnit
#align nonunits.subset_compl_ball nonunits.subset_compl_ball
-/- warning: nonunits.is_closed -> nonunits.isClosed is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsClosed.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (nonunits.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsClosed.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align nonunits.is_closed nonunits.isClosedₓ'. -/
-- The `nonunits` in a complete normed ring are a closed set
protected theorem isClosed : IsClosed (nonunits R) :=
Units.isOpen.isClosed_compl
@@ -165,22 +123,10 @@ open Classical BigOperators
open Asymptotics Filter Metric Finset Ring
-/- warning: normed_ring.inverse_one_sub -> NormedRing.inverse_one_sub is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R) (h : LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))), Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.oneSub.{u1} R _inst_1 _inst_2 t h)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R) (h : LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))), Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.oneSub.{u1} R _inst_1 _inst_2 t h)))
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_one_sub NormedRing.inverse_one_subₓ'. -/
theorem inverse_one_sub (t : R) (h : ‖t‖ < 1) : inverse (1 - t) = ↑(Units.oneSub t h)⁻¹ := by
rw [← inverse_unit (Units.oneSub t h), Units.oneSub_val]
#align normed_ring.inverse_one_sub NormedRing.inverse_one_sub
-/- warning: normed_ring.inverse_add -> NormedRing.inverse_add is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)) t))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)) t))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add NormedRing.inverse_addₓ'. -/
/-- The formula `inverse (x + t) = inverse (1 + x⁻¹ * t) * x⁻¹` holds for `t` sufficiently small. -/
theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inverse (1 + ↑x⁻¹ * t) * ↑x⁻¹ :=
by
@@ -203,12 +149,6 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
simp [hleft, hright, Units.add]
#align normed_ring.inverse_add NormedRing.inverse_add
-/- warning: normed_ring.inverse_one_sub_nth_order -> NormedRing.inverse_one_sub_nth_order is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Finset.sum.{u1, 0} R Nat (AddCommGroup.toAddCommMonoid.{u1} R (NormedAddCommGroup.toAddCommGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) t i)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) t n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Finset.sum.{u1, 0} R Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) t i)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) t n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_one_sub_nth_order NormedRing.inverse_one_sub_nth_orderₓ'. -/
theorem inverse_one_sub_nth_order (n : ℕ) :
∀ᶠ t in 𝓝 0, inverse ((1 : R) - t) = (∑ i in range n, t ^ i) + t ^ n * inverse (1 - t) :=
by
@@ -231,9 +171,6 @@ theorem inverse_one_sub_nth_order (n : ℕ) :
simp
#align normed_ring.inverse_one_sub_nth_order NormedRing.inverse_one_sub_nth_order
-/- warning: normed_ring.inverse_add_nth_order -> NormedRing.inverse_add_nth_order is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_nth_order NormedRing.inverse_add_nth_orderₓ'. -/
/-- The formula
`inverse (x + t) = (∑ i in range n, (- x⁻¹ * t) ^ i) * x⁻¹ + (- x⁻¹ * t) ^ n * inverse (x + t)`
holds for `t` sufficiently small. -/
@@ -257,12 +194,6 @@ theorem inverse_add_nth_order (x : Rˣ) (n : ℕ) :
simp [h2.symm]
#align normed_ring.inverse_add_nth_order NormedRing.inverse_add_nth_order
-/- warning: normed_ring.inverse_one_sub_norm -> NormedRing.inverse_one_sub_norm is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_one_sub_norm NormedRing.inverse_one_sub_normₓ'. -/
theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t => 1 : R → ℝ) :=
by
simp only [is_O, is_O_with, eventually_iff, Metric.mem_nhds_iff]
@@ -283,12 +214,6 @@ theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t
linarith
#align normed_ring.inverse_one_sub_norm NormedRing.inverse_one_sub_norm
-/- warning: normed_ring.inverse_add_norm -> NormedRing.inverse_add_norm is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm NormedRing.inverse_add_normₓ'. -/
/-- The function `λ t, inverse (x + t)` is O(1) as `t → 0`. -/
theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0] fun t => (1 : ℝ) :=
by
@@ -307,12 +232,6 @@ theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0
nlinarith [norm_nonneg (↑x⁻¹ : R)]
#align normed_ring.inverse_add_norm NormedRing.inverse_add_norm
-/- warning: normed_ring.inverse_add_norm_diff_nth_order -> NormedRing.inverse_add_norm_diff_nth_order is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (n : Nat), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Finset.sum.{u1, 0} R Nat (AddCommGroup.toAddCommMonoid.{u1} R (NormedAddCommGroup.toAddCommGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) t) i)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) n)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (n : Nat), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.sum.{u1, 0} R Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Neg.neg.{u1} R (Ring.toNeg.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) t) i)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) n)
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm_diff_nth_order NormedRing.inverse_add_norm_diff_nth_orderₓ'. -/
/-- The function
`λ t, inverse (x + t) - (∑ i in range n, (- x⁻¹ * t) ^ i) * x⁻¹`
is `O(t ^ n)` as `t → 0`. -/
@@ -353,24 +272,12 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
nlinarith [norm_nonneg (inverse (↑x + t))]
#align normed_ring.inverse_add_norm_diff_nth_order NormedRing.inverse_add_norm_diff_nth_order
-/- warning: normed_ring.inverse_add_norm_diff_first_order -> NormedRing.inverse_add_norm_diff_first_order is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) (fun (t : R) => Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) (fun (t : R) => Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t)
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm_diff_first_order NormedRing.inverse_add_norm_diff_first_orderₓ'. -/
/-- The function `λ t, inverse (x + t) - x⁻¹` is `O(t)` as `t → 0`. -/
theorem inverse_add_norm_diff_first_order (x : Rˣ) :
(fun t : R => inverse (↑x + t) - ↑x⁻¹) =O[𝓝 0] fun t => ‖t‖ := by
simpa using inverse_add_norm_diff_nth_order x 1
#align normed_ring.inverse_add_norm_diff_first_order NormedRing.inverse_add_norm_diff_first_order
-/- warning: normed_ring.inverse_add_norm_diff_second_order -> NormedRing.inverse_add_norm_diff_second_order is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)) t) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm_diff_second_order NormedRing.inverse_add_norm_diff_second_orderₓ'. -/
/-- The function
`λ t, inverse (x + t) - x⁻¹ + x⁻¹ * t * x⁻¹`
is `O(t ^ 2)` as `t → 0`. -/
@@ -384,12 +291,6 @@ theorem inverse_add_norm_diff_second_order (x : Rˣ) :
sub_neg_eq_add]
#align normed_ring.inverse_add_norm_diff_second_order NormedRing.inverse_add_norm_diff_second_order
-/- warning: normed_ring.inverse_continuous_at -> NormedRing.inverse_continuousAt is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), ContinuousAt.{u1, u1} R R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x)
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), ContinuousAt.{u1, u1} R R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x)
-Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_continuous_at NormedRing.inverse_continuousAtₓ'. -/
/-- The function `inverse` is continuous at each unit of `R`. -/
theorem inverse_continuousAt (x : Rˣ) : ContinuousAt inverse (x : R) :=
by
@@ -410,12 +311,6 @@ namespace Units
open MulOpposite Filter NormedRing
-/- warning: units.is_open_map_coe -> Units.isOpenMap_val is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpenMap.{u1, u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.topologicalSpace.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpenMap.{u1, u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) R (Units.instTopologicalSpaceUnits.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align units.is_open_map_coe Units.isOpenMap_valₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- In a normed ring, the coercion from `Rˣ` (equipped with the induced topology from the
@@ -440,12 +335,6 @@ theorem isOpenMap_val : IsOpenMap (coe : Rˣ → R) :=
simpa using hts (huvt this)
#align units.is_open_map_coe Units.isOpenMap_val
-/- warning: units.open_embedding_coe -> Units.openEmbedding_val is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], OpenEmbedding.{u1, u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.topologicalSpace.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], OpenEmbedding.{u1, u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) R (Units.instTopologicalSpaceUnits.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
-Case conversion may be inaccurate. Consider using '#align units.open_embedding_coe Units.openEmbedding_valₓ'. -/
/-- In a normed ring, the coercion from `Rˣ` (equipped with the induced topology from the
embedding in `R × R`) to `R` is an open embedding. -/
theorem openEmbedding_val : OpenEmbedding (coe : Rˣ → R) :=
@@ -456,24 +345,12 @@ end Units
namespace Ideal
-/- warning: ideal.eq_top_of_norm_lt_one -> Ideal.eq_top_of_norm_lt_one is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) {x : R}, (Membership.Mem.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x I) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) x)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) {x : R}, (Membership.mem.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x I) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align ideal.eq_top_of_norm_lt_one Ideal.eq_top_of_norm_lt_oneₓ'. -/
/-- An ideal which contains an element within `1` of `1 : R` is the unit ideal. -/
theorem eq_top_of_norm_lt_one (I : Ideal R) {x : R} (hxI : x ∈ I) (hx : ‖1 - x‖ < 1) : I = ⊤ :=
let u := Units.oneSub (1 - x) hx
I.eq_top_iff_one.mpr <| by simpa only [show u.inv * x = 1 by simp] using I.mul_mem_left u.inv hxI
#align ideal.eq_top_of_norm_lt_one Ideal.eq_top_of_norm_lt_one
-/- warning: ideal.closure_ne_top -> Ideal.closure_ne_top is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) -> (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ideal.closure.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (NormedRing.toRing.{u1} R _inst_1) (semi_normed_top_ring.{u1} R (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))) I) (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) -> (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ideal.closure.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (NormedRing.toRing.{u1} R _inst_1) (semi_normed_top_ring.{u1} R (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))) I) (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
-Case conversion may be inaccurate. Consider using '#align ideal.closure_ne_top Ideal.closure_ne_topₓ'. -/
/-- The `ideal.closure` of a proper ideal in a complete normed ring is proper. -/
theorem closure_ne_top (I : Ideal R) (hI : I ≠ ⊤) : I.closure ≠ ⊤ :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -232,10 +232,7 @@ theorem inverse_one_sub_nth_order (n : ℕ) :
#align normed_ring.inverse_one_sub_nth_order NormedRing.inverse_one_sub_nth_order
/- warning: normed_ring.inverse_add_nth_order -> NormedRing.inverse_add_nth_order is a dubious translation:
-lean 3 declaration is
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Finset.sum.{u1, 0} R Nat (AddCommGroup.toAddCommMonoid.{u1} R (NormedAddCommGroup.toAddCommGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) t) i)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) t) n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))))))
-but is expected to have type
- forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.sum.{u1, 0} R Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Neg.neg.{u1} R (Ring.toNeg.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) t) i)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Neg.neg.{u1} R (Ring.toNeg.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) t) n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_nth_order NormedRing.inverse_add_nth_orderₓ'. -/
/-- The formula
`inverse (x + t) = (∑ i in range n, (- x⁻¹ * t) ^ i) * x⁻¹ + (- x⁻¹ * t) ^ n * inverse (x + t)`
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth
! This file was ported from Lean 3 source module analysis.normed_space.units
-! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
+! leanprover-community/mathlib commit 6cf5900728239efa287df7761ec2a1ac9cf39b29
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Analysis.SpecificLimits.Normed
/-!
# The group of units of a complete normed ring
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file contains the basic theory for the group of units (invertible elements) of a complete
normed ring (Banach algebras being a notable special case).
mathlib commit https://github.com/leanprover-community/mathlib/commit/2f8347015b12b0864dfaf366ec4909eb70c78740
@@ -42,6 +42,12 @@ variable {R : Type _} [NormedRing R] [CompleteSpace R]
namespace Units
+/- warning: units.one_sub -> Units.oneSub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R), (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align units.one_sub Units.oneSubₓ'. -/
/-- In a complete normed ring, a perturbation of `1` by an element `t` of distance less than `1`
from `1` is a unit. Here we construct its `units` structure. -/
@[simps coe]
@@ -52,6 +58,12 @@ def oneSub (t : R) (h : ‖t‖ < 1) : Rˣ where
inv_val := geom_series_mul_neg t h
#align units.one_sub Units.oneSub
+/- warning: units.add -> Units.add is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (t : R), (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (Inv.inv.{0} Real Real.hasInv (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))))) -> (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (t : R), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (Inv.inv.{0} Real Real.instInvReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))))) -> (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align units.add Units.addₓ'. -/
/-- In a complete normed ring, a perturbation of a unit `x` by an element `t` of distance less than
`‖x⁻¹‖⁻¹` from `x` is a unit. Here we construct its `units` structure. -/
@[simps coe]
@@ -72,13 +84,25 @@ def add (x : Rˣ) (t : R) (h : ‖t‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
(x + t) (by simp [mul_add]) _ rfl
#align units.add Units.add
+/- warning: units.unit_of_nearby -> Units.ofNearby is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (y : R), (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) y ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x))) (Inv.inv.{0} Real Real.hasInv (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))))) -> (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (y : R), (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) y (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x))) (Inv.inv.{0} Real Real.instInvReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))))) -> (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align units.unit_of_nearby Units.ofNearbyₓ'. -/
/-- In a complete normed ring, an element `y` of distance less than `‖x⁻¹‖⁻¹` from `x` is a unit.
Here we construct its `units` structure. -/
@[simps coe]
-def unitOfNearby (x : Rˣ) (y : R) (h : ‖y - x‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
+def ofNearby (x : Rˣ) (y : R) (h : ‖y - x‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
Units.copy (x.add (y - x : R) h) y (by simp) _ rfl
-#align units.unit_of_nearby Units.unitOfNearby
-
+#align units.unit_of_nearby Units.ofNearby
+
+/- warning: units.is_open -> Units.isOpen is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpen.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)) x))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpen.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x))
+Case conversion may be inaccurate. Consider using '#align units.is_open Units.isOpenₓ'. -/
/-- The group of units of a complete normed ring is an open subset of the ring. -/
protected theorem isOpen : IsOpen { x : R | IsUnit x } :=
by
@@ -91,6 +115,12 @@ protected theorem isOpen : IsOpen { x : R | IsUnit x } :=
exact (x.unit_of_nearby y hy).IsUnit
#align units.is_open Units.isOpen
+/- warning: units.nhds -> Units.nhds is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Membership.Mem.{u1, u1} (Set.{u1} R) (Filter.{u1} R) (Filter.hasMem.{u1} R) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)) x)) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Membership.mem.{u1, u1} (Set.{u1} R) (Filter.{u1} R) (instMembershipSetFilter.{u1} R) (setOf.{u1} R (fun (x : R) => IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x)) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x))
+Case conversion may be inaccurate. Consider using '#align units.nhds Units.nhdsₓ'. -/
protected theorem nhds (x : Rˣ) : { x : R | IsUnit x } ∈ 𝓝 (x : R) :=
IsOpen.mem_nhds Units.isOpen x.IsUnit
#align units.nhds Units.nhds
@@ -99,14 +129,26 @@ end Units
namespace nonunits
+/- warning: nonunits.subset_compl_ball -> nonunits.subset_compl_ball is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], HasSubset.Subset.{u1} (Set.{u1} R) (Set.hasSubset.{u1} R) (nonunits.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HasCompl.compl.{u1} (Set.{u1} R) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} R) (Set.booleanAlgebra.{u1} R)) (Metric.ball.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], HasSubset.Subset.{u1} (Set.{u1} R) (Set.instHasSubsetSet.{u1} R) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HasCompl.compl.{u1} (Set.{u1} R) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} R) (Set.instBooleanAlgebraSet.{u1} R)) (Metric.ball.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))))
+Case conversion may be inaccurate. Consider using '#align nonunits.subset_compl_ball nonunits.subset_compl_ballₓ'. -/
/-- The `nonunits` in a complete normed ring are contained in the complement of the ball of radius
`1` centered at `1 : R`. -/
theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ :=
Set.subset_compl_comm.mp fun x hx => by
- simpa [sub_sub_self, Units.coe_oneSub] using
+ simpa [sub_sub_self, Units.oneSub_val] using
(Units.oneSub (1 - x) (by rwa [Metric.mem_ball, dist_eq_norm, norm_sub_rev] at hx)).IsUnit
#align nonunits.subset_compl_ball nonunits.subset_compl_ball
+/- warning: nonunits.is_closed -> nonunits.isClosed is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsClosed.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (nonunits.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsClosed.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (nonunits.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align nonunits.is_closed nonunits.isClosedₓ'. -/
-- The `nonunits` in a complete normed ring are a closed set
protected theorem isClosed : IsClosed (nonunits R) :=
Units.isOpen.isClosed_compl
@@ -120,10 +162,22 @@ open Classical BigOperators
open Asymptotics Filter Metric Finset Ring
-theorem inverse_oneSub (t : R) (h : ‖t‖ < 1) : inverse (1 - t) = ↑(Units.oneSub t h)⁻¹ := by
- rw [← inverse_unit (Units.oneSub t h), Units.coe_oneSub]
-#align normed_ring.inverse_one_sub NormedRing.inverse_oneSub
-
+/- warning: normed_ring.inverse_one_sub -> NormedRing.inverse_one_sub is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R) (h : LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))), Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.oneSub.{u1} R _inst_1 _inst_2 t h)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (t : R) (h : LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))), Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.oneSub.{u1} R _inst_1 _inst_2 t h)))
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_one_sub NormedRing.inverse_one_subₓ'. -/
+theorem inverse_one_sub (t : R) (h : ‖t‖ < 1) : inverse (1 - t) = ↑(Units.oneSub t h)⁻¹ := by
+ rw [← inverse_unit (Units.oneSub t h), Units.oneSub_val]
+#align normed_ring.inverse_one_sub NormedRing.inverse_one_sub
+
+/- warning: normed_ring.inverse_add -> NormedRing.inverse_add is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)) t))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)) t))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add NormedRing.inverse_addₓ'. -/
/-- The formula `inverse (x + t) = inverse (1 + x⁻¹ * t) * x⁻¹` holds for `t` sufficiently small. -/
theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inverse (1 + ↑x⁻¹ * t) * ↑x⁻¹ :=
by
@@ -142,10 +196,16 @@ theorem inverse_add (x : Rˣ) : ∀ᶠ t in 𝓝 0, inverse ((x : R) + t) = inve
have hright := inverse_one_sub (-↑x⁻¹ * t) ht'
have hleft := inverse_unit (x.add t ht)
simp only [neg_mul, sub_neg_eq_add] at hright
- simp only [Units.coe_add] at hleft
+ simp only [Units.add_val] at hleft
simp [hleft, hright, Units.add]
#align normed_ring.inverse_add NormedRing.inverse_add
+/- warning: normed_ring.inverse_one_sub_nth_order -> NormedRing.inverse_one_sub_nth_order is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Finset.sum.{u1, 0} R Nat (AddCommGroup.toAddCommMonoid.{u1} R (NormedAddCommGroup.toAddCommGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) t i)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) t n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Finset.sum.{u1, 0} R Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) t i)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) t n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_one_sub_nth_order NormedRing.inverse_one_sub_nth_orderₓ'. -/
theorem inverse_one_sub_nth_order (n : ℕ) :
∀ᶠ t in 𝓝 0, inverse ((1 : R) - t) = (∑ i in range n, t ^ i) + t ^ n * inverse (1 - t) :=
by
@@ -156,18 +216,24 @@ theorem inverse_one_sub_nth_order (n : ℕ) :
simp only [inverse_one_sub t ht, Set.mem_setOf_eq]
have h : 1 = ((range n).Sum fun i => t ^ i) * Units.oneSub t ht + t ^ n :=
by
- simp only [Units.coe_oneSub]
+ simp only [Units.oneSub_val]
rw [geom_sum_mul_neg]
simp
rw [← one_mul ↑(Units.oneSub t ht)⁻¹, h, add_mul]
congr
· rw [mul_assoc, (Units.oneSub t ht).mul_inv]
simp
- · simp only [Units.coe_oneSub]
+ · simp only [Units.oneSub_val]
rw [← add_mul, geom_sum_mul_neg]
simp
#align normed_ring.inverse_one_sub_nth_order NormedRing.inverse_one_sub_nth_order
+/- warning: normed_ring.inverse_add_nth_order -> NormedRing.inverse_add_nth_order is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Finset.sum.{u1, 0} R Nat (AddCommGroup.toAddCommMonoid.{u1} R (NormedAddCommGroup.toAddCommGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) t) i)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) t) n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (n : Nat), Filter.Eventually.{u1} R (fun (t : R) => Eq.{succ u1} R (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.sum.{u1, 0} R Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Neg.neg.{u1} R (Ring.toNeg.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) t) i)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Neg.neg.{u1} R (Ring.toNeg.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) t) n) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t))))) (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_nth_order NormedRing.inverse_add_nth_orderₓ'. -/
/-- The formula
`inverse (x + t) = (∑ i in range n, (- x⁻¹ * t) ^ i) * x⁻¹ + (- x⁻¹ * t) ^ n * inverse (x + t)`
holds for `t` sufficiently small. -/
@@ -191,6 +257,12 @@ theorem inverse_add_nth_order (x : Rˣ) (n : ℕ) :
simp [h2.symm]
#align normed_ring.inverse_add_nth_order NormedRing.inverse_add_nth_order
+/- warning: normed_ring.inverse_one_sub_norm -> NormedRing.inverse_one_sub_norm is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_one_sub_norm NormedRing.inverse_one_sub_normₓ'. -/
theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t => 1 : R → ℝ) :=
by
simp only [is_O, is_O_with, eventually_iff, Metric.mem_nhds_iff]
@@ -211,6 +283,12 @@ theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun t
linarith
#align normed_ring.inverse_one_sub_norm NormedRing.inverse_one_sub_norm
+/- warning: normed_ring.inverse_add_norm -> NormedRing.inverse_add_norm is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (fun (t : R) => OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm NormedRing.inverse_add_normₓ'. -/
/-- The function `λ t, inverse (x + t)` is O(1) as `t → 0`. -/
theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0] fun t => (1 : ℝ) :=
by
@@ -229,6 +307,12 @@ theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0
nlinarith [norm_nonneg (↑x⁻¹ : R)]
#align normed_ring.inverse_add_norm NormedRing.inverse_add_norm
+/- warning: normed_ring.inverse_add_norm_diff_nth_order -> NormedRing.inverse_add_norm_diff_nth_order is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (n : Nat), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Finset.sum.{u1, 0} R Nat (AddCommGroup.toAddCommMonoid.{u1} R (NormedAddCommGroup.toAddCommGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Neg.neg.{u1} R (SubNegMonoid.toHasNeg.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1)))))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) t) i)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) n)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (n : Nat), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.sum.{u1, 0} R Nat (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Finset.range n) (fun (i : Nat) => HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Neg.neg.{u1} R (Ring.toNeg.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) t) i)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) n)
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm_diff_nth_order NormedRing.inverse_add_norm_diff_nth_orderₓ'. -/
/-- The function
`λ t, inverse (x + t) - (∑ i in range n, (- x⁻¹ * t) ^ i) * x⁻¹`
is `O(t ^ n)` as `t → 0`. -/
@@ -269,12 +353,24 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
nlinarith [norm_nonneg (inverse (↑x + t))]
#align normed_ring.inverse_add_norm_diff_nth_order NormedRing.inverse_add_norm_diff_nth_order
+/- warning: normed_ring.inverse_add_norm_diff_first_order -> NormedRing.inverse_add_norm_diff_first_order is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) (fun (t : R) => Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) (fun (t : R) => Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t)
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm_diff_first_order NormedRing.inverse_add_norm_diff_first_orderₓ'. -/
/-- The function `λ t, inverse (x + t) - x⁻¹` is `O(t)` as `t → 0`. -/
theorem inverse_add_norm_diff_first_order (x : Rˣ) :
(fun t : R => inverse (↑x + t) - ↑x⁻¹) =O[𝓝 0] fun t => ‖t‖ := by
simpa using inverse_add_norm_diff_nth_order x 1
#align normed_ring.inverse_add_norm_diff_first_order NormedRing.inverse_add_norm_diff_first_order
+/- warning: normed_ring.inverse_add_norm_diff_second_order -> NormedRing.inverse_add_norm_diff_second_order is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toHasNorm.{u1} R _inst_1) Real.hasNorm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))))) (fun (t : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toHasAdd.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x) t)) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (Distrib.toHasMul.{u1} R (Ring.toDistrib.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)) t) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) (Inv.inv.{u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Units.hasInv.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.monoid)) (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Nat 2 (OfNat.mk.{0} Nat 2 (bit0.{0} Nat Nat.hasAdd (One.one.{0} Nat Nat.hasOne)))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), Asymptotics.IsBigO.{u1, u1, 0} R R Real (NormedRing.toNorm.{u1} R _inst_1) Real.norm (nhds.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (fun (t : R) => HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R (Distrib.toAdd.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x) t)) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)) t) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Inv.inv.{u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Units.instInv.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)))) (fun (t : R) => HPow.hPow.{0, 0, 0} Real Nat Real (instHPow.{0, 0} Real Nat (Monoid.Pow.{0} Real Real.instMonoidReal)) (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) t) (OfNat.ofNat.{0} Nat 2 (instOfNatNat 2)))
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_add_norm_diff_second_order NormedRing.inverse_add_norm_diff_second_orderₓ'. -/
/-- The function
`λ t, inverse (x + t) - x⁻¹ + x⁻¹ * t * x⁻¹`
is `O(t ^ 2)` as `t → 0`. -/
@@ -288,6 +384,12 @@ theorem inverse_add_norm_diff_second_order (x : Rˣ) :
sub_neg_eq_add]
#align normed_ring.inverse_add_norm_diff_second_order NormedRing.inverse_add_norm_diff_second_order
+/- warning: normed_ring.inverse_continuous_at -> NormedRing.inverse_continuousAt is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))), ContinuousAt.{u1, u1} R R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) x)
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (x : Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))), ContinuousAt.{u1, u1} R R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.inverse.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))) x)
+Case conversion may be inaccurate. Consider using '#align normed_ring.inverse_continuous_at NormedRing.inverse_continuousAtₓ'. -/
/-- The function `inverse` is continuous at each unit of `R`. -/
theorem inverse_continuousAt (x : Rˣ) : ContinuousAt inverse (x : R) :=
by
@@ -308,11 +410,17 @@ namespace Units
open MulOpposite Filter NormedRing
+/- warning: units.is_open_map_coe -> Units.isOpenMap_val is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpenMap.{u1, u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.topologicalSpace.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], IsOpenMap.{u1, u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) R (Units.instTopologicalSpaceUnits.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align units.is_open_map_coe Units.isOpenMap_valₓ'. -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- In a normed ring, the coercion from `Rˣ` (equipped with the induced topology from the
embedding in `R × R`) to `R` is an open map. -/
-theorem isOpenMap_coe : IsOpenMap (coe : Rˣ → R) :=
+theorem isOpenMap_val : IsOpenMap (coe : Rˣ → R) :=
by
rw [isOpenMap_iff_nhds_le]
intro x s
@@ -330,24 +438,42 @@ theorem isOpenMap_coe : IsOpenMap (coe : Rˣ → R) :=
rintro _ ⟨⟨huy, hvy⟩, ⟨y, rfl⟩⟩
have : embed_product R y ∈ u ×ˢ v := ⟨huy, by simpa using hvy⟩
simpa using hts (huvt this)
-#align units.is_open_map_coe Units.isOpenMap_coe
-
+#align units.is_open_map_coe Units.isOpenMap_val
+
+/- warning: units.open_embedding_coe -> Units.openEmbedding_val is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], OpenEmbedding.{u1, u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.topologicalSpace.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) ((fun (a : Type.{u1}) (b : Type.{u1}) [self : HasLiftT.{succ u1, succ u1} a b] => self.0) (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (HasLiftT.mk.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (CoeTCₓ.coe.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (coeBase.{succ u1, succ u1} (Units.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Units.hasCoe.{u1} R (Ring.toMonoid.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))], OpenEmbedding.{u1, u1} (Units.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) R (Units.instTopologicalSpaceUnits.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (Units.val.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))
+Case conversion may be inaccurate. Consider using '#align units.open_embedding_coe Units.openEmbedding_valₓ'. -/
/-- In a normed ring, the coercion from `Rˣ` (equipped with the induced topology from the
embedding in `R × R`) to `R` is an open embedding. -/
-theorem openEmbedding_coe : OpenEmbedding (coe : Rˣ → R) :=
- openEmbedding_of_continuous_injective_open continuous_val ext isOpenMap_coe
-#align units.open_embedding_coe Units.openEmbedding_coe
+theorem openEmbedding_val : OpenEmbedding (coe : Rˣ → R) :=
+ openEmbedding_of_continuous_injective_open continuous_val ext isOpenMap_val
+#align units.open_embedding_coe Units.openEmbedding_val
end Units
namespace Ideal
+/- warning: ideal.eq_top_of_norm_lt_one -> Ideal.eq_top_of_norm_lt_one is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) {x : R}, (Membership.Mem.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (SetLike.hasMem.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x I) -> (LT.lt.{0} Real Real.hasLt (Norm.norm.{u1} R (NormedRing.toHasNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (SubNegMonoid.toHasSub.{u1} R (AddGroup.toSubNegMonoid.{u1} R (NormedAddGroup.toAddGroup.{u1} R (NormedAddCommGroup.toNormedAddGroup.{u1} R (NonUnitalNormedRing.toNormedAddCommGroup.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))))))) (OfNat.ofNat.{u1} R 1 (OfNat.mk.{u1} R 1 (One.one.{u1} R (AddMonoidWithOne.toOne.{u1} R (AddGroupWithOne.toAddMonoidWithOne.{u1} R (AddCommGroupWithOne.toAddGroupWithOne.{u1} R (Ring.toAddCommGroupWithOne.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))))) x)) (OfNat.ofNat.{0} Real 1 (OfNat.mk.{0} Real 1 (One.one.{0} Real Real.hasOne)))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) {x : R}, (Membership.mem.{u1, u1} R (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (SetLike.instMembership.{u1, u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) R (Submodule.setLike.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x I) -> (LT.lt.{0} Real Real.instLTReal (Norm.norm.{u1} R (NormedRing.toNorm.{u1} R _inst_1) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R (Ring.toSub.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (OfNat.ofNat.{u1} R 1 (One.toOfNat1.{u1} R (Semiring.toOne.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) x)) (OfNat.ofNat.{0} Real 1 (One.toOfNat1.{0} Real Real.instOneReal))) -> (Eq.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
+Case conversion may be inaccurate. Consider using '#align ideal.eq_top_of_norm_lt_one Ideal.eq_top_of_norm_lt_oneₓ'. -/
/-- An ideal which contains an element within `1` of `1 : R` is the unit ideal. -/
theorem eq_top_of_norm_lt_one (I : Ideal R) {x : R} (hxI : x ∈ I) (hx : ‖1 - x‖ < 1) : I = ⊤ :=
let u := Units.oneSub (1 - x) hx
I.eq_top_iff_one.mpr <| by simpa only [show u.inv * x = 1 by simp] using I.mul_mem_left u.inv hxI
#align ideal.eq_top_of_norm_lt_one Ideal.eq_top_of_norm_lt_one
+/- warning: ideal.closure_ne_top -> Ideal.closure_ne_top is a dubious translation:
+lean 3 declaration is
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) -> (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ideal.closure.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (NormedRing.toRing.{u1} R _inst_1) (semi_normed_top_ring.{u1} R (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))) I) (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.hasTop.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
+but is expected to have type
+ forall {R : Type.{u1}} [_inst_1 : NormedRing.{u1} R] [_inst_2 : CompleteSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))] (I : Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))), (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) I (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)))))) -> (Ne.{succ u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Ideal.closure.{u1} R (UniformSpace.toTopologicalSpace.{u1} R (PseudoMetricSpace.toUniformSpace.{u1} R (SeminormedRing.toPseudoMetricSpace.{u1} R (NormedRing.toSeminormedRing.{u1} R _inst_1)))) (NormedRing.toRing.{u1} R _inst_1) (semi_normed_top_ring.{u1} R (NonUnitalNormedRing.toNonUnitalSeminormedRing.{u1} R (NormedRing.toNonUnitalNormedRing.{u1} R _inst_1))) I) (Top.top.{u1} (Ideal.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))) (Submodule.instTopSubmodule.{u1, u1} R R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R (NormedRing.toRing.{u1} R _inst_1))))))
+Case conversion may be inaccurate. Consider using '#align ideal.closure_ne_top Ideal.closure_ne_topₓ'. -/
/-- The `ideal.closure` of a proper ideal in a complete normed ring is proper. -/
theorem closure_ne_top (I : Ideal R) (hI : I ≠ ⊤) : I.closure ≠ ⊤ :=
by
@@ -355,15 +481,19 @@ theorem closure_ne_top (I : Ideal R) (hI : I ≠ ⊤) : I.closure ≠ ⊤ :=
simpa only [I.closure.eq_top_iff_one, Ne.def] using mt (@h 1) one_not_mem_nonunits
#align ideal.closure_ne_top Ideal.closure_ne_top
+#print Ideal.IsMaximal.closure_eq /-
/-- The `ideal.closure` of a maximal ideal in a complete normed ring is the ideal itself. -/
theorem IsMaximal.closure_eq {I : Ideal R} (hI : I.IsMaximal) : I.closure = I :=
(hI.eq_of_le (I.closure_ne_top hI.ne_top) subset_closure).symm
#align ideal.is_maximal.closure_eq Ideal.IsMaximal.closure_eq
+-/
+#print Ideal.IsMaximal.isClosed /-
/-- Maximal ideals in complete normed rings are closed. -/
instance IsMaximal.isClosed {I : Ideal R} [hI : I.IsMaximal] : IsClosed (I : Set R) :=
isClosed_of_closure_subset <| Eq.subset <| congr_arg (coe : Ideal R → Set R) hI.closure_eq
#align ideal.is_maximal.is_closed Ideal.IsMaximal.isClosed
+-/
end Ideal
mathlib commit https://github.com/leanprover-community/mathlib/commit/039ef89bef6e58b32b62898dd48e9d1a4312bb65
@@ -292,7 +292,8 @@ theorem inverse_add_norm_diff_second_order (x : Rˣ) :
theorem inverse_continuousAt (x : Rˣ) : ContinuousAt inverse (x : R) :=
by
have h_is_o : (fun t : R => inverse (↑x + t) - ↑x⁻¹) =o[𝓝 0] (fun _ => 1 : R → ℝ) :=
- (inverse_add_norm_diff_first_order x).trans_isOCat (is_o.norm_left <| is_o_id_const one_ne_zero)
+ (inverse_add_norm_diff_first_order x).trans_isLittleO
+ (is_o.norm_left <| is_o_id_const one_ne_zero)
have h_lim : tendsto (fun y : R => y - x) (𝓝 x) (𝓝 0) :=
by
refine' tendsto_zero_iff_norm_tendsto_zero.mpr _
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -179,7 +179,7 @@ theorem inverse_add_nth_order (x : Rˣ) (n : ℕ) :
refine' (inverse_add x).mp _
have hzero : tendsto (fun t : R => -↑x⁻¹ * t) (𝓝 0) (𝓝 0) :=
by
- convert ((mulLeft_continuous (-(↑x⁻¹ : R))).Tendsto 0).comp tendsto_id
+ convert((mulLeft_continuous (-(↑x⁻¹ : R))).Tendsto 0).comp tendsto_id
simp
refine' (hzero.eventually (inverse_one_sub_nth_order n)).mp (eventually_of_forall _)
simp only [neg_mul, sub_neg_eq_add]
@@ -219,7 +219,7 @@ theorem inverse_add_norm (x : Rˣ) : (fun t : R => inverse (↑x + t)) =O[𝓝 0
use C * ‖((x⁻¹ : Rˣ) : R)‖
have hzero : tendsto (fun t => -(↑x⁻¹ : R) * t) (𝓝 0) (𝓝 0) :=
by
- convert ((mulLeft_continuous (-↑x⁻¹ : R)).Tendsto 0).comp tendsto_id
+ convert((mulLeft_continuous (-↑x⁻¹ : R)).Tendsto 0).comp tendsto_id
simp
refine' (inverse_add x).mp ((hzero.eventually hC).mp (eventually_of_forall _))
intro t bound iden
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -4,10 +4,11 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth
! This file was ported from Lean 3 source module analysis.normed_space.units
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
+import Mathbin.Topology.Algebra.Ring.Ideal
import Mathbin.Analysis.SpecificLimits.Normed
/-!
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -64,7 +64,7 @@ def add (x : Rˣ) (t : R) (h : ‖t‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
have hpos : 0 < ‖(↑x⁻¹ : R)‖ := Units.norm_pos x⁻¹
calc
‖-(↑x⁻¹ * t)‖ = ‖↑x⁻¹ * t‖ := by rw [norm_neg]
- _ ≤ ‖(↑x⁻¹ : R)‖ * ‖t‖ := norm_mul_le ↑x⁻¹ _
+ _ ≤ ‖(↑x⁻¹ : R)‖ * ‖t‖ := (norm_mul_le ↑x⁻¹ _)
_ < ‖(↑x⁻¹ : R)‖ * ‖(↑x⁻¹ : R)‖⁻¹ := by nlinarith only [h, hpos]
_ = 1 := mul_inv_cancel (ne_of_gt hpos)
))
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -256,7 +256,7 @@ theorem eq_top_of_norm_lt_one (I : Ideal R) {x : R} (hxI : x ∈ I) (hx : ‖1 -
/-- The `Ideal.closure` of a proper ideal in a complete normed ring is proper. -/
theorem closure_ne_top (I : Ideal R) (hI : I ≠ ⊤) : I.closure ≠ ⊤ := by
have h := closure_minimal (coe_subset_nonunits hI) nonunits.isClosed
- simpa only [I.closure.eq_top_iff_one, Ne.def] using mt (@h 1) one_not_mem_nonunits
+ simpa only [I.closure.eq_top_iff_one, Ne] using mt (@h 1) one_not_mem_nonunits
#align ideal.closure_ne_top Ideal.closure_ne_top
/-- The `Ideal.closure` of a maximal ideal in a complete normed ring is the ideal itself. -/
mul
-div
cancellation lemmas (#11530)
Lemma names around cancellation of multiplication and division are a mess.
This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero
lemma name, the Group
lemma, the AddGroup
lemma name).
| Statement | New name | Old name | |
@@ -191,7 +191,7 @@ theorem inverse_add_norm_diff_nth_order (x : Rˣ) (n : ℕ) :
(fun t : R => inverse (↑x + t) - (∑ i in range n, (-↑x⁻¹ * t) ^ i) * ↑x⁻¹) =O[𝓝 (0 : R)]
fun t => ‖t‖ ^ n := by
refine EventuallyEq.trans_isBigO (.sub (inverse_add_nth_order x n) (.refl _ _)) ?_
- simp only [add_sub_cancel']
+ simp only [add_sub_cancel_left]
refine ((isBigO_refl _ _).norm_right.mul (inverse_add_norm x)).trans ?_
simp only [mul_one, isBigO_norm_left]
exact ((isBigO_refl _ _).norm_right.const_mul_left _).pow _
apply foo.mpr
by rw [foo]
(#11515)
Sometimes, that line can be golfed into the next line. Inspired by a comment of @loefflerd; any decisions are my own.
@@ -76,7 +76,7 @@ def ofNearby (x : Rˣ) (y : R) (h : ‖y - x‖ < ‖(↑x⁻¹ : R)‖⁻¹) :
/-- The group of units of a complete normed ring is an open subset of the ring. -/
protected theorem isOpen : IsOpen { x : R | IsUnit x } := by
nontriviality R
- apply Metric.isOpen_iff.mpr
+ rw [Metric.isOpen_iff]
rintro _ ⟨x, rfl⟩
refine' ⟨‖(↑x⁻¹ : R)‖⁻¹, _root_.inv_pos.mpr (Units.norm_pos x⁻¹), fun y hy ↦ _⟩
rw [mem_ball_iff_norm] at hy
All these lemmas refer to the range of some function being open/range (i.e. isOpen
or isClosed
).
@@ -233,7 +233,7 @@ embedding in `R × R`) to `R` is an open embedding. -/
theorem openEmbedding_val : OpenEmbedding (val : Rˣ → R) where
toEmbedding := embedding_val_mk'
(fun _ ⟨u, hu⟩ ↦ hu ▸ (inverse_continuousAt u).continuousWithinAt) Ring.inverse_unit
- open_range := Units.isOpen
+ isOpen_range := Units.isOpen
#align units.open_embedding_coe Units.openEmbedding_val
/-- In a normed ring, the coercion from `Rˣ` (equipped with the induced topology from the
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -106,7 +106,8 @@ end nonunits
namespace NormedRing
-open Classical BigOperators
+open scoped Classical
+open BigOperators
open Asymptotics Filter Metric Finset Ring
@@ -248,7 +248,8 @@ namespace Ideal
/-- An ideal which contains an element within `1` of `1 : R` is the unit ideal. -/
theorem eq_top_of_norm_lt_one (I : Ideal R) {x : R} (hxI : x ∈ I) (hx : ‖1 - x‖ < 1) : I = ⊤ :=
let u := Units.oneSub (1 - x) hx
- I.eq_top_iff_one.mpr <| by simpa only [show u.inv * x = 1 by simp] using I.mul_mem_left u.inv hxI
+ I.eq_top_iff_one.mpr <| by
+ simpa only [show u.inv * x = 1 by simp [u]] using I.mul_mem_left u.inv hxI
#align ideal.eq_top_of_norm_lt_one Ideal.eq_top_of_norm_lt_one
/-- The `Ideal.closure` of a proper ideal in a complete normed ring is proper. -/
@@ -128,7 +128,7 @@ theorem inverse_add (x : Rˣ) :
theorem inverse_one_sub_nth_order' (n : ℕ) {t : R} (ht : ‖t‖ < 1) :
inverse ((1 : R) - t) = (∑ i in range n, t ^ i) + t ^ n * inverse (1 - t) :=
- have := NormedRing.summable_geometric_of_norm_lt_1 t ht
+ have := NormedRing.summable_geometric_of_norm_lt_one t ht
calc inverse (1 - t) = ∑' i : ℕ, t ^ i := inverse_one_sub t ht
_ = ∑ i in range n, t ^ i + ∑' i : ℕ, t ^ (i + n) := (sum_add_tsum_nat_add _ this).symm
_ = (∑ i in range n, t ^ i) + t ^ n * inverse (1 - t) := by
@@ -165,7 +165,7 @@ theorem inverse_one_sub_norm : (fun t : R => inverse (1 - t)) =O[𝓝 0] (fun _t
linarith
simp only [inverse_one_sub t ht', norm_one, mul_one, Set.mem_setOf_eq]
change ‖∑' n : ℕ, t ^ n‖ ≤ _
- have := NormedRing.tsum_geometric_of_norm_lt_1 t ht'
+ have := NormedRing.tsum_geometric_of_norm_lt_one t ht'
have : (1 - ‖t‖)⁻¹ ≤ 2 := by
rw [← inv_inv (2 : ℝ)]
refine' inv_le_inv_of_le (by norm_num) _
Rename:
tendsto_iff_norm_tendsto_one
→
tendsto_iff_norm_div_tendsto_zero
;tendsto_iff_norm_tendsto_zero
→
tendsto_iff_norm_sub_tendsto_zero
;tendsto_one_iff_norm_tendsto_one
→
tendsto_one_iff_norm_tendsto_zero
;Filter.Tendsto.continuous_of_equicontinuous_at
→
Filter.Tendsto.continuous_of_equicontinuousAt
.@@ -216,8 +216,8 @@ theorem inverse_continuousAt (x : Rˣ) : ContinuousAt inverse (x : R) := by
(inverse_add_norm_diff_first_order x).trans_isLittleO (isLittleO_id_const one_ne_zero).norm_left
have h_lim : Tendsto (fun y : R => y - x) (𝓝 x) (𝓝 0) := by
refine' tendsto_zero_iff_norm_tendsto_zero.mpr _
- exact tendsto_iff_norm_tendsto_zero.mp tendsto_id
- rw [ContinuousAt, tendsto_iff_norm_tendsto_zero, inverse_unit]
+ exact tendsto_iff_norm_sub_tendsto_zero.mp tendsto_id
+ rw [ContinuousAt, tendsto_iff_norm_sub_tendsto_zero, inverse_unit]
simpa [(· ∘ ·)] using h_is_o.norm_left.tendsto_div_nhds_zero.comp h_lim
#align normed_ring.inverse_continuous_at NormedRing.inverse_continuousAt
@@ -46,7 +46,7 @@ def oneSub (t : R) (h : ‖t‖ < 1) : Rˣ where
val_inv := mul_neg_geom_series t h
inv_val := geom_series_mul_neg t h
#align units.one_sub Units.oneSub
-#align units.coe_one_sub Units.oneSub_val
+#align units.coe_one_sub Units.val_oneSub
/-- In a complete normed ring, a perturbation of a unit `x` by an element `t` of distance less than
`‖x⁻¹‖⁻¹` from `x` is a unit. Here we construct its `Units` structure. -/
@@ -63,7 +63,7 @@ def add (x : Rˣ) (t : R) (h : ‖t‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
_ = 1 := mul_inv_cancel (ne_of_gt hpos)))
(x + t) (by simp [mul_add]) _ rfl
#align units.add Units.add
-#align units.coe_add Units.add_val
+#align units.coe_add Units.val_add
/-- In a complete normed ring, an element `y` of distance less than `‖x⁻¹‖⁻¹` from `x` is a unit.
Here we construct its `Units` structure. -/
@@ -71,7 +71,7 @@ Here we construct its `Units` structure. -/
def ofNearby (x : Rˣ) (y : R) (h : ‖y - x‖ < ‖(↑x⁻¹ : R)‖⁻¹) : Rˣ :=
(x.add (y - x : R) h).copy y (by simp) _ rfl
#align units.unit_of_nearby Units.ofNearby
-#align units.coe_unit_of_nearby Units.ofNearby_val
+#align units.coe_unit_of_nearby Units.val_ofNearby
/-- The group of units of a complete normed ring is an open subset of the ring. -/
protected theorem isOpen : IsOpen { x : R | IsUnit x } := by
@@ -111,7 +111,7 @@ open Classical BigOperators
open Asymptotics Filter Metric Finset Ring
theorem inverse_one_sub (t : R) (h : ‖t‖ < 1) : inverse (1 - t) = ↑(Units.oneSub t h)⁻¹ := by
- rw [← inverse_unit (Units.oneSub t h), Units.oneSub_val]
+ rw [← inverse_unit (Units.oneSub t h), Units.val_oneSub]
#align normed_ring.inverse_one_sub NormedRing.inverse_one_sub
/-- The formula `Ring.inverse (x + t) = Ring.inverse (1 + x⁻¹ * t) * x⁻¹` holds for `t` sufficiently
@@ -122,8 +122,8 @@ theorem inverse_add (x : Rˣ) :
rw [Metric.eventually_nhds_iff]
refine ⟨‖(↑x⁻¹ : R)‖⁻¹, by cancel_denoms, fun t ht ↦ ?_⟩
rw [dist_zero_right] at ht
- rw [← x.add_val t ht, inverse_unit, Units.add, Units.copy_eq, mul_inv_rev, Units.val_mul,
- ← inverse_unit, Units.oneSub_val, sub_neg_eq_add]
+ rw [← x.val_add t ht, inverse_unit, Units.add, Units.copy_eq, mul_inv_rev, Units.val_mul,
+ ← inverse_unit, Units.val_oneSub, sub_neg_eq_add]
#align normed_ring.inverse_add NormedRing.inverse_add
theorem inverse_one_sub_nth_order' (n : ℕ) {t : R} (ht : ‖t‖ < 1) :
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -33,7 +33,7 @@ noncomputable section
open Topology
-variable {R : Type _} [NormedRing R] [CompleteSpace R]
+variable {R : Type*} [NormedRing R] [CompleteSpace R]
namespace Units
@@ -2,15 +2,12 @@
Copyright (c) 2020 Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Heather Macbeth
-
-! This file was ported from Lean 3 source module analysis.normed_space.units
-! leanprover-community/mathlib commit 9a59dcb7a2d06bf55da57b9030169219980660cd
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Algebra.Ring.Ideal
import Mathlib.Analysis.SpecificLimits.Normed
+#align_import analysis.normed_space.units from "leanprover-community/mathlib"@"9a59dcb7a2d06bf55da57b9030169219980660cd"
+
/-!
# The group of units of a complete normed ring
@@ -96,7 +96,7 @@ namespace nonunits
/-- The `nonunits` in a complete normed ring are contained in the complement of the ball of radius
`1` centered at `1 : R`. -/
-theorem subset_compl_ball : nonunits R ⊆ Metric.ball (1 : R) 1ᶜ := fun x hx h₁ ↦ hx <|
+theorem subset_compl_ball : nonunits R ⊆ (Metric.ball (1 : R) 1)ᶜ := fun x hx h₁ ↦ hx <|
sub_sub_self 1 x ▸ (Units.oneSub (1 - x) (by rwa [mem_ball_iff_norm'] at h₁)).isUnit
#align nonunits.subset_compl_ball nonunits.subset_compl_ball
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file