topology.metric_space.metric_separatedMathlib.Topology.MetricSpace.MetricSeparated

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
-import Topology.MetricSpace.EmetricSpace
+import Topology.EMetricSpace.Basic
 
 #align_import topology.metric_space.metric_separated from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
 
@@ -25,7 +25,7 @@ open Emetric Set
 
 noncomputable section
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (r «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (r «expr ≠ » 0) -/
 #print IsMetricSeparated /-
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
-import Mathbin.Topology.MetricSpace.EmetricSpace
+import Topology.MetricSpace.EmetricSpace
 
 #align_import topology.metric_space.metric_separated from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
 
@@ -25,7 +25,7 @@ open Emetric Set
 
 noncomputable section
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (r «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (r «expr ≠ » 0) -/
 #print IsMetricSeparated /-
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
Diff
@@ -145,7 +145,7 @@ theorem finite_iUnion_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : 
 #align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_iUnion_left_iff
 -/
 
-alias finite_Union_left_iff ↔ _ finite_Union_left
+alias ⟨_, finite_Union_left⟩ := finite_Union_left_iff
 #align is_metric_separated.finite_Union_left IsMetricSeparated.finite_iUnion_left
 
 #print IsMetricSeparated.finite_iUnion_right_iff /-
@@ -163,7 +163,7 @@ theorem finset_iUnion_left_iff {ι : Type _} {I : Finset ι} {s : ι → Set X}
 #align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_iUnion_left_iff
 -/
 
-alias finset_Union_left_iff ↔ _ finset_Union_left
+alias ⟨_, finset_Union_left⟩ := finset_Union_left_iff
 #align is_metric_separated.finset_Union_left IsMetricSeparated.finset_iUnion_left
 
 #print IsMetricSeparated.finset_iUnion_right_iff /-
@@ -174,7 +174,7 @@ theorem finset_iUnion_right_iff {ι : Type _} {I : Finset ι} {s : Set X} {t : 
 #align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_iUnion_right_iff
 -/
 
-alias finset_Union_right_iff ↔ _ finset_Union_right
+alias ⟨_, finset_Union_right⟩ := finset_Union_right_iff
 #align is_metric_separated.finset_Union_right IsMetricSeparated.finset_iUnion_right
 
 end IsMetricSeparated
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module topology.metric_space.metric_separated
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Topology.MetricSpace.EmetricSpace
 
+#align_import topology.metric_space.metric_separated from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
 /-!
 # Metric separated pairs of sets
 
@@ -28,7 +25,7 @@ open Emetric Set
 
 noncomputable section
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (r «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (r «expr ≠ » 0) -/
 #print IsMetricSeparated /-
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
Diff
@@ -69,14 +69,18 @@ theorem empty_right (s : Set X) : IsMetricSeparated s ∅ :=
 #align is_metric_separated.empty_right IsMetricSeparated.empty_right
 -/
 
+#print IsMetricSeparated.disjoint /-
 protected theorem disjoint (h : IsMetricSeparated s t) : Disjoint s t :=
   let ⟨r, r0, hr⟩ := h
   Set.disjoint_left.mpr fun x hx1 hx2 => r0 <| by simpa using hr x hx1 x hx2
 #align is_metric_separated.disjoint IsMetricSeparated.disjoint
+-/
 
+#print IsMetricSeparated.subset_compl_right /-
 theorem subset_compl_right (h : IsMetricSeparated s t) : s ⊆ tᶜ := fun x hs ht =>
   h.Disjoint.le_bot ⟨hs, ht⟩
 #align is_metric_separated.subset_compl_right IsMetricSeparated.subset_compl_right
+-/
 
 #print IsMetricSeparated.mono /-
 @[mono]
@@ -98,6 +102,7 @@ theorem mono_right {t'} (h' : IsMetricSeparated s t') (ht : t ⊆ t') : IsMetric
 #align is_metric_separated.mono_right IsMetricSeparated.mono_right
 -/
 
+#print IsMetricSeparated.union_left /-
 theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t) :
     IsMetricSeparated (s ∪ s') t :=
   by
@@ -108,24 +113,31 @@ theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t
   · exact fun hx => (min_le_left _ _).trans (hr _ hx _ hy)
   · exact fun hx => (min_le_right _ _).trans (hr' _ hx _ hy)
 #align is_metric_separated.union_left IsMetricSeparated.union_left
+-/
 
+#print IsMetricSeparated.union_left_iff /-
 @[simp]
 theorem union_left_iff {s'} :
     IsMetricSeparated (s ∪ s') t ↔ IsMetricSeparated s t ∧ IsMetricSeparated s' t :=
   ⟨fun h => ⟨h.mono_left (subset_union_left _ _), h.mono_left (subset_union_right _ _)⟩, fun h =>
     h.1.union_left h.2⟩
 #align is_metric_separated.union_left_iff IsMetricSeparated.union_left_iff
+-/
 
+#print IsMetricSeparated.union_right /-
 theorem union_right {t'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s t') :
     IsMetricSeparated s (t ∪ t') :=
   (h.symm.union_left h'.symm).symm
 #align is_metric_separated.union_right IsMetricSeparated.union_right
+-/
 
+#print IsMetricSeparated.union_right_iff /-
 @[simp]
 theorem union_right_iff {t'} :
     IsMetricSeparated s (t ∪ t') ↔ IsMetricSeparated s t ∧ IsMetricSeparated s t' :=
   comm.trans <| union_left_iff.trans <| and_congr comm comm
 #align is_metric_separated.union_right_iff IsMetricSeparated.union_right_iff
+-/
 
 #print IsMetricSeparated.finite_iUnion_left_iff /-
 theorem finite_iUnion_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
Diff
@@ -28,7 +28,7 @@ open Emetric Set
 
 noncomputable section
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (r «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (r «expr ≠ » 0) -/
 #print IsMetricSeparated /-
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
Diff
@@ -33,7 +33,7 @@ noncomputable section
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
 def IsMetricSeparated {X : Type _} [EMetricSpace X] (s t : Set X) :=
-  ∃ (r : _)(_ : r ≠ 0), ∀ x ∈ s, ∀ y ∈ t, r ≤ edist x y
+  ∃ (r : _) (_ : r ≠ 0), ∀ x ∈ s, ∀ y ∈ t, r ≤ edist x y
 #align is_metric_separated IsMetricSeparated
 -/
 
@@ -103,7 +103,7 @@ theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t
   by
   rcases h, h' with ⟨⟨r, r0, hr⟩, ⟨r', r0', hr'⟩⟩
   refine' ⟨min r r', _, fun x hx y hy => hx.elim _ _⟩
-  · rw [← pos_iff_ne_zero] at r0 r0'⊢
+  · rw [← pos_iff_ne_zero] at r0 r0' ⊢
     exact lt_min r0 r0'
   · exact fun hx => (min_le_left _ _).trans (hr _ hx _ hy)
   · exact fun hx => (min_le_right _ _).trans (hr' _ hx _ hy)
Diff
@@ -69,23 +69,11 @@ theorem empty_right (s : Set X) : IsMetricSeparated s ∅ :=
 #align is_metric_separated.empty_right IsMetricSeparated.empty_right
 -/
 
-/- warning: is_metric_separated.disjoint -> IsMetricSeparated.disjoint is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (Disjoint.{u1} (Set.{u1} X) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} X) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.completeBooleanAlgebra.{u1} X)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} X) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} X) (Set.booleanAlgebra.{u1} X))) s t)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (Disjoint.{u1} (Set.{u1} X) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} X) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.instCompleteBooleanAlgebraSet.{u1} X)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} X) (Preorder.toLE.{u1} (Set.{u1} X) (PartialOrder.toPreorder.{u1} (Set.{u1} X) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} X) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.instCompleteBooleanAlgebraSet.{u1} X)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.instCompleteBooleanAlgebraSet.{u1} X)))))) s t)
-Case conversion may be inaccurate. Consider using '#align is_metric_separated.disjoint IsMetricSeparated.disjointₓ'. -/
 protected theorem disjoint (h : IsMetricSeparated s t) : Disjoint s t :=
   let ⟨r, r0, hr⟩ := h
   Set.disjoint_left.mpr fun x hx1 hx2 => r0 <| by simpa using hr x hx1 x hx2
 #align is_metric_separated.disjoint IsMetricSeparated.disjoint
 
