topology.uniform_space.absolute_value ⟷ Mathlib.Topology.UniformSpace.AbsoluteValue

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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)

refactor(topology/*): add uniform_space.of_fun, use it (#18495)
  • Fix simps config for absolute_value.
  • Define uniform_space.of_fun and use it for absolute_value.uniform_space, pseudo_emetric_space, and pseudo_metric_space.
  • Add filter.tendsto_infi_infi and filter.tendsto_supr_supr.
  • Rename pseudo_metric_space.of_metrizable and metric_space.of_metrizable to *.of_dist_topology.
  • Add metric.to_uniform_space_eq and metric.uniformity_basis_dist_rat.
  • Migrate topology.uniform_space.absolute_value to bundled absolute_value.
Diff
@@ -33,46 +33,21 @@ absolute value, uniform spaces
 -/
 
 open set function filter uniform_space
-open_locale filter
+open_locale filter topology
 
-namespace is_absolute_value
-variables {π•œ : Type*} [linear_ordered_field π•œ]
-variables {R : Type*} [comm_ring R] (abv : R β†’ π•œ) [is_absolute_value abv]
+namespace absolute_value
 
-/-- The uniformity coming from an absolute value. -/
-def uniform_space_core : uniform_space.core R :=
-{ uniformity := (β¨… Ξ΅>0, π“Ÿ {p:RΓ—R | abv (p.2 - p.1) < Ξ΅}),
-  refl := le_infi $ assume Ξ΅, le_infi $ assume Ξ΅_pos, principal_mono.2
-    (λ ⟨x, y⟩ h, by simpa [show x = y, from h, abv_zero abv]),
-  symm := tendsto_infi.2 $ assume Ξ΅, tendsto_infi.2 $ assume h,
-    tendsto_infi' Ρ $ tendsto_infi' h $ tendsto_principal_principal.2 $ λ ⟨x, y⟩ h,
-      have h : abv (y - x) < Ξ΅, by simpa [-sub_eq_add_neg] using h,
-      by rwa abv_sub abv at h,
-  comp := le_infi $ assume Ξ΅, le_infi $ assume h, lift'_le
-    (mem_infi_of_mem (Ξ΅ / 2) $ mem_infi_of_mem (div_pos h zero_lt_two) (subset.refl _)) $
-    have βˆ€ (a b c : R), abv (c-a) < Ξ΅ / 2 β†’ abv (b-c) < Ξ΅ / 2 β†’ abv (b-a) < Ξ΅,
-      from assume a b c hac hcb,
-       calc abv (b - a) ≀ _ : abv_sub_le abv b c a
-        ... = abv (c - a) + abv (b - c) : add_comm _ _
-        ... < Ξ΅ / 2 + Ξ΅ / 2 : add_lt_add hac hcb
-        ... = Ξ΅ : by rw [div_add_div_same, add_self_div_two],
-    by simpa [comp_rel] }
+variables {π•œ : Type*} [linear_ordered_field π•œ]
+variables {R : Type*} [comm_ring R] (abv : absolute_value R π•œ)
 
-/-- The uniform structure coming from an absolute value. -/
-def uniform_space : uniform_space R :=
-uniform_space.of_core (uniform_space_core abv)
+/-- The uniform space structure coming from an absolute value. -/
+protected def uniform_space : uniform_space R :=
+uniform_space.of_fun (Ξ» x y, abv (y - x)) (by simp) (Ξ» x y, abv.map_sub y x)
+  (Ξ» x y z, (abv.sub_le _ _ _).trans_eq (add_comm _ _)) $
+  Ξ» Ξ΅ Ξ΅0, ⟨Ρ / 2, half_pos Ξ΅0, Ξ» _ h₁ _ hβ‚‚, (add_lt_add h₁ hβ‚‚).trans_eq (add_halves Ξ΅)⟩
 
-theorem mem_uniformity {s : set (RΓ—R)} :
-  s ∈ (uniform_space_core abv).uniformity ↔
-  (βˆƒΞ΅>0, βˆ€{a b:R}, abv (b - a) < Ξ΅ β†’ (a, b) ∈ s) :=
-begin
-  suffices : s ∈ (β¨… Ξ΅: {Ξ΅ : π•œ // Ξ΅ > 0}, π“Ÿ {p:RΓ—R | abv (p.2 - p.1) < Ξ΅.val}) ↔ _,
-  { rw infi_subtype at this,
-    exact this },
-  rw mem_infi_of_directed,
-  { simp [subset_def] },
-  { rintros ⟨r, hr⟩ ⟨p, hp⟩,
-    exact ⟨⟨min r p, lt_min hr hp⟩, by simp [lt_min_iff, (β‰₯)] {contextual := tt}⟩, },
-end
+theorem has_basis_uniformity :
+  𝓀[abv.uniform_space].has_basis (Ξ» Ξ΅ : π•œ, 0 < Ξ΅) (Ξ» Ξ΅, {p : R Γ— R | abv (p.2 - p.1) < Ξ΅}) :=
+uniform_space.has_basis_of_fun (exists_gt _) _ _ _ _ _
 
-end is_absolute_value
+end absolute_value

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2019 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
 -/
-import Mathbin.Algebra.Order.AbsoluteValue
-import Mathbin.Topology.UniformSpace.Basic
+import Algebra.Order.AbsoluteValue
+import Topology.UniformSpace.Basic
 
 #align_import topology.uniform_space.absolute_value from "leanprover-community/mathlib"@"e1a7bdeb4fd826b7e71d130d34988f0a2d26a177"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2019 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
-
-! This file was ported from Lean 3 source module topology.uniform_space.absolute_value
-! leanprover-community/mathlib commit e1a7bdeb4fd826b7e71d130d34988f0a2d26a177
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Order.AbsoluteValue
 import Mathbin.Topology.UniformSpace.Basic
 
+#align_import topology.uniform_space.absolute_value from "leanprover-community/mathlib"@"e1a7bdeb4fd826b7e71d130d34988f0a2d26a177"
+
 /-!
 # Uniform structure induced by an absolute value
 
Diff
@@ -57,10 +57,12 @@ protected def uniformSpace : UniformSpace R :=
 #align absolute_value.uniform_space AbsoluteValue.uniformSpace
 -/
 
+#print AbsoluteValue.hasBasis_uniformity /-
 theorem hasBasis_uniformity :
     𝓀[abv.UniformSpace].HasBasis (fun Ξ΅ : π•œ => 0 < Ξ΅) fun Ξ΅ => {p : R Γ— R | abv (p.2 - p.1) < Ξ΅} :=
   UniformSpace.hasBasis_ofFun (exists_gt _) _ _ _ _ _
 #align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformity
+-/
 
 end AbsoluteValue
 
Diff
@@ -58,8 +58,7 @@ protected def uniformSpace : UniformSpace R :=
 -/
 
 theorem hasBasis_uniformity :
-    𝓀[abv.UniformSpace].HasBasis (fun Ξ΅ : π•œ => 0 < Ξ΅) fun Ξ΅ =>
-      { p : R Γ— R | abv (p.2 - p.1) < Ξ΅ } :=
+    𝓀[abv.UniformSpace].HasBasis (fun Ξ΅ : π•œ => 0 < Ξ΅) fun Ξ΅ => {p : R Γ— R | abv (p.2 - p.1) < Ξ΅} :=
   UniformSpace.hasBasis_ofFun (exists_gt _) _ _ _ _ _
 #align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformity
 
Diff
@@ -40,7 +40,7 @@ absolute value, uniform spaces
 
 open Set Function Filter UniformSpace
 
-open Filter Topology
+open scoped Filter Topology
 
 namespace AbsoluteValue
 
Diff
@@ -57,12 +57,6 @@ protected def uniformSpace : UniformSpace R :=
 #align absolute_value.uniform_space AbsoluteValue.uniformSpace
 -/
 
-/- warning: absolute_value.has_basis_uniformity -> AbsoluteValue.hasBasis_uniformity is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toHasLt.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toHasLt.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
-but is expected to have type
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
-Case conversion may be inaccurate. Consider using '#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformityβ‚“'. -/
 theorem hasBasis_uniformity :
     𝓀[abv.UniformSpace].HasBasis (fun Ξ΅ : π•œ => 0 < Ξ΅) fun Ξ΅ =>
       { p : R Γ— R | abv (p.2 - p.1) < Ξ΅ } :=
Diff
@@ -59,7 +59,7 @@ protected def uniformSpace : UniformSpace R :=
 
 /- warning: absolute_value.has_basis_uniformity -> AbsoluteValue.hasBasis_uniformity is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
+  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toHasLt.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toHasLt.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 but is expected to have type
   forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 Case conversion may be inaccurate. Consider using '#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformityβ‚“'. -/
Diff
@@ -61,7 +61,7 @@ protected def uniformSpace : UniformSpace R :=
 lean 3 declaration is
   forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 but is expected to have type
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
+  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 Case conversion may be inaccurate. Consider using '#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformityβ‚“'. -/
 theorem hasBasis_uniformity :
     𝓀[abv.UniformSpace].HasBasis (fun Ξ΅ : π•œ => 0 < Ξ΅) fun Ξ΅ =>
Diff
@@ -59,7 +59,7 @@ protected def uniformSpace : UniformSpace R :=
 
 /- warning: absolute_value.has_basis_uniformity -> AbsoluteValue.hasBasis_uniformity is a dubious translation:
 lean 3 declaration is
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (NonAssocRing.toAddGroupWithOne.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
+  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 but is expected to have type
   forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 Case conversion may be inaccurate. Consider using '#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformityβ‚“'. -/
Diff
@@ -61,7 +61,7 @@ protected def uniformSpace : UniformSpace R :=
 lean 3 declaration is
   forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (NonAssocRing.toAddGroupWithOne.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 but is expected to have type
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
+  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.99 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
 Case conversion may be inaccurate. Consider using '#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformityβ‚“'. -/
 theorem hasBasis_uniformity :
     𝓀[abv.UniformSpace].HasBasis (fun Ξ΅ : π•œ => 0 < Ξ΅) fun Ξ΅ =>
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
 
 ! This file was ported from Lean 3 source module topology.uniform_space.absolute_value
-! leanprover-community/mathlib commit 0a0ec35061ed9960bf0e7ffb0335f44447b58977
+! leanprover-community/mathlib commit e1a7bdeb4fd826b7e71d130d34988f0a2d26a177
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -40,66 +40,34 @@ absolute value, uniform spaces
 
 open Set Function Filter UniformSpace
 
-open Filter
+open Filter Topology
 
-namespace IsAbsoluteValue
+namespace AbsoluteValue
 
 variable {π•œ : Type _} [LinearOrderedField π•œ]
 
-variable {R : Type _} [CommRing R] (abv : R β†’ π•œ) [IsAbsoluteValue abv]
-
-/-- The uniformity coming from an absolute value. -/
-def uniformSpaceCore : UniformSpace.Core R
-    where
-  uniformity := β¨… Ξ΅ > 0, π“Ÿ { p : R Γ— R | abv (p.2 - p.1) < Ξ΅ }
-  refl :=
-    le_infα΅’ fun Ξ΅ =>
-      le_infα΅’ fun Ξ΅_pos =>
-        principal_mono.2 fun ⟨x, y⟩ h => by simpa [show x = y from h, abv_zero abv]
-  symm :=
-    tendsto_infα΅’.2 fun Ξ΅ =>
-      tendsto_infα΅’.2 fun h =>
-        tendsto_infα΅’' Ξ΅ <|
-          tendsto_infα΅’' h <|
-            tendsto_principal_principal.2 fun ⟨x, y⟩ h =>
-              by
-              have h : abv (y - x) < Ξ΅ := by simpa [-sub_eq_add_neg] using h
-              rwa [abv_sub abv] at h
-  comp :=
-    le_infα΅’ fun Ξ΅ =>
-      le_infα΅’ fun h =>
-        lift'_le
-            (mem_infα΅’_of_mem (Ξ΅ / 2) <| mem_infα΅’_of_mem (div_pos h zero_lt_two) (Subset.refl _)) <|
-          by
-          have : βˆ€ a b c : R, abv (c - a) < Ξ΅ / 2 β†’ abv (b - c) < Ξ΅ / 2 β†’ abv (b - a) < Ξ΅ :=
-            fun a b c hac hcb =>
-            calc
-              abv (b - a) ≀ _ := abv_sub_le abv b c a
-              _ = abv (c - a) + abv (b - c) := add_comm _ _
-              _ < Ξ΅ / 2 + Ξ΅ / 2 := add_lt_add hac hcb
-              _ = Ξ΅ := by rw [div_add_div_same, add_self_div_two]
-              
-          simpa [compRel]
-#align is_absolute_value.uniform_space_core IsAbsoluteValue.uniformSpaceCore
-
-/-- The uniform structure coming from an absolute value. -/
-def uniformSpace : UniformSpace R :=
-  UniformSpace.ofCore (uniformSpaceCore abv)
-#align is_absolute_value.uniform_space IsAbsoluteValue.uniformSpace
-
-theorem mem_uniformity {s : Set (R Γ— R)} :
-    s ∈ (uniformSpaceCore abv).uniformity ↔ βˆƒ Ξ΅ > 0, βˆ€ {a b : R}, abv (b - a) < Ξ΅ β†’ (a, b) ∈ s :=
-  by
-  suffices (s ∈ β¨… Ξ΅ : { Ξ΅ : π•œ // Ξ΅ > 0 }, π“Ÿ { p : R Γ— R | abv (p.2 - p.1) < Ξ΅.val }) ↔ _
-    by
-    rw [infα΅’_subtype] at this
-    exact this
-  rw [mem_infi_of_directed]
-  Β· simp [subset_def]
-  · rintro ⟨r, hr⟩ ⟨p, hp⟩
-    exact
-      ⟨⟨min r p, lt_min hr hp⟩, by simp (config := { contextual := true }) [lt_min_iff, (Β· β‰₯ Β·)]⟩
-#align is_absolute_value.mem_uniformity IsAbsoluteValue.mem_uniformity
-
-end IsAbsoluteValue
+variable {R : Type _} [CommRing R] (abv : AbsoluteValue R π•œ)
+
+#print AbsoluteValue.uniformSpace /-
+/-- The uniform space structure coming from an absolute value. -/
+protected def uniformSpace : UniformSpace R :=
+  UniformSpace.ofFun (fun x y => abv (y - x)) (by simp) (fun x y => abv.map_sub y x)
+    (fun x y z => (abv.sub_le _ _ _).trans_eq (add_comm _ _)) fun Ξ΅ Ξ΅0 =>
+    ⟨Ρ / 2, half_pos Ξ΅0, fun _ h₁ _ hβ‚‚ => (add_lt_add h₁ hβ‚‚).trans_eq (add_halves Ξ΅)⟩
+#align absolute_value.uniform_space AbsoluteValue.uniformSpace
+-/
+
+/- warning: absolute_value.has_basis_uniformity -> AbsoluteValue.hasBasis_uniformity is a dubious translation:
+lean 3 declaration is
+  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (fun (f : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) => R -> π•œ) (AbsoluteValue.hasCoeToFun.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (NonAssocRing.toAddGroupWithOne.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
+but is expected to have type
+  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))), Filter.HasBasis.{u2, succ u1} (Prod.{u2, u2} R R) π•œ (uniformity.{u2} R (AbsoluteValue.uniformSpace.{u1, u2} π•œ _inst_1 R _inst_2 abv)) (fun (Ξ΅ : π•œ) => LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) Ξ΅) (fun (Ξ΅ : π•œ) => setOf.{u2} (Prod.{u2, u2} R R) (fun (p : Prod.{u2, u2} R R) => LT.lt.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (Preorder.toLT.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (PartialOrder.toPreorder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (StrictOrderedRing.toPartialOrder.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedRing.toStrictOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedCommRing.toLinearOrderedRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) (LinearOrderedField.toLinearOrderedCommRing.{u1} ((fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) _inst_1)))))) (FunLike.coe.{max (succ u1) (succ u2), succ u2, succ u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R (fun (f : R) => (fun (x._@.Mathlib.Algebra.Order.Hom.Basic._hyg.98 : R) => π•œ) f) (SubadditiveHomClass.toFunLike.{max u1 u2, u2, u1} (AbsoluteValue.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))) R π•œ (Distrib.toAdd.{u2} R (NonUnitalNonAssocSemiring.toDistrib.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (Distrib.toAdd.{u1} π•œ (NonUnitalNonAssocSemiring.toDistrib.{u1} π•œ (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} π•œ (Semiring.toNonAssocSemiring.{u1} π•œ (OrderedSemiring.toSemiring.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))))) (Preorder.toLE.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedSemiring.toPartialOrder.{u1} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (AbsoluteValue.subadditiveHomClass.{u2, u1} R π•œ (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))))) abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Prod.snd.{u2, u2} R R p) (Prod.fst.{u2, u2} R R p))) Ξ΅))
+Case conversion may be inaccurate. Consider using '#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformityβ‚“'. -/
+theorem hasBasis_uniformity :
+    𝓀[abv.UniformSpace].HasBasis (fun Ξ΅ : π•œ => 0 < Ξ΅) fun Ξ΅ =>
+      { p : R Γ— R | abv (p.2 - p.1) < Ξ΅ } :=
+  UniformSpace.hasBasis_ofFun (exists_gt _) _ _ _ _ _
+#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformity
+
+end AbsoluteValue
 
Diff
@@ -48,7 +48,6 @@ variable {π•œ : Type _} [LinearOrderedField π•œ]
 
 variable {R : Type _} [CommRing R] (abv : R β†’ π•œ) [IsAbsoluteValue abv]
 
-#print IsAbsoluteValue.uniformSpaceCore /-
 /-- The uniformity coming from an absolute value. -/
 def uniformSpaceCore : UniformSpace.Core R
     where
@@ -82,21 +81,12 @@ def uniformSpaceCore : UniformSpace.Core R
               
           simpa [compRel]
 #align is_absolute_value.uniform_space_core IsAbsoluteValue.uniformSpaceCore
--/
 
-#print IsAbsoluteValue.uniformSpace /-
 /-- The uniform structure coming from an absolute value. -/
 def uniformSpace : UniformSpace R :=
   UniformSpace.ofCore (uniformSpaceCore abv)
 #align is_absolute_value.uniform_space IsAbsoluteValue.uniformSpace
--/
 
-/- warning: is_absolute_value.mem_uniformity -> IsAbsoluteValue.mem_uniformity is a dubious translation:
-lean 3 declaration is
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : R -> π•œ) [_inst_3 : IsAbsoluteValue.{u1, u2} π•œ (StrictOrderedSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedRing.toStrictOrderedSemiring.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))) R (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) abv] {s : Set.{u2} (Prod.{u2, u2} R R)}, Iff (Membership.Mem.{u2, u2} (Set.{u2} (Prod.{u2, u2} R R)) (Filter.{u2} (Prod.{u2, u2} R R)) (Filter.hasMem.{u2} (Prod.{u2, u2} R R)) s (UniformSpace.Core.uniformity.{u2} R (IsAbsoluteValue.uniformSpaceCore.{u1, u2} π•œ _inst_1 R _inst_2 abv _inst_3))) (Exists.{succ u1} π•œ (fun (Ξ΅ : π•œ) => Exists.{0} (GT.gt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) Ξ΅ (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))))))) (fun (H : GT.gt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) Ξ΅ (OfNat.ofNat.{u1} π•œ 0 (OfNat.mk.{u1} π•œ 0 (Zero.zero.{u1} π•œ (MulZeroClass.toHasZero.{u1} π•œ (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} π•œ (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} π•œ (NonAssocRing.toNonUnitalNonAssocRing.{u1} π•œ (Ring.toNonAssocRing.{u1} π•œ (StrictOrderedRing.toRing.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))))))))) => forall {a : R} {b : R}, (LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (OrderedAddCommGroup.toPartialOrder.{u1} π•œ (StrictOrderedRing.toOrderedAddCommGroup.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1))))))) (abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (SubNegMonoid.toHasSub.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (NonAssocRing.toAddGroupWithOne.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) b a)) Ξ΅) -> (Membership.Mem.{u2, u2} (Prod.{u2, u2} R R) (Set.{u2} (Prod.{u2, u2} R R)) (Set.hasMem.{u2} (Prod.{u2, u2} R R)) (Prod.mk.{u2, u2} R R a b) s))))
-but is expected to have type
-  forall {π•œ : Type.{u1}} [_inst_1 : LinearOrderedField.{u1} π•œ] {R : Type.{u2}} [_inst_2 : CommRing.{u2} R] (abv : R -> π•œ) [_inst_3 : IsAbsoluteValue.{u1, u2} π•œ (OrderedCommSemiring.toOrderedSemiring.{u1} π•œ (StrictOrderedCommSemiring.toOrderedCommSemiring.{u1} π•œ (LinearOrderedCommSemiring.toStrictOrderedCommSemiring.{u1} π•œ (LinearOrderedSemifield.toLinearOrderedCommSemiring.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1))))) R (Ring.toSemiring.{u2} R (CommRing.toRing.{u2} R _inst_2)) abv] {s : Set.{u2} (Prod.{u2, u2} R R)}, Iff (Membership.mem.{u2, u2} (Set.{u2} (Prod.{u2, u2} R R)) (Filter.{u2} (Prod.{u2, u2} R R)) (instMembershipSetFilter.{u2} (Prod.{u2, u2} R R)) s (UniformSpace.Core.uniformity.{u2} R (IsAbsoluteValue.uniformSpaceCore.{u1, u2} π•œ _inst_1 R _inst_2 abv _inst_3))) (Exists.{succ u1} π•œ (fun (Ξ΅ : π•œ) => And (GT.gt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) Ξ΅ (OfNat.ofNat.{u1} π•œ 0 (Zero.toOfNat0.{u1} π•œ (CommMonoidWithZero.toZero.{u1} π•œ (CommGroupWithZero.toCommMonoidWithZero.{u1} π•œ (Semifield.toCommGroupWithZero.{u1} π•œ (LinearOrderedSemifield.toSemifield.{u1} π•œ (LinearOrderedField.toLinearOrderedSemifield.{u1} π•œ _inst_1)))))))) (forall {a : R} {b : R}, (LT.lt.{u1} π•œ (Preorder.toLT.{u1} π•œ (PartialOrder.toPreorder.{u1} π•œ (StrictOrderedRing.toPartialOrder.{u1} π•œ (LinearOrderedRing.toStrictOrderedRing.{u1} π•œ (LinearOrderedCommRing.toLinearOrderedRing.{u1} π•œ (LinearOrderedField.toLinearOrderedCommRing.{u1} π•œ _inst_1)))))) (abv (HSub.hSub.{u2, u2, u2} R R R (instHSub.{u2} R (Ring.toSub.{u2} R (CommRing.toRing.{u2} R _inst_2))) b a)) Ξ΅) -> (Membership.mem.{u2, u2} (Prod.{u2, u2} R R) (Set.{u2} (Prod.{u2, u2} R R)) (Set.instMembershipSet.{u2} (Prod.{u2, u2} R R)) (Prod.mk.{u2, u2} R R a b) s))))
-Case conversion may be inaccurate. Consider using '#align is_absolute_value.mem_uniformity IsAbsoluteValue.mem_uniformityβ‚“'. -/
 theorem mem_uniformity {s : Set (R Γ— R)} :
     s ∈ (uniformSpaceCore abv).uniformity ↔ βˆƒ Ξ΅ > 0, βˆ€ {a b : R}, abv (b - a) < Ξ΅ β†’ (a, b) ∈ s :=
   by

Changes in mathlib4

mathlib3
mathlib4
chore: Move basic ordered field lemmas (#11503)

These lemmas are needed to define the semifield structure on NNRat, hence I am repurposing Algebra.Order.Field.Defs from avoiding a timeout (which I believe was solved long ago) to avoiding to import random stuff in the definition of the semifield structure on NNRat (although this PR doesn't actually reduce imports there, it will be in a later PR).

Reduce the diff of #11203

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
 -/
 import Mathlib.Algebra.Order.AbsoluteValue
+import Mathlib.Algebra.Order.Field.Basic
 import Mathlib.Topology.UniformSpace.Basic
 
 #align_import topology.uniform_space.absolute_value from "leanprover-community/mathlib"@"e1a7bdeb4fd826b7e71d130d34988f0a2d26a177"
chore: move all UniformSpace-related notations in scope Uniformity (#6565)

Currently we have Uniformity.term𝓀 but Topology.Β«term𝓀[_]Β», which is really confusing.

Diff
@@ -25,7 +25,7 @@ follows exactly the same path.
 absolute value, uniform spaces
 -/
 
-open Set Function Filter Topology
+open Set Function Filter Uniformity
 
 namespace AbsoluteValue
 
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -29,8 +29,8 @@ open Set Function Filter Topology
 
 namespace AbsoluteValue
 
-variable {π•œ : Type _} [LinearOrderedField π•œ]
-variable {R : Type _} [CommRing R] (abv : AbsoluteValue R π•œ)
+variable {π•œ : Type*} [LinearOrderedField π•œ]
+variable {R : Type*} [CommRing R] (abv : AbsoluteValue R π•œ)
 
 /-- The uniform structure coming from an absolute value. -/
 def uniformSpace : UniformSpace R :=
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2019 Patrick Massot. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
-
-! This file was ported from Lean 3 source module topology.uniform_space.absolute_value
-! leanprover-community/mathlib commit e1a7bdeb4fd826b7e71d130d34988f0a2d26a177
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Order.AbsoluteValue
 import Mathlib.Topology.UniformSpace.Basic
 
+#align_import topology.uniform_space.absolute_value from "leanprover-community/mathlib"@"e1a7bdeb4fd826b7e71d130d34988f0a2d26a177"
+
 /-!
 # Uniform structure induced by an absolute value
 
feat: define UniformSpace.ofFun (#2511)

Forward-port leanprover-community/mathlib#18495

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Patrick Massot
 
 ! This file was ported from Lean 3 source module topology.uniform_space.absolute_value
-! leanprover-community/mathlib commit 2705404e701abc6b3127da906f40bae062a169c9
+! leanprover-community/mathlib commit e1a7bdeb4fd826b7e71d130d34988f0a2d26a177
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -28,59 +28,23 @@ follows exactly the same path.
 absolute value, uniform spaces
 -/
 
+open Set Function Filter Topology
 
-open Set Function Filter UniformSpace
-
-open Filter
-
-namespace IsAbsoluteValue
+namespace AbsoluteValue
 
 variable {π•œ : Type _} [LinearOrderedField π•œ]
-
-variable {R : Type _} [CommRing R] (abv : R β†’ π•œ) [IsAbsoluteValue abv]
-
-/-- The uniformity coming from an absolute value. -/
-def uniformSpaceCore : UniformSpace.Core R
-    where
-  uniformity := β¨… Ξ΅ > 0, π“Ÿ { p : R Γ— R | abv (p.2 - p.1) < Ξ΅ }
-  refl := le_infα΅’ fun Ξ΅ => le_infα΅’ fun Ξ΅_pos =>
-    principal_mono.2 fun ⟨x, y⟩ h => by have : x = y := (mem_idRel.1 h); simpa [abv_zero, this]
-  symm := tendsto_infα΅’.2 fun Ξ΅ => tendsto_infα΅’.2 fun h =>
-    tendsto_infᡒ' Ρ <| tendsto_infᡒ' h <| tendsto_principal_principal.2 fun ⟨x, y⟩ h => by
-      have h : abv (y - x) < Ξ΅ := by simpa using h
-      rwa [abv_sub abv] at h
-  comp := le_infα΅’ fun Ξ΅ => le_infα΅’ fun h => lift'_le (mem_infα΅’_of_mem (Ξ΅ / 2) <|
-    mem_infα΅’_of_mem (div_pos h zero_lt_two) (Subset.refl _)) <| by
-      have : βˆ€ a b c : R, abv (c - a) < Ξ΅ / 2 β†’ abv (b - c) < Ξ΅ / 2 β†’ abv (b - a) < Ξ΅ :=
-        fun a b c hac hcb =>
-        calc
-          abv (b - a) ≀ _ := abv_sub_le abv b c a
-          _ = abv (c - a) + abv (b - c) := add_comm _ _
-          _ < Ξ΅ / 2 + Ξ΅ / 2 := add_lt_add hac hcb
-          _ = Ξ΅ := by rw [div_add_div_same, add_self_div_two]
-
-      simpa [compRel]
-#align is_absolute_value.uniform_space_core IsAbsoluteValue.uniformSpaceCore
+variable {R : Type _} [CommRing R] (abv : AbsoluteValue R π•œ)
 
 /-- The uniform structure coming from an absolute value. -/
 def uniformSpace : UniformSpace R :=
-  UniformSpace.ofCore (uniformSpaceCore abv)
-#align is_absolute_value.uniform_space IsAbsoluteValue.uniformSpace
-
--- Porting note: changed `Ξ΅ > 0` to `0 < Ξ΅`
--- Porting note: because lean faied to synthesize `Nonempty { Ξ΅ // Ξ΅ > 0 }`, but ok with 0 < Ξ΅
+  .ofFun (fun x y => abv (y - x)) (by simp) (fun x y => abv.map_sub y x)
+    (fun x y z => (abv.sub_le _ _ _).trans_eq (add_comm _ _))
+    fun Ξ΅ Ξ΅0 => ⟨Ρ / 2, half_pos Ξ΅0, fun _ h₁ _ hβ‚‚ => (add_lt_add h₁ hβ‚‚).trans_eq (add_halves Ξ΅)⟩
+#align absolute_value.uniform_space AbsoluteValue.uniformSpace
 
-theorem mem_uniformity {s : Set (R Γ— R)} :
-    s ∈ (uniformSpaceCore abv).uniformity ↔ βˆƒ Ξ΅ > 0, βˆ€ {a b : R}, abv (b - a) < Ξ΅ β†’ (a, b) ∈ s := by
-  suffices (s ∈ β¨… Ξ΅ : { Ξ΅ : π•œ // 0 < Ξ΅ }, π“Ÿ { p : R Γ— R | abv (p.2 - p.1) < Ξ΅.val }) ↔ _
-    by
-    rw [infα΅’_subtype] at this
-    exact this
-  rw [mem_infα΅’_of_directed]
-  Β· simp [subset_def]
-  · rintro ⟨r, hr⟩ ⟨p, hp⟩
-    exact
-      ⟨⟨min r p, lt_min hr hp⟩, by simp (config := { contextual := true })⟩
-#align is_absolute_value.mem_uniformity IsAbsoluteValue.mem_uniformity
+theorem hasBasis_uniformity :
+    𝓀[abv.uniformSpace].HasBasis ((0 : π•œ) < Β·) fun Ξ΅ => { p : R Γ— R | abv (p.2 - p.1) < Ξ΅ } :=
+  UniformSpace.hasBasis_ofFun (exists_gt _) _ _ _ _ _
+#align absolute_value.has_basis_uniformity AbsoluteValue.hasBasis_uniformity
 
-end IsAbsoluteValue
+end AbsoluteValue
feat: Port Topology.UniformSpace.AbsoluteValue (#2044)

Co-authored-by: Adam Topaz <github@adamtopaz.com>

Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 8 + 305

306 files ported (97.5%)
130701 lines ported (96.3%)
Show graph

The unported dependencies are