topology.metric_space.metric_separated
⟷
Mathlib.Topology.MetricSpace.MetricSeparated
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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}
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -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. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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' :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/62e8311c791f02c47451bf14aa2501048e7c2f33
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -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) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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 coreNat.decidableBallLT
and Nat.decidableBallLE
: defined in Lean corebef_def
is still used in a number of places and could be renamedBAll.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>
@@ -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
Later I'm going to split files like Lipschitz
into 2: one in EMetricSpace/
and one in MetricSpace/
.
@@ -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"
@@ -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
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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
@@ -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
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
@@ -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)
sSup
/iSup
(#3938)
As discussed on Zulip
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>
@@ -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
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
init.data.list.default
algebra.order.monoid.cancel.basic
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file