-/- warning: is_metric_separated.subset_compl_right -> IsMetricSeparated.subset_compl_right is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (HasSubset.Subset.{u1} (Set.{u1} X) (Set.hasSubset.{u1} X) s (HasCompl.compl.{u1} (Set.{u1} X) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} X) (Set.booleanAlgebra.{u1} X)) t))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) s (HasCompl.compl.{u1} (Set.{u1} X) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} X) (Set.instBooleanAlgebraSet.{u1} X)) t))
-Case conversion may be inaccurate. Consider using '#align is_metric_separated.subset_compl_right IsMetricSeparated.subset_compl_rightₓ'. -/
 theorem subset_compl_right (h : IsMetricSeparated s t) : s ⊆ tᶜ := fun x hs ht =>
   h.Disjoint.le_bot ⟨hs, ht⟩
 #align is_metric_separated.subset_compl_right IsMetricSeparated.subset_compl_right
@@ -110,12 +98,6 @@ theorem mono_right {t'} (h' : IsMetricSeparated s t') (ht : t ⊆ t') : IsMetric
 #align is_metric_separated.mono_right IsMetricSeparated.mono_right
 -/
 
-/- warning: is_metric_separated.union_left -> IsMetricSeparated.union_left is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s' t) -> (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) s s') t)
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s' t) -> (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) s s') t)
-Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_left IsMetricSeparated.union_leftₓ'. -/
 theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t) :
     IsMetricSeparated (s ∪ s') t :=
   by
@@ -127,12 +109,6 @@ theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t
   · exact fun hx => (min_le_right _ _).trans (hr' _ hx _ hy)
 #align is_metric_separated.union_left IsMetricSeparated.union_left
 
-/- warning: is_metric_separated.union_left_iff -> IsMetricSeparated.union_left_iff is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) s s') t) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s' t))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) s s') t) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s' t))
-Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_left_iff IsMetricSeparated.union_left_iffₓ'. -/
 @[simp]
 theorem union_left_iff {s'} :
     IsMetricSeparated (s ∪ s') t ↔ IsMetricSeparated s t ∧ IsMetricSeparated s' t :=
@@ -140,23 +116,11 @@ theorem union_left_iff {s'} :
     h.1.union_left h.2⟩
 #align is_metric_separated.union_left_iff IsMetricSeparated.union_left_iff
 
-/- warning: is_metric_separated.union_right -> IsMetricSeparated.union_right is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s t') -> (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) t t'))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s t') -> (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) t t'))
-Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_right IsMetricSeparated.union_rightₓ'. -/
 theorem union_right {t'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s t') :
     IsMetricSeparated s (t ∪ t') :=
   (h.symm.union_left h'.symm).symm
 #align is_metric_separated.union_right IsMetricSeparated.union_right
 
-/- warning: is_metric_separated.union_right_iff -> IsMetricSeparated.union_right_iff is a dubious translation:
-lean 3 declaration is
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) t t')) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s t'))
-but is expected to have type
-  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) t t')) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s t'))
-Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_right_iff IsMetricSeparated.union_right_iffₓ'. -/
 @[simp]
 theorem union_right_iff {t'} :
     IsMetricSeparated s (t ∪ t') ↔ IsMetricSeparated s t ∧ IsMetricSeparated s t' :=
Diff
@@ -163,46 +163,46 @@ theorem union_right_iff {t'} :
   comm.trans <| union_left_iff.trans <| and_congr comm comm
 #align is_metric_separated.union_right_iff IsMetricSeparated.union_right_iff
 
-#print IsMetricSeparated.finite_unionᵢ_left_iff /-
-theorem finite_unionᵢ_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
+#print IsMetricSeparated.finite_iUnion_left_iff /-
+theorem finite_iUnion_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
     {t : Set X} : IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t :=
   by
   refine' finite.induction_on hI (by simp) fun i I hi _ hI => _
   rw [bUnion_insert, ball_insert_iff, union_left_iff, hI]
-#align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_unionᵢ_left_iff
+#align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_iUnion_left_iff
 -/
 
 alias finite_Union_left_iff ↔ _ finite_Union_left
-#align is_metric_separated.finite_Union_left IsMetricSeparated.finite_unionᵢ_left
+#align is_metric_separated.finite_Union_left IsMetricSeparated.finite_iUnion_left
 
-#print IsMetricSeparated.finite_unionᵢ_right_iff /-
-theorem finite_unionᵢ_right_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : Set X}
+#print IsMetricSeparated.finite_iUnion_right_iff /-
+theorem finite_iUnion_right_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : Set X}
     {t : ι → Set X} : IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) := by
   simpa only [@comm _ _ s] using finite_Union_left_iff hI
-#align is_metric_separated.finite_Union_right_iff IsMetricSeparated.finite_unionᵢ_right_iff
+#align is_metric_separated.finite_Union_right_iff IsMetricSeparated.finite_iUnion_right_iff
 -/
 
-#print IsMetricSeparated.finset_unionᵢ_left_iff /-
+#print IsMetricSeparated.finset_iUnion_left_iff /-
 @[simp]
-theorem finset_unionᵢ_left_iff {ι : Type _} {I : Finset ι} {s : ι → Set X} {t : Set X} :
+theorem finset_iUnion_left_iff {ι : Type _} {I : Finset ι} {s : ι → Set X} {t : Set X} :
     IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t :=
-  finite_unionᵢ_left_iff I.finite_toSet
-#align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_unionᵢ_left_iff
+  finite_iUnion_left_iff I.finite_toSet
+#align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_iUnion_left_iff
 -/
 
 alias finset_Union_left_iff ↔ _ finset_Union_left
-#align is_metric_separated.finset_Union_left IsMetricSeparated.finset_unionᵢ_left
+#align is_metric_separated.finset_Union_left IsMetricSeparated.finset_iUnion_left
 
-#print IsMetricSeparated.finset_unionᵢ_right_iff /-
+#print IsMetricSeparated.finset_iUnion_right_iff /-
 @[simp]
-theorem finset_unionᵢ_right_iff {ι : Type _} {I : Finset ι} {s : Set X} {t : ι → Set X} :
+theorem finset_iUnion_right_iff {ι : Type _} {I : Finset ι} {s : Set X} {t : ι → Set X} :
     IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) :=
-  finite_unionᵢ_right_iff I.finite_toSet
-#align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_unionᵢ_right_iff
+  finite_iUnion_right_iff I.finite_toSet
+#align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_iUnion_right_iff
 -/
 
 alias finset_Union_right_iff ↔ _ finset_Union_right
-#align is_metric_separated.finset_Union_right IsMetricSeparated.finset_unionᵢ_right
+#align is_metric_separated.finset_Union_right IsMetricSeparated.finset_iUnion_right
 
 end IsMetricSeparated
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 
 ! This file was ported from Lean 3 source module topology.metric_space.metric_separated
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.Topology.MetricSpace.EmetricSpace
 /-!
 # Metric separated pairs of sets
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file we define the predicate `is_metric_separated`. We say that two sets in an (extended)
 metric space are *metric separated* if the (extended) distance between `x ∈ s` and `y ∈ t` is
 bounded from below by a positive constant.
Diff
@@ -26,59 +26,93 @@ open Emetric Set
 noncomputable section
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (r «expr ≠ » 0) -/
+#print IsMetricSeparated /-
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
 def IsMetricSeparated {X : Type _} [EMetricSpace X] (s t : Set X) :=
   ∃ (r : _)(_ : r ≠ 0), ∀ x ∈ s, ∀ y ∈ t, r ≤ edist x y
 #align is_metric_separated IsMetricSeparated
+-/
 
 namespace IsMetricSeparated
 
 variable {X : Type _} [EMetricSpace X] {s t : Set X} {x y : X}
 
+#print IsMetricSeparated.symm /-
 @[symm]
 theorem symm (h : IsMetricSeparated s t) : IsMetricSeparated t s :=
   let ⟨r, r0, hr⟩ := h
   ⟨r, r0, fun y hy x hx => edist_comm x y ▸ hr x hx y hy⟩
 #align is_metric_separated.symm IsMetricSeparated.symm
+-/
 
+#print IsMetricSeparated.comm /-
 theorem comm : IsMetricSeparated s t ↔ IsMetricSeparated t s :=
   ⟨symm, symm⟩
 #align is_metric_separated.comm IsMetricSeparated.comm
+-/
 
+#print IsMetricSeparated.empty_left /-
 @[simp]
 theorem empty_left (s : Set X) : IsMetricSeparated ∅ s :=
   ⟨1, one_ne_zero, fun x => False.elim⟩
 #align is_metric_separated.empty_left IsMetricSeparated.empty_left
+-/
 
+#print IsMetricSeparated.empty_right /-
 @[simp]
 theorem empty_right (s : Set X) : IsMetricSeparated s ∅ :=
   (empty_left s).symm
 #align is_metric_separated.empty_right IsMetricSeparated.empty_right
+-/
 
+/- warning: is_metric_separated.disjoint -> IsMetricSeparated.disjoint is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (Disjoint.{u1} (Set.{u1} X) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} X) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.completeBooleanAlgebra.{u1} X)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} X) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} X) (Set.booleanAlgebra.{u1} X))) s t)
+but is expected to have type
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (Disjoint.{u1} (Set.{u1} X) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} X) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.instCompleteBooleanAlgebraSet.{u1} X)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} X) (Preorder.toLE.{u1} (Set.{u1} X) (PartialOrder.toPreorder.{u1} (Set.{u1} X) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} X) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.instCompleteBooleanAlgebraSet.{u1} X)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} X) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} X) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} X) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} X) (Set.instCompleteBooleanAlgebraSet.{u1} X)))))) s t)
+Case conversion may be inaccurate. Consider using '#align is_metric_separated.disjoint IsMetricSeparated.disjointₓ'. -/
 protected theorem disjoint (h : IsMetricSeparated s t) : Disjoint s t :=
   let ⟨r, r0, hr⟩ := h
   Set.disjoint_left.mpr fun x hx1 hx2 => r0 <| by simpa using hr x hx1 x hx2
 #align is_metric_separated.disjoint IsMetricSeparated.disjoint
 
+/- warning: is_metric_separated.subset_compl_right -> IsMetricSeparated.subset_compl_right is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (HasSubset.Subset.{u1} (Set.{u1} X) (Set.hasSubset.{u1} X) s (HasCompl.compl.{u1} (Set.{u1} X) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} X) (Set.booleanAlgebra.{u1} X)) t))
+but is expected to have type
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) s (HasCompl.compl.{u1} (Set.{u1} X) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} X) (Set.instBooleanAlgebraSet.{u1} X)) t))
+Case conversion may be inaccurate. Consider using '#align is_metric_separated.subset_compl_right IsMetricSeparated.subset_compl_rightₓ'. -/
 theorem subset_compl_right (h : IsMetricSeparated s t) : s ⊆ tᶜ := fun x hs ht =>
   h.Disjoint.le_bot ⟨hs, ht⟩
 #align is_metric_separated.subset_compl_right IsMetricSeparated.subset_compl_right
 
+#print IsMetricSeparated.mono /-
 @[mono]
 theorem mono {s' t'} (hs : s ⊆ s') (ht : t ⊆ t') :
     IsMetricSeparated s' t' → IsMetricSeparated s t := fun ⟨r, r0, hr⟩ =>
   ⟨r, r0, fun x hx y hy => hr x (hs hx) y (ht hy)⟩
 #align is_metric_separated.mono IsMetricSeparated.mono
+-/
 
+#print IsMetricSeparated.mono_left /-
 theorem mono_left {s'} (h' : IsMetricSeparated s' t) (hs : s ⊆ s') : IsMetricSeparated s t :=
   h'.mono hs Subset.rfl
 #align is_metric_separated.mono_left IsMetricSeparated.mono_left
+-/
 
+#print IsMetricSeparated.mono_right /-
 theorem mono_right {t'} (h' : IsMetricSeparated s t') (ht : t ⊆ t') : IsMetricSeparated s t :=
   h'.mono Subset.rfl ht
 #align is_metric_separated.mono_right IsMetricSeparated.mono_right
+-/
 
+/- warning: is_metric_separated.union_left -> IsMetricSeparated.union_left is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s' t) -> (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) s s') t)
+but is expected to have type
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s' t) -> (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) s s') t)
+Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_left IsMetricSeparated.union_leftₓ'. -/
 theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t) :
     IsMetricSeparated (s ∪ s') t :=
   by
@@ -90,6 +124,12 @@ theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t
   · exact fun hx => (min_le_right _ _).trans (hr' _ hx _ hy)
 #align is_metric_separated.union_left IsMetricSeparated.union_left
 
+/- warning: is_metric_separated.union_left_iff -> IsMetricSeparated.union_left_iff is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) s s') t) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s' t))
+but is expected to have type
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {s' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) s s') t) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s' t))
+Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_left_iff IsMetricSeparated.union_left_iffₓ'. -/
 @[simp]
 theorem union_left_iff {s'} :
     IsMetricSeparated (s ∪ s') t ↔ IsMetricSeparated s t ∧ IsMetricSeparated s' t :=
@@ -97,46 +137,66 @@ theorem union_left_iff {s'} :
     h.1.union_left h.2⟩
 #align is_metric_separated.union_left_iff IsMetricSeparated.union_left_iff
 
+/- warning: is_metric_separated.union_right -> IsMetricSeparated.union_right is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s t') -> (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) t t'))
+but is expected to have type
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, (IsMetricSeparated.{u1} X _inst_1 s t) -> (IsMetricSeparated.{u1} X _inst_1 s t') -> (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) t t'))
+Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_right IsMetricSeparated.union_rightₓ'. -/
 theorem union_right {t'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s t') :
     IsMetricSeparated s (t ∪ t') :=
   (h.symm.union_left h'.symm).symm
 #align is_metric_separated.union_right IsMetricSeparated.union_right
 
+/- warning: is_metric_separated.union_right_iff -> IsMetricSeparated.union_right_iff is a dubious translation:
+lean 3 declaration is
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.hasUnion.{u1} X) t t')) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s t'))
+but is expected to have type
+  forall {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {s : Set.{u1} X} {t : Set.{u1} X} {t' : Set.{u1} X}, Iff (IsMetricSeparated.{u1} X _inst_1 s (Union.union.{u1} (Set.{u1} X) (Set.instUnionSet.{u1} X) t t')) (And (IsMetricSeparated.{u1} X _inst_1 s t) (IsMetricSeparated.{u1} X _inst_1 s t'))
+Case conversion may be inaccurate. Consider using '#align is_metric_separated.union_right_iff IsMetricSeparated.union_right_iffₓ'. -/
 @[simp]
 theorem union_right_iff {t'} :
     IsMetricSeparated s (t ∪ t') ↔ IsMetricSeparated s t ∧ IsMetricSeparated s t' :=
   comm.trans <| union_left_iff.trans <| and_congr comm comm
 #align is_metric_separated.union_right_iff IsMetricSeparated.union_right_iff
 
+#print IsMetricSeparated.finite_unionᵢ_left_iff /-
 theorem finite_unionᵢ_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
     {t : Set X} : IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t :=
   by
   refine' finite.induction_on hI (by simp) fun i I hi _ hI => _
   rw [bUnion_insert, ball_insert_iff, union_left_iff, hI]
 #align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_unionᵢ_left_iff
+-/
 
 alias finite_Union_left_iff ↔ _ finite_Union_left
 #align is_metric_separated.finite_Union_left IsMetricSeparated.finite_unionᵢ_left
 
+#print IsMetricSeparated.finite_unionᵢ_right_iff /-
 theorem finite_unionᵢ_right_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : Set X}
     {t : ι → Set X} : IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) := by
   simpa only [@comm _ _ s] using finite_Union_left_iff hI
 #align is_metric_separated.finite_Union_right_iff IsMetricSeparated.finite_unionᵢ_right_iff
+-/
 
+#print IsMetricSeparated.finset_unionᵢ_left_iff /-
 @[simp]
 theorem finset_unionᵢ_left_iff {ι : Type _} {I : Finset ι} {s : ι → Set X} {t : Set X} :
     IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t :=
   finite_unionᵢ_left_iff I.finite_toSet
 #align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_unionᵢ_left_iff
+-/
 
 alias finset_Union_left_iff ↔ _ finset_Union_left
 #align is_metric_separated.finset_Union_left IsMetricSeparated.finset_unionᵢ_left
 
+#print IsMetricSeparated.finset_unionᵢ_right_iff /-
 @[simp]
 theorem finset_unionᵢ_right_iff {ι : Type _} {I : Finset ι} {s : Set X} {t : ι → Set X} :
     IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) :=
   finite_unionᵢ_right_iff I.finite_toSet
 #align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_unionᵢ_right_iff
+-/
 
 alias finset_Union_right_iff ↔ _ finset_Union_right
 #align is_metric_separated.finset_Union_right IsMetricSeparated.finset_unionᵢ_right
Diff
@@ -28,13 +28,13 @@ noncomputable section
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (r «expr ≠ » 0) -/
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
-def IsMetricSeparated {X : Type _} [EmetricSpace X] (s t : Set X) :=
+def IsMetricSeparated {X : Type _} [EMetricSpace X] (s t : Set X) :=
   ∃ (r : _)(_ : r ≠ 0), ∀ x ∈ s, ∀ y ∈ t, r ≤ edist x y
 #align is_metric_separated IsMetricSeparated
 
 namespace IsMetricSeparated
 
-variable {X : Type _} [EmetricSpace X] {s t : Set X} {x y : X}
+variable {X : Type _} [EMetricSpace X] {s t : Set X} {x y : X}
 
 @[symm]
 theorem symm (h : IsMetricSeparated s t) : IsMetricSeparated t s :=
Diff
@@ -25,7 +25,7 @@ open Emetric Set
 
 noncomputable section
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (r «expr ≠ » 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (r «expr ≠ » 0) -/
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
 def IsMetricSeparated {X : Type _} [EmetricSpace X] (s t : Set X) :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 
 ! This file was ported from Lean 3 source module topology.metric_space.metric_separated
-! leanprover-community/mathlib commit 6ca1a09bc9aa75824bf97388c9e3b441fc4ccf3f
+! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -48,7 +48,7 @@ theorem comm : IsMetricSeparated s t ↔ IsMetricSeparated t s :=
 
 @[simp]
 theorem empty_left (s : Set X) : IsMetricSeparated ∅ s :=
-  ⟨1, ENNReal.zero_lt_one.ne', fun x => False.elim⟩
+  ⟨1, one_ne_zero, fun x => False.elim⟩
 #align is_metric_separated.empty_left IsMetricSeparated.empty_left
 
 @[simp]
Diff
@@ -48,7 +48,7 @@ theorem comm : IsMetricSeparated s t ↔ IsMetricSeparated t s :=
 
 @[simp]
 theorem empty_left (s : Set X) : IsMetricSeparated ∅ s :=
-  ⟨1, Ennreal.zero_lt_one.ne', fun x => False.elim⟩
+  ⟨1, ENNReal.zero_lt_one.ne', fun x => False.elim⟩
 #align is_metric_separated.empty_left IsMetricSeparated.empty_left
 
 @[simp]

Changes in mathlib4

mathlib3
mathlib4
chore: remove more bex and ball from lemma names (#11615)

Follow-up to #10816.

Remaining places containing such lemmas are

  • Option.bex_ne_none and Option.ball_ne_none: defined in Lean core
  • Nat.decidableBallLT and Nat.decidableBallLE: defined in Lean core
  • bef_def is still used in a number of places and could be renamed
  • BAll.imp_{left,right}, BEx.imp_{left,right}, BEx.intro and BEx.elim

I only audited the first ~150 lemmas mentioning "ball"; too many lemmas named after Metric.ball/openBall/closedBall.

Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -106,7 +106,7 @@ theorem union_right_iff {t'} :
 theorem finite_iUnion_left_iff {ι : Type*} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
     {t : Set X} : IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t := by
   refine' Finite.induction_on hI (by simp) @fun i I _ _ hI => _
-  rw [biUnion_insert, ball_insert_iff, union_left_iff, hI]
+  rw [biUnion_insert, forall_mem_insert, union_left_iff, hI]
 #align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_iUnion_left_iff
 
 alias ⟨_, finite_iUnion_left⟩ := finite_iUnion_left_iff
chore: move 2 files to a new folder (#6853)

Later I'm going to split files like Lipschitz into 2: one in EMetricSpace/ and one in MetricSpace/.

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
-import Mathlib.Topology.MetricSpace.EMetricSpace
+import Mathlib.Topology.EMetricSpace.Basic
 
 #align_import topology.metric_space.metric_separated from "leanprover-community/mathlib"@"57ac39bd365c2f80589a700f9fbb664d3a1a30c2"
 
feat: patch for new alias command (#6172)
Diff
@@ -109,7 +109,7 @@ theorem finite_iUnion_left_iff {ι : Type*} {I : Set ι} (hI : I.Finite) {s : ι
   rw [biUnion_insert, ball_insert_iff, union_left_iff, hI]
 #align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_iUnion_left_iff
 
-alias finite_iUnion_left_iff ↔ _ finite_iUnion_left
+alias ⟨_, finite_iUnion_left⟩ := finite_iUnion_left_iff
 #align is_metric_separated.finite_Union_left IsMetricSeparated.finite_iUnion_left
 
 theorem finite_iUnion_right_iff {ι : Type*} {I : Set ι} (hI : I.Finite) {s : Set X}
@@ -123,7 +123,7 @@ theorem finset_iUnion_left_iff {ι : Type*} {I : Finset ι} {s : ι → Set X} {
   finite_iUnion_left_iff I.finite_toSet
 #align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_iUnion_left_iff
 
-alias finset_iUnion_left_iff ↔ _ finset_iUnion_left
+alias ⟨_, finset_iUnion_left⟩ := finset_iUnion_left_iff
 #align is_metric_separated.finset_Union_left IsMetricSeparated.finset_iUnion_left
 
 @[simp]
@@ -132,7 +132,7 @@ theorem finset_iUnion_right_iff {ι : Type*} {I : Finset ι} {s : Set X} {t : ι
   finite_iUnion_right_iff I.finite_toSet
 #align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_iUnion_right_iff
 
-alias finset_iUnion_right_iff ↔ _ finset_iUnion_right
+alias ⟨_, finset_iUnion_right⟩ := finset_iUnion_right_iff
 #align is_metric_separated.finset_Union_right IsMetricSeparated.finset_iUnion_right
 
 end IsMetricSeparated
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
@@ -24,13 +24,13 @@ noncomputable section
 
 /-- Two sets in an (extended) metric space are called *metric separated* if the (extended) distance
 between `x ∈ s` and `y ∈ t` is bounded from below by a positive constant. -/
-def IsMetricSeparated {X : Type _} [EMetricSpace X] (s t : Set X) :=
+def IsMetricSeparated {X : Type*} [EMetricSpace X] (s t : Set X) :=
   ∃ r, r ≠ 0 ∧ ∀ x ∈ s, ∀ y ∈ t, r ≤ edist x y
 #align is_metric_separated IsMetricSeparated
 
 namespace IsMetricSeparated
 
-variable {X : Type _} [EMetricSpace X] {s t : Set X} {x y : X}
+variable {X : Type*} [EMetricSpace X] {s t : Set X} {x y : X}
 
 @[symm]
 theorem symm (h : IsMetricSeparated s t) : IsMetricSeparated t s :=
@@ -103,7 +103,7 @@ theorem union_right_iff {t'} :
   comm.trans <| union_left_iff.trans <| and_congr comm comm
 #align is_metric_separated.union_right_iff IsMetricSeparated.union_right_iff
 
-theorem finite_iUnion_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
+theorem finite_iUnion_left_iff {ι : Type*} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
     {t : Set X} : IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t := by
   refine' Finite.induction_on hI (by simp) @fun i I _ _ hI => _
   rw [biUnion_insert, ball_insert_iff, union_left_iff, hI]
@@ -112,13 +112,13 @@ theorem finite_iUnion_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : 
 alias finite_iUnion_left_iff ↔ _ finite_iUnion_left
 #align is_metric_separated.finite_Union_left IsMetricSeparated.finite_iUnion_left
 
-theorem finite_iUnion_right_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : Set X}
+theorem finite_iUnion_right_iff {ι : Type*} {I : Set ι} (hI : I.Finite) {s : Set X}
     {t : ι → Set X} : IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) := by
   simpa only [@comm _ _ s] using finite_iUnion_left_iff hI
 #align is_metric_separated.finite_Union_right_iff IsMetricSeparated.finite_iUnion_right_iff
 
 @[simp]
-theorem finset_iUnion_left_iff {ι : Type _} {I : Finset ι} {s : ι → Set X} {t : Set X} :
+theorem finset_iUnion_left_iff {ι : Type*} {I : Finset ι} {s : ι → Set X} {t : Set X} :
     IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t :=
   finite_iUnion_left_iff I.finite_toSet
 #align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_iUnion_left_iff
@@ -127,7 +127,7 @@ alias finset_iUnion_left_iff ↔ _ finset_iUnion_left
 #align is_metric_separated.finset_Union_left IsMetricSeparated.finset_iUnion_left
 
 @[simp]
-theorem finset_iUnion_right_iff {ι : Type _} {I : Finset ι} {s : Set X} {t : ι → Set X} :
+theorem finset_iUnion_right_iff {ι : Type*} {I : Finset ι} {s : Set X} {t : ι → Set X} :
     IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) :=
   finite_iUnion_right_iff I.finite_toSet
 #align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_iUnion_right_iff
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,14 +2,11 @@
 Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module topology.metric_space.metric_separated
-! leanprover-community/mathlib commit 57ac39bd365c2f80589a700f9fbb664d3a1a30c2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Topology.MetricSpace.EMetricSpace
 
+#align_import topology.metric_space.metric_separated from "leanprover-community/mathlib"@"57ac39bd365c2f80589a700f9fbb664d3a1a30c2"
+
 /-!
 # Metric separated pairs of sets
 
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -82,7 +82,7 @@ theorem union_left {s'} (h : IsMetricSeparated s t) (h' : IsMetricSeparated s' t
     IsMetricSeparated (s ∪ s') t := by
   rcases h, h' with ⟨⟨r, r0, hr⟩, ⟨r', r0', hr'⟩⟩
   refine' ⟨min r r', _, fun x hx y hy => hx.elim _ _⟩
-  · rw [← pos_iff_ne_zero] at r0 r0'⊢
+  · rw [← pos_iff_ne_zero] at r0 r0' ⊢
     exact lt_min r0 r0'
   · exact fun hx => (min_le_left _ _).trans (hr _ hx _ hy)
   · exact fun hx => (min_le_right _ _).trans (hr' _ hx _ hy)
chore: Rename to sSup/iSup (#3938)

As discussed on Zulip

Renames

  • supₛsSup
  • infₛsInf
  • supᵢiSup
  • infᵢiInf
  • bsupₛbsSup
  • binfₛbsInf
  • bsupᵢbiSup
  • binfᵢbiInf
  • csupₛcsSup
  • cinfₛcsInf
  • csupᵢciSup
  • cinfᵢciInf
  • unionₛsUnion
  • interₛsInter
  • unionᵢiUnion
  • interᵢiInter
  • bunionₛbsUnion
  • binterₛbsInter
  • bunionᵢbiUnion
  • binterᵢbiInter

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -106,36 +106,36 @@ theorem union_right_iff {t'} :
   comm.trans <| union_left_iff.trans <| and_congr comm comm
 #align is_metric_separated.union_right_iff IsMetricSeparated.union_right_iff
 
-theorem finite_unionᵢ_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
+theorem finite_iUnion_left_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : ι → Set X}
     {t : Set X} : IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t := by
   refine' Finite.induction_on hI (by simp) @fun i I _ _ hI => _
-  rw [bunionᵢ_insert, ball_insert_iff, union_left_iff, hI]
-#align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_unionᵢ_left_iff
+  rw [biUnion_insert, ball_insert_iff, union_left_iff, hI]
+#align is_metric_separated.finite_Union_left_iff IsMetricSeparated.finite_iUnion_left_iff
 
-alias finite_unionᵢ_left_iff ↔ _ finite_unionᵢ_left
-#align is_metric_separated.finite_Union_left IsMetricSeparated.finite_unionᵢ_left
+alias finite_iUnion_left_iff ↔ _ finite_iUnion_left
+#align is_metric_separated.finite_Union_left IsMetricSeparated.finite_iUnion_left
 
-theorem finite_unionᵢ_right_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : Set X}
+theorem finite_iUnion_right_iff {ι : Type _} {I : Set ι} (hI : I.Finite) {s : Set X}
     {t : ι → Set X} : IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) := by
-  simpa only [@comm _ _ s] using finite_unionᵢ_left_iff hI
-#align is_metric_separated.finite_Union_right_iff IsMetricSeparated.finite_unionᵢ_right_iff
+  simpa only [@comm _ _ s] using finite_iUnion_left_iff hI
+#align is_metric_separated.finite_Union_right_iff IsMetricSeparated.finite_iUnion_right_iff
 
 @[simp]
-theorem finset_unionᵢ_left_iff {ι : Type _} {I : Finset ι} {s : ι → Set X} {t : Set X} :
+theorem finset_iUnion_left_iff {ι : Type _} {I : Finset ι} {s : ι → Set X} {t : Set X} :
     IsMetricSeparated (⋃ i ∈ I, s i) t ↔ ∀ i ∈ I, IsMetricSeparated (s i) t :=
-  finite_unionᵢ_left_iff I.finite_toSet
-#align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_unionᵢ_left_iff
+  finite_iUnion_left_iff I.finite_toSet
+#align is_metric_separated.finset_Union_left_iff IsMetricSeparated.finset_iUnion_left_iff
 
-alias finset_unionᵢ_left_iff ↔ _ finset_unionᵢ_left
-#align is_metric_separated.finset_Union_left IsMetricSeparated.finset_unionᵢ_left
+alias finset_iUnion_left_iff ↔ _ finset_iUnion_left
+#align is_metric_separated.finset_Union_left IsMetricSeparated.finset_iUnion_left
 
 @[simp]
-theorem finset_unionᵢ_right_iff {ι : Type _} {I : Finset ι} {s : Set X} {t : ι → Set X} :
+theorem finset_iUnion_right_iff {ι : Type _} {I : Finset ι} {s : Set X} {t : ι → Set X} :
     IsMetricSeparated s (⋃ i ∈ I, t i) ↔ ∀ i ∈ I, IsMetricSeparated s (t i) :=
-  finite_unionᵢ_right_iff I.finite_toSet
-#align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_unionᵢ_right_iff
+  finite_iUnion_right_iff I.finite_toSet
+#align is_metric_separated.finset_Union_right_iff IsMetricSeparated.finset_iUnion_right_iff
 
-alias finset_unionᵢ_right_iff ↔ _ finset_unionᵢ_right
-#align is_metric_separated.finset_Union_right IsMetricSeparated.finset_unionᵢ_right
+alias finset_iUnion_right_iff ↔ _ finset_iUnion_right
+#align is_metric_separated.finset_Union_right IsMetricSeparated.finset_iUnion_right
 
 end IsMetricSeparated
feat: port Topology.MetricSpace.MetricSeparated (#2608)

Co-authored-by: Moritz Firsching <firsching@google.com>

Dependencies 10 + 432

433 files ported (97.7%)
187887 lines ported (97.3%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file