topology.metric_space.partition_of_unity
⟷
Mathlib.Topology.MetricSpace.PartitionOfUnity
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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) 2022 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-/
-import Topology.MetricSpace.EmetricParacompact
+import Topology.EMetricSpace.Paracompact
import Analysis.Convex.PartitionOfUnity
#align_import topology.metric_space.partition_of_unity from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -54,7 +54,7 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
filter_upwards [tendsto_snd (hfin.Inter_compl_mem_nhds hK x),
(eventually_all_finite (hfin.point_finite x)).2 this]
rintro ⟨r, y⟩ hxy hyU i hi
- simp only [mem_Inter₂, mem_compl_iff, not_imp_not, mem_preimage] at hxy
+ simp only [mem_Inter₂, mem_compl_iff, not_imp_not, mem_preimage] at hxy
exact hyU _ (hxy _ hi)
intro i hi
rcases nhds_basis_closed_eball.mem_iff.1 ((hU i).mem_nhds <| hKU i hi) with ⟨R, hR₀, hR⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -112,12 +112,12 @@ theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K
#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subset
-/
-#print EMetric.exists_continuous_nNReal_forall_closedBall_subset /-
+#print EMetric.exists_continuous_nnreal_forall_closedBall_subset /-
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`,
we have `emetric.closed_ball x (δ x) ⊆ U i`. -/
-theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
+theorem exists_continuous_nnreal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
by
@@ -125,7 +125,7 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
lift δ to C(X, ℝ≥0) using fun x => (hδ₀ x).le
refine' ⟨δ, hδ₀, fun i x hi => _⟩
simpa only [← ENNReal.ofReal_coe_nnreal] using hδ i x hi
-#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subset
+#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nnreal_forall_closedBall_subset
-/
#print EMetric.exists_continuous_eNNReal_forall_closedBall_subset /-
@@ -136,7 +136,7 @@ we have `emetric.closed_ball x (δ x) ⊆ U i`. -/
theorem exists_continuous_eNNReal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0∞), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
- let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
+ let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nnreal_forall_closedBall_subset hK hU hKU hfin
⟨ContinuousMap.comp ⟨coe, ENNReal.continuous_coe⟩ δ, fun x => ENNReal.coe_pos.2 (hδ₀ x), hδ⟩
#align emetric.exists_continuous_ennreal_forall_closed_ball_subset EMetric.exists_continuous_eNNReal_forall_closedBall_subset
-/
@@ -147,20 +147,20 @@ namespace Metric
variable [MetricSpace X] {K : ι → Set X} {U : ι → Set X}
-#print Metric.exists_continuous_nNReal_forall_closedBall_subset /-
+#print Metric.exists_continuous_nnreal_forall_closedBall_subset /-
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`, we have
`metric.closed_ball x (δ x) ⊆ U i`. -/
-theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
+theorem exists_continuous_nnreal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
by
- rcases EMetric.exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ0, hδ⟩
+ rcases EMetric.exists_continuous_nnreal_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ0, hδ⟩
refine' ⟨δ, hδ0, fun i x hx => _⟩
rw [← emetric_closed_ball_nnreal]
exact hδ i x hx
-#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subset
+#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nnreal_forall_closedBall_subset
-/
#print Metric.exists_continuous_real_forall_closedBall_subset /-
@@ -171,7 +171,7 @@ positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K
theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
- let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
+ let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nnreal_forall_closedBall_subset hK hU hKU hfin
⟨ContinuousMap.comp ⟨coe, NNReal.continuous_coe⟩ δ, hδ₀, hδ⟩
#align metric.exists_continuous_real_forall_closed_ball_subset Metric.exists_continuous_real_forall_closedBall_subset
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2022 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-/
-import Mathbin.Topology.MetricSpace.EmetricParacompact
-import Mathbin.Analysis.Convex.PartitionOfUnity
+import Topology.MetricSpace.EmetricParacompact
+import Analysis.Convex.PartitionOfUnity
#align_import topology.metric_space.partition_of_unity from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2022 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.partition_of_unity
-! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.MetricSpace.EmetricParacompact
import Mathbin.Analysis.Convex.PartitionOfUnity
+#align_import topology.metric_space.partition_of_unity from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
+
/-!
# Lemmas about (e)metric spaces that need partition of unity
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -43,6 +43,7 @@ namespace Emetric
variable [EMetricSpace X] {K : ι → Set X} {U : ι → Set X}
+#print EMetric.eventually_nhds_zero_forall_closedBall_subset /-
/-- Let `K : ι → set X` be a locally finitie family of closed sets in an emetric space. Let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then for any point
`x : X`, for sufficiently small `r : ℝ≥0∞` and for `y` sufficiently close to `x`, for all `i`, if
@@ -70,7 +71,9 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
_ ≤ p.1 + (R - p.1) := (add_le_add hz <| le_trans hp.2 <| tsub_le_tsub_left hp.1.out.le _)
_ = R := add_tsub_cancel_of_le (lt_trans hp.1 hrR).le
#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subset
+-/
+#print EMetric.exists_forall_closedBall_subset_aux₁ /-
theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU : ∀ i, IsOpen (U i))
(hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
∃ r : ℝ,
@@ -84,7 +87,9 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
refine' ⟨r, hr.mono fun y hy => ⟨hr0, _⟩⟩
rwa [mem_preimage, mem_Inter₂]
#align emetric.exists_forall_closed_ball_subset_aux₁ EMetric.exists_forall_closedBall_subset_aux₁
+-/
+#print EMetric.exists_forall_closedBall_subset_aux₂ /-
theorem exists_forall_closedBall_subset_aux₂ (y : X) :
Convex ℝ (Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), {r | closedBall y r ⊆ U i}) :=
(convex_Ioi _).inter <|
@@ -93,7 +98,9 @@ theorem exists_forall_closedBall_subset_aux₂ (y : X) :
ordConnected_iInter fun i =>
ordConnected_iInter fun hi => ordConnected_setOf_closedBall_subset y (U i)
#align emetric.exists_forall_closed_ball_subset_aux₂ EMetric.exists_forall_closedBall_subset_aux₂
+-/
+#print EMetric.exists_continuous_real_forall_closedBall_subset /-
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K i`,
@@ -106,7 +113,9 @@ theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K
exists_continuous_forall_mem_convex_of_local_const exists_forall_closed_ball_subset_aux₂
(exists_forall_closed_ball_subset_aux₁ hK hU hKU hfin)
#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subset
+-/
+#print EMetric.exists_continuous_nNReal_forall_closedBall_subset /-
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`,
@@ -120,7 +129,9 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
refine' ⟨δ, hδ₀, fun i x hi => _⟩
simpa only [← ENNReal.ofReal_coe_nnreal] using hδ i x hi
#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subset
+-/
+#print EMetric.exists_continuous_eNNReal_forall_closedBall_subset /-
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0∞)` such that for any `i` and `x ∈ K i`,
@@ -131,6 +142,7 @@ theorem exists_continuous_eNNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
⟨ContinuousMap.comp ⟨coe, ENNReal.continuous_coe⟩ δ, fun x => ENNReal.coe_pos.2 (hδ₀ x), hδ⟩
#align emetric.exists_continuous_ennreal_forall_closed_ball_subset EMetric.exists_continuous_eNNReal_forall_closedBall_subset
+-/
end Emetric
@@ -138,6 +150,7 @@ namespace Metric
variable [MetricSpace X] {K : ι → Set X} {U : ι → Set X}
+#print Metric.exists_continuous_nNReal_forall_closedBall_subset /-
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`, we have
@@ -151,7 +164,9 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
rw [← emetric_closed_ball_nnreal]
exact hδ i x hx
#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subset
+-/
+#print Metric.exists_continuous_real_forall_closedBall_subset /-
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K i`, we have
@@ -162,6 +177,7 @@ theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K
let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
⟨ContinuousMap.comp ⟨coe, NNReal.continuous_coe⟩ δ, hδ₀, hδ⟩
#align metric.exists_continuous_real_forall_closed_ball_subset Metric.exists_continuous_real_forall_closedBall_subset
+-/
end Metric
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -69,7 +69,6 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
edist z x ≤ edist z p.2 + edist p.2 x := edist_triangle _ _ _
_ ≤ p.1 + (R - p.1) := (add_le_add hz <| le_trans hp.2 <| tsub_le_tsub_left hp.1.out.le _)
_ = R := add_tsub_cancel_of_le (lt_trans hp.1 hrR).le
-
#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subset
theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU : ∀ i, IsOpen (U i))
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -62,7 +62,8 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
rcases nhds_basis_closed_eball.mem_iff.1 ((hU i).mem_nhds <| hKU i hi) with ⟨R, hR₀, hR⟩
rcases ennreal.lt_iff_exists_nnreal_btwn.mp hR₀ with ⟨r, hr₀, hrR⟩
filter_upwards [prod_mem_prod (eventually_lt_nhds hr₀)
- (closed_ball_mem_nhds x (tsub_pos_iff_lt.2 hrR))]with p hp z hz
+ (closed_ball_mem_nhds x (tsub_pos_iff_lt.2 hrR))] with
+ p hp z hz
apply hR
calc
edist z x ≤ edist z p.2 + edist p.2 x := edist_triangle _ _ _
@@ -75,7 +76,7 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
(hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
∃ r : ℝ,
∀ᶠ y in 𝓝 x,
- r ∈ Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i } :=
+ r ∈ Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), {r | closedBall y r ⊆ U i} :=
by
have :=
(ennreal.continuous_of_real.tendsto' 0 0 ENNReal.ofReal_zero).Eventually
@@ -86,8 +87,7 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
#align emetric.exists_forall_closed_ball_subset_aux₁ EMetric.exists_forall_closedBall_subset_aux₁
theorem exists_forall_closedBall_subset_aux₂ (y : X) :
- Convex ℝ
- (Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i }) :=
+ Convex ℝ (Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), {r | closedBall y r ⊆ U i}) :=
(convex_Ioi _).inter <|
OrdConnected.convex <|
OrdConnected.preimage_ennreal_ofReal <|
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -56,7 +56,7 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
filter_upwards [tendsto_snd (hfin.Inter_compl_mem_nhds hK x),
(eventually_all_finite (hfin.point_finite x)).2 this]
rintro ⟨r, y⟩ hxy hyU i hi
- simp only [mem_Inter₂, mem_compl_iff, not_imp_not, mem_preimage] at hxy
+ simp only [mem_Inter₂, mem_compl_iff, not_imp_not, mem_preimage] at hxy
exact hyU _ (hxy _ hi)
intro i hi
rcases nhds_basis_closed_eball.mem_iff.1 ((hU i).mem_nhds <| hKU i hi) with ⟨R, hR₀, hR⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -33,7 +33,7 @@ metric space, partition of unity, locally finite
-/
-open Topology ENNReal BigOperators NNReal Filter
+open scoped Topology ENNReal BigOperators NNReal Filter
open Set Function Filter TopologicalSpace
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -43,12 +43,6 @@ namespace Emetric
variable [EMetricSpace X] {K : ι → Set X} {U : ι → Set X}
-/- warning: emetric.eventually_nhds_zero_forall_closed_ball_subset -> EMetric.eventually_nhds_zero_forall_closedBall_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Filter.Eventually.{u2} (Prod.{0, u2} ENNReal X) (fun (p : Prod.{0, u2} ENNReal X) => forall (i : ι), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) (Prod.snd.{0, u2} ENNReal X p) (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) (Prod.snd.{0, u2} ENNReal X p) (Prod.fst.{0, u2} ENNReal X p)) (U i))) (Filter.prod.{0, u2} ENNReal X (nhds.{0} ENNReal ENNReal.topologicalSpace (OfNat.ofNat.{0} ENNReal 0 (OfNat.mk.{0} ENNReal 0 (Zero.zero.{0} ENNReal ENNReal.hasZero)))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) x)))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Filter.Eventually.{u2} (Prod.{0, u2} ENNReal X) (fun (p : Prod.{0, u2} ENNReal X) => forall (i : ι), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) (Prod.snd.{0, u2} ENNReal X p) (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) (Prod.snd.{0, u2} ENNReal X p) (Prod.fst.{0, u2} ENNReal X p)) (U i))) (Filter.prod.{0, u2} ENNReal X (nhds.{0} ENNReal ENNReal.instTopologicalSpaceENNReal (OfNat.ofNat.{0} ENNReal 0 (Zero.toOfNat0.{0} ENNReal instENNRealZero))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) x)))
-Case conversion may be inaccurate. Consider using '#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subsetₓ'. -/
/-- Let `K : ι → set X` be a locally finitie family of closed sets in an emetric space. Let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then for any point
`x : X`, for sufficiently small `r : ℝ≥0∞` and for `y` sufficiently close to `x`, for all `i`, if
@@ -77,9 +71,6 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subset
-/- warning: emetric.exists_forall_closed_ball_subset_aux₁ -> EMetric.exists_forall_closedBall_subset_aux₁ is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align emetric.exists_forall_closed_ball_subset_aux₁ EMetric.exists_forall_closedBall_subset_aux₁ₓ'. -/
theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU : ∀ i, IsOpen (U i))
(hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
∃ r : ℝ,
@@ -94,12 +85,6 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
rwa [mem_preimage, mem_Inter₂]
#align emetric.exists_forall_closed_ball_subset_aux₁ EMetric.exists_forall_closedBall_subset_aux₁
-/- warning: emetric.exists_forall_closed_ball_subset_aux₂ -> EMetric.exists_forall_closedBall_subset_aux₂ is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)} (y : X), Convex.{0, 0} Real Real Real.orderedSemiring Real.addCommMonoid (Mul.toSMul.{0} Real Real.hasMul) (Inter.inter.{0} (Set.{0} Real) (Set.hasInter.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u1} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) (fun (hi : Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) y r) (U i)))))))
-but is expected to have type
- forall {ι : Type.{u2}} {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {K : ι -> (Set.{u1} X)} {U : ι -> (Set.{u1} X)} (y : X), Convex.{0, 0} Real Real Real.orderedSemiring Real.instAddCommMonoidReal (Algebra.toSMul.{0, 0} Real Real Real.instCommSemiringReal Real.semiring (NormedAlgebra.toAlgebra.{0, 0} Real Real Real.normedField (SeminormedCommRing.toSeminormedRing.{0} Real (NormedCommRing.toSeminormedCommRing.{0} Real Real.normedCommRing)) (NormedAlgebra.id.{0} Real Real.normedField))) (Inter.inter.{0} (Set.{0} Real) (Set.instInterSet.{0} Real) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u2} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) y (K i)) (fun (hi : Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) (EMetric.closedBall.{u1} X (EMetricSpace.toPseudoEMetricSpace.{u1} X _inst_1) y r) (U i)))))))
-Case conversion may be inaccurate. Consider using '#align emetric.exists_forall_closed_ball_subset_aux₂ EMetric.exists_forall_closedBall_subset_aux₂ₓ'. -/
theorem exists_forall_closedBall_subset_aux₂ (y : X) :
Convex ℝ
(Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i }) :=
@@ -110,9 +95,6 @@ theorem exists_forall_closedBall_subset_aux₂ (y : X) :
ordConnected_iInter fun hi => ordConnected_setOf_closedBall_subset y (U i)
#align emetric.exists_forall_closed_ball_subset_aux₂ EMetric.exists_forall_closedBall_subset_aux₂
-/- warning: emetric.exists_continuous_real_forall_closed_ball_subset -> EMetric.exists_continuous_real_forall_closedBall_subset is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K i`,
@@ -126,9 +108,6 @@ theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K
(exists_forall_closed_ball_subset_aux₁ hK hU hKU hfin)
#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subset
-/- warning: emetric.exists_continuous_nnreal_forall_closed_ball_subset -> EMetric.exists_continuous_nNReal_forall_closedBall_subset is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`,
@@ -143,9 +122,6 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
simpa only [← ENNReal.ofReal_coe_nnreal] using hδ i x hi
#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subset
-/- warning: emetric.exists_continuous_ennreal_forall_closed_ball_subset -> EMetric.exists_continuous_eNNReal_forall_closedBall_subset is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_ennreal_forall_closed_ball_subset EMetric.exists_continuous_eNNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0∞)` such that for any `i` and `x ∈ K i`,
@@ -163,9 +139,6 @@ namespace Metric
variable [MetricSpace X] {K : ι → Set X} {U : ι → Set X}
-/- warning: metric.exists_continuous_nnreal_forall_closed_ball_subset -> Metric.exists_continuous_nNReal_forall_closedBall_subset is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`, we have
@@ -180,9 +153,6 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
exact hδ i x hx
#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subset
-/- warning: metric.exists_continuous_real_forall_closed_ball_subset -> Metric.exists_continuous_real_forall_closedBall_subset is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align metric.exists_continuous_real_forall_closed_ball_subset Metric.exists_continuous_real_forall_closedBall_subsetₓ'. -/
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K i`, we have
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -78,10 +78,7 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subset
/- warning: emetric.exists_forall_closed_ball_subset_aux₁ -> EMetric.exists_forall_closedBall_subset_aux₁ is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Exists.{1} Real (fun (r : Real) => Filter.Eventually.{u2} X (fun (y : X) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) r (Inter.inter.{0} (Set.{0} Real) (Set.hasInter.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u1} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) (fun (hi : Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) y r) (U i)))))))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) x)))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Exists.{1} Real (fun (r : Real) => Filter.Eventually.{u2} X (fun (y : X) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) r (Inter.inter.{0} (Set.{0} Real) (Set.instInterSet.{0} Real) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u1} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) y (K i)) (fun (hi : Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) y r) (U i)))))))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) x)))
+<too large>
Case conversion may be inaccurate. Consider using '#align emetric.exists_forall_closed_ball_subset_aux₁ EMetric.exists_forall_closedBall_subset_aux₁ₓ'. -/
theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU : ∀ i, IsOpen (U i))
(hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
@@ -114,10 +111,7 @@ theorem exists_forall_closedBall_subset_aux₂ (y : X) :
#align emetric.exists_forall_closed_ball_subset_aux₂ EMetric.exists_forall_closedBall_subset_aux₂
/- warning: emetric.exists_continuous_real_forall_closed_ball_subset -> EMetric.exists_continuous_real_forall_closedBall_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) x (ENNReal.ofReal (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x))) (U i)))))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instLTReal (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instZeroReal)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) x (ENNReal.ofReal (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x))) (U i)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
@@ -133,10 +127,7 @@ theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K
#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subset
/- warning: emetric.exists_continuous_nnreal_forall_closed_ball_subset -> EMetric.exists_continuous_nNReal_forall_closedBall_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => And (forall (x : X), LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal ENNReal (HasLiftT.mk.{1, 1} NNReal ENNReal (CoeTCₓ.coe.{1, 1} NNReal ENNReal (coeBase.{1, 1} NNReal ENNReal ENNReal.hasCoe))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x))) (U i)))))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (Preorder.toLT.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (PartialOrder.toPreorder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (StrictOrderedSemiring.toPartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealZero)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) x (ENNReal.some (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x))) (U i)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
@@ -153,10 +144,7 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subset
/- warning: emetric.exists_continuous_ennreal_forall_closed_ball_subset -> EMetric.exists_continuous_eNNReal_forall_closedBall_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) (fun (δ : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) => And (forall (x : X), LT.lt.{0} ENNReal (Preorder.toHasLt.{0} ENNReal (PartialOrder.toPreorder.{0} ENNReal (CompleteSemilatticeInf.toPartialOrder.{0} ENNReal (CompleteLattice.toCompleteSemilatticeInf.{0} ENNReal (CompleteLinearOrder.toCompleteLattice.{0} ENNReal ENNReal.completeLinearOrder))))) (OfNat.ofNat.{0} ENNReal 0 (OfNat.mk.{0} ENNReal 0 (Zero.zero.{0} ENNReal ENNReal.hasZero))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) => X -> ENNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) x (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) => X -> ENNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) δ x)) (U i)))))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) (fun (δ : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (Preorder.toLT.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (PartialOrder.toPreorder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (OmegaCompletePartialOrder.toPartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (CompleteLattice.instOmegaCompletePartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (CompleteLinearOrder.toCompleteLattice.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) ENNReal.instCompleteLinearOrderENNReal))))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) instENNRealZero)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal)) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) x (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal)) δ x)) (U i)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_ennreal_forall_closed_ball_subset EMetric.exists_continuous_eNNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
@@ -176,10 +164,7 @@ namespace Metric
variable [MetricSpace X] {K : ι → Set X} {U : ι → Set X}
/- warning: metric.exists_continuous_nnreal_forall_closed_ball_subset -> Metric.exists_continuous_nNReal_forall_closedBall_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => And (forall (x : X), LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x))) (U i)))))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (Preorder.toLT.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (PartialOrder.toPreorder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (StrictOrderedSemiring.toPartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealZero)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x (NNReal.toReal (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x))) (U i)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
@@ -196,10 +181,7 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subset
/- warning: metric.exists_continuous_real_forall_closed_ball_subset -> Metric.exists_continuous_real_forall_closedBall_subset is a dubious translation:
-lean 3 declaration is
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x)) (U i)))))
-but is expected to have type
- forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instLTReal (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instZeroReal)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x)) (U i)))))
+<too large>
Case conversion may be inaccurate. Consider using '#align metric.exists_continuous_real_forall_closed_ball_subset Metric.exists_continuous_real_forall_closedBall_subsetₓ'. -/
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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.partition_of_unity
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Analysis.Convex.PartitionOfUnity
/-!
# Lemmas about (e)metric spaces that need partition of unity
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
The main lemma in this file (see `metric.exists_continuous_real_forall_closed_ball_subset`) says the
following. Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets,
let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
mathlib commit https://github.com/leanprover-community/mathlib/commit/f8c79b0a623404854a2902b836eac32156fd7712
@@ -40,6 +40,12 @@ namespace Emetric
variable [EMetricSpace X] {K : ι → Set X} {U : ι → Set X}
+/- warning: emetric.eventually_nhds_zero_forall_closed_ball_subset -> EMetric.eventually_nhds_zero_forall_closedBall_subset is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Filter.Eventually.{u2} (Prod.{0, u2} ENNReal X) (fun (p : Prod.{0, u2} ENNReal X) => forall (i : ι), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) (Prod.snd.{0, u2} ENNReal X p) (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) (Prod.snd.{0, u2} ENNReal X p) (Prod.fst.{0, u2} ENNReal X p)) (U i))) (Filter.prod.{0, u2} ENNReal X (nhds.{0} ENNReal ENNReal.topologicalSpace (OfNat.ofNat.{0} ENNReal 0 (OfNat.mk.{0} ENNReal 0 (Zero.zero.{0} ENNReal ENNReal.hasZero)))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) x)))
+but is expected to have type
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Filter.Eventually.{u2} (Prod.{0, u2} ENNReal X) (fun (p : Prod.{0, u2} ENNReal X) => forall (i : ι), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) (Prod.snd.{0, u2} ENNReal X p) (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) (Prod.snd.{0, u2} ENNReal X p) (Prod.fst.{0, u2} ENNReal X p)) (U i))) (Filter.prod.{0, u2} ENNReal X (nhds.{0} ENNReal ENNReal.instTopologicalSpaceENNReal (OfNat.ofNat.{0} ENNReal 0 (Zero.toOfNat0.{0} ENNReal instENNRealZero))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) x)))
+Case conversion may be inaccurate. Consider using '#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subsetₓ'. -/
/-- Let `K : ι → set X` be a locally finitie family of closed sets in an emetric space. Let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then for any point
`x : X`, for sufficiently small `r : ℝ≥0∞` and for `y` sufficiently close to `x`, for all `i`, if
@@ -66,8 +72,14 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
_ ≤ p.1 + (R - p.1) := (add_le_add hz <| le_trans hp.2 <| tsub_le_tsub_left hp.1.out.le _)
_ = R := add_tsub_cancel_of_le (lt_trans hp.1 hrR).le
-#align emetric.eventually_nhds_zero_forall_closed_ball_subset Emetric.eventually_nhds_zero_forall_closedBall_subset
-
+#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subset
+
+/- warning: emetric.exists_forall_closed_ball_subset_aux₁ -> EMetric.exists_forall_closedBall_subset_aux₁ is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Exists.{1} Real (fun (r : Real) => Filter.Eventually.{u2} X (fun (y : X) => Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) r (Inter.inter.{0} (Set.{0} Real) (Set.hasInter.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u1} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) (fun (hi : Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) y r) (U i)))))))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) x)))
+but is expected to have type
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (forall (x : X), Exists.{1} Real (fun (r : Real) => Filter.Eventually.{u2} X (fun (y : X) => Membership.mem.{0, 0} Real (Set.{0} Real) (Set.instMembershipSet.{0} Real) r (Inter.inter.{0} (Set.{0} Real) (Set.instInterSet.{0} Real) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u1} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) y (K i)) (fun (hi : Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) y r) (U i)))))))) (nhds.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) x)))
+Case conversion may be inaccurate. Consider using '#align emetric.exists_forall_closed_ball_subset_aux₁ EMetric.exists_forall_closedBall_subset_aux₁ₓ'. -/
theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU : ∀ i, IsOpen (U i))
(hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
∃ r : ℝ,
@@ -80,8 +92,14 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
rcases this.exists_gt with ⟨r, hr0, hr⟩
refine' ⟨r, hr.mono fun y hy => ⟨hr0, _⟩⟩
rwa [mem_preimage, mem_Inter₂]
-#align emetric.exists_forall_closed_ball_subset_aux₁ Emetric.exists_forall_closedBall_subset_aux₁
-
+#align emetric.exists_forall_closed_ball_subset_aux₁ EMetric.exists_forall_closedBall_subset_aux₁
+
+/- warning: emetric.exists_forall_closed_ball_subset_aux₂ -> EMetric.exists_forall_closedBall_subset_aux₂ is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)} (y : X), Convex.{0, 0} Real Real Real.orderedSemiring Real.addCommMonoid (Mul.toSMul.{0} Real Real.hasMul) (Inter.inter.{0} (Set.{0} Real) (Set.hasInter.{0} Real) (Set.Ioi.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero)))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u1} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) (fun (hi : Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) y r) (U i)))))))
+but is expected to have type
+ forall {ι : Type.{u2}} {X : Type.{u1}} [_inst_1 : EMetricSpace.{u1} X] {K : ι -> (Set.{u1} X)} {U : ι -> (Set.{u1} X)} (y : X), Convex.{0, 0} Real Real Real.orderedSemiring Real.instAddCommMonoidReal (Algebra.toSMul.{0, 0} Real Real Real.instCommSemiringReal Real.semiring (NormedAlgebra.toAlgebra.{0, 0} Real Real Real.normedField (SeminormedCommRing.toSeminormedRing.{0} Real (NormedCommRing.toSeminormedCommRing.{0} Real Real.normedCommRing)) (NormedAlgebra.id.{0} Real Real.normedField))) (Inter.inter.{0} (Set.{0} Real) (Set.instInterSet.{0} Real) (Set.Ioi.{0} Real Real.instPreorderReal (OfNat.ofNat.{0} Real 0 (Zero.toOfNat0.{0} Real Real.instZeroReal))) (Set.preimage.{0, 0} Real ENNReal ENNReal.ofReal (Set.iInter.{0, succ u2} ENNReal ι (fun (i : ι) => Set.iInter.{0, 0} ENNReal (Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) y (K i)) (fun (hi : Membership.mem.{u1, u1} X (Set.{u1} X) (Set.instMembershipSet.{u1} X) y (K i)) => setOf.{0} ENNReal (fun (r : ENNReal) => HasSubset.Subset.{u1} (Set.{u1} X) (Set.instHasSubsetSet.{u1} X) (EMetric.closedBall.{u1} X (EMetricSpace.toPseudoEMetricSpace.{u1} X _inst_1) y r) (U i)))))))
+Case conversion may be inaccurate. Consider using '#align emetric.exists_forall_closed_ball_subset_aux₂ EMetric.exists_forall_closedBall_subset_aux₂ₓ'. -/
theorem exists_forall_closedBall_subset_aux₂ (y : X) :
Convex ℝ
(Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i }) :=
@@ -90,8 +108,14 @@ theorem exists_forall_closedBall_subset_aux₂ (y : X) :
OrdConnected.preimage_ennreal_ofReal <|
ordConnected_iInter fun i =>
ordConnected_iInter fun hi => ordConnected_setOf_closedBall_subset y (U i)
-#align emetric.exists_forall_closed_ball_subset_aux₂ Emetric.exists_forall_closedBall_subset_aux₂
-
+#align emetric.exists_forall_closed_ball_subset_aux₂ EMetric.exists_forall_closedBall_subset_aux₂
+
+/- warning: emetric.exists_continuous_real_forall_closed_ball_subset -> EMetric.exists_continuous_real_forall_closedBall_subset is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) x (ENNReal.ofReal (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x))) (U i)))))
+but is expected to have type
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instLTReal (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instZeroReal)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) x (ENNReal.ofReal (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x))) (U i)))))
+Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K i`,
@@ -103,8 +127,14 @@ theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K
simpa only [mem_inter_iff, forall_and, mem_preimage, mem_Inter, @forall_swap ι X] using
exists_continuous_forall_mem_convex_of_local_const exists_forall_closed_ball_subset_aux₂
(exists_forall_closed_ball_subset_aux₁ hK hU hKU hfin)
-#align emetric.exists_continuous_real_forall_closed_ball_subset Emetric.exists_continuous_real_forall_closedBall_subset
-
+#align emetric.exists_continuous_real_forall_closed_ball_subset EMetric.exists_continuous_real_forall_closedBall_subset
+
+/- warning: emetric.exists_continuous_nnreal_forall_closed_ball_subset -> EMetric.exists_continuous_nNReal_forall_closedBall_subset is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => And (forall (x : X), LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal ENNReal (HasLiftT.mk.{1, 1} NNReal ENNReal (CoeTCₓ.coe.{1, 1} NNReal ENNReal (coeBase.{1, 1} NNReal ENNReal ENNReal.hasCoe))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x))) (U i)))))
+but is expected to have type
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (Preorder.toLT.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (PartialOrder.toPreorder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (StrictOrderedSemiring.toPartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealZero)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) x (ENNReal.some (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x))) (U i)))))
+Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`,
@@ -117,8 +147,14 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
lift δ to C(X, ℝ≥0) using fun x => (hδ₀ x).le
refine' ⟨δ, hδ₀, fun i x hi => _⟩
simpa only [← ENNReal.ofReal_coe_nnreal] using hδ i x hi
-#align emetric.exists_continuous_nnreal_forall_closed_ball_subset Emetric.exists_continuous_nNReal_forall_closedBall_subset
-
+#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subset
+
+/- warning: emetric.exists_continuous_ennreal_forall_closed_ball_subset -> EMetric.exists_continuous_eNNReal_forall_closedBall_subset is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) (fun (δ : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) => And (forall (x : X), LT.lt.{0} ENNReal (Preorder.toHasLt.{0} ENNReal (PartialOrder.toPreorder.{0} ENNReal (CompleteSemilatticeInf.toPartialOrder.{0} ENNReal (CompleteLattice.toCompleteSemilatticeInf.{0} ENNReal (CompleteLinearOrder.toCompleteLattice.{0} ENNReal ENNReal.completeLinearOrder))))) (OfNat.ofNat.{0} ENNReal 0 (OfNat.mk.{0} ENNReal 0 (Zero.zero.{0} ENNReal ENNReal.hasZero))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) => X -> ENNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1) x (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) => X -> ENNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEmetricSpace.{u2} X _inst_1))) ENNReal.topologicalSpace) δ x)) (U i)))))
+but is expected to have type
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : EMetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) (fun (δ : ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (Preorder.toLT.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (PartialOrder.toPreorder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (OmegaCompletePartialOrder.toPartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (CompleteLattice.instOmegaCompletePartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) (CompleteLinearOrder.toCompleteLattice.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) ENNReal.instCompleteLinearOrderENNReal))))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) x) instENNRealZero)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal)) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (EMetric.closedBall.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1) x (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => ENNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal) X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X ENNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoEMetricSpace.toUniformSpace.{u2} X (EMetricSpace.toPseudoEMetricSpace.{u2} X _inst_1))) ENNReal.instTopologicalSpaceENNReal)) δ x)) (U i)))))
+Case conversion may be inaccurate. Consider using '#align emetric.exists_continuous_ennreal_forall_closed_ball_subset EMetric.exists_continuous_eNNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0∞)` such that for any `i` and `x ∈ K i`,
@@ -128,7 +164,7 @@ theorem exists_continuous_eNNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
∃ δ : C(X, ℝ≥0∞), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
⟨ContinuousMap.comp ⟨coe, ENNReal.continuous_coe⟩ δ, fun x => ENNReal.coe_pos.2 (hδ₀ x), hδ⟩
-#align emetric.exists_continuous_ennreal_forall_closed_ball_subset Emetric.exists_continuous_eNNReal_forall_closedBall_subset
+#align emetric.exists_continuous_ennreal_forall_closed_ball_subset EMetric.exists_continuous_eNNReal_forall_closedBall_subset
end Emetric
@@ -136,6 +172,12 @@ namespace Metric
variable [MetricSpace X] {K : ι → Set X} {U : ι → Set X}
+/- warning: metric.exists_continuous_nnreal_forall_closed_ball_subset -> Metric.exists_continuous_nNReal_forall_closedBall_subset is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => And (forall (x : X), LT.lt.{0} NNReal (Preorder.toHasLt.{0} NNReal (PartialOrder.toPreorder.{0} NNReal (OrderedCancelAddCommMonoid.toPartialOrder.{0} NNReal (StrictOrderedSemiring.toOrderedCancelAddCommMonoid.{0} NNReal NNReal.strictOrderedSemiring)))) (OfNat.ofNat.{0} NNReal 0 (OfNat.mk.{0} NNReal 0 (Zero.zero.{0} NNReal (MulZeroClass.toHasZero.{0} NNReal (NonUnitalNonAssocSemiring.toMulZeroClass.{0} NNReal (NonAssocSemiring.toNonUnitalNonAssocSemiring.{0} NNReal (Semiring.toNonAssocSemiring.{0} NNReal NNReal.semiring))))))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) NNReal Real (HasLiftT.mk.{1, 1} NNReal Real (CoeTCₓ.coe.{1, 1} NNReal Real (coeBase.{1, 1} NNReal Real NNReal.Real.hasCoe))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) (fun (_x : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) => X -> NNReal) (ContinuousMap.hasCoeToFun.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.topologicalSpace) δ x))) (U i)))))
+but is expected to have type
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) (fun (δ : ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (Preorder.toLT.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (PartialOrder.toPreorder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) (StrictOrderedSemiring.toPartialOrder.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealStrictOrderedSemiring))) (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) x) instNNRealZero)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x (NNReal.toReal (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => NNReal) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal) X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X NNReal (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) NNReal.instTopologicalSpaceNNReal)) δ x))) (U i)))))
+Case conversion may be inaccurate. Consider using '#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subsetₓ'. -/
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`, we have
@@ -144,12 +186,18 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
by
- rcases Emetric.exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ0, hδ⟩
+ rcases EMetric.exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ0, hδ⟩
refine' ⟨δ, hδ0, fun i x hx => _⟩
rw [← emetric_closed_ball_nnreal]
exact hδ i x hx
#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subset
+/- warning: metric.exists_continuous_real_forall_closed_ball_subset -> Metric.exists_continuous_real_forall_closedBall_subset is a dubious translation:
+lean 3 declaration is
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} Real Real.hasLt (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x)) (forall (i : ι) (x : X), (Membership.Mem.{u2, u2} X (Set.{u2} X) (Set.hasMem.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.hasSubset.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x (coeFn.{succ u2, succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (_x : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => X -> Real) (ContinuousMap.hasCoeToFun.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) δ x)) (U i)))))
+but is expected to have type
+ forall {ι : Type.{u1}} {X : Type.{u2}} [_inst_1 : MetricSpace.{u2} X] {K : ι -> (Set.{u2} X)} {U : ι -> (Set.{u2} X)}, (forall (i : ι), IsClosed.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (K i)) -> (forall (i : ι), IsOpen.{u2} X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (U i)) -> (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (K i) (U i)) -> (LocallyFinite.{u1, u2} ι X (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) K) -> (Exists.{succ u2} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (fun (δ : ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) => And (forall (x : X), LT.lt.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instLTReal (OfNat.ofNat.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) 0 (Zero.toOfNat0.{0} ((fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) x) Real.instZeroReal)) (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x)) (forall (i : ι) (x : X), (Membership.mem.{u2, u2} X (Set.{u2} X) (Set.instMembershipSet.{u2} X) x (K i)) -> (HasSubset.Subset.{u2} (Set.{u2} X) (Set.instHasSubsetSet.{u2} X) (Metric.closedBall.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1) x (FunLike.coe.{succ u2, succ u2, 1} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X (fun (_x : X) => (fun (x._@.Mathlib.Topology.ContinuousFunction.Basic._hyg.699 : X) => Real) _x) (ContinuousMapClass.toFunLike.{u2, u2, 0} (ContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (ContinuousMap.instContinuousMapClassContinuousMap.{u2, 0} X Real (UniformSpace.toTopologicalSpace.{u2} X (PseudoMetricSpace.toUniformSpace.{u2} X (MetricSpace.toPseudoMetricSpace.{u2} X _inst_1))) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)))) δ x)) (U i)))))
+Case conversion may be inaccurate. Consider using '#align metric.exists_continuous_real_forall_closed_ball_subset Metric.exists_continuous_real_forall_closedBall_subsetₓ'. -/
/-- Let `X` be a metric space. Let `K : ι → set X` be a locally finite family of closed sets, let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K i`, we have
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -88,8 +88,8 @@ theorem exists_forall_closedBall_subset_aux₂ (y : X) :
(convex_Ioi _).inter <|
OrdConnected.convex <|
OrdConnected.preimage_ennreal_ofReal <|
- ordConnected_interᵢ fun i =>
- ordConnected_interᵢ fun hi => ordConnected_setOf_closedBall_subset y (U i)
+ ordConnected_iInter fun i =>
+ ordConnected_iInter fun hi => ordConnected_setOf_closedBall_subset y (U i)
#align emetric.exists_forall_closed_ball_subset_aux₂ Emetric.exists_forall_closedBall_subset_aux₂
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -38,7 +38,7 @@ variable {ι X : Type _}
namespace Emetric
-variable [EmetricSpace X] {K : ι → Set X} {U : ι → Set X}
+variable [EMetricSpace X] {K : ι → Set X} {U : ι → Set X}
/-- Let `K : ι → set X` be a locally finitie family of closed sets in an emetric space. Let
`U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then for any point
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -63,7 +63,7 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
apply hR
calc
edist z x ≤ edist z p.2 + edist p.2 x := edist_triangle _ _ _
- _ ≤ p.1 + (R - p.1) := add_le_add hz <| le_trans hp.2 <| tsub_le_tsub_left hp.1.out.le _
+ _ ≤ p.1 + (R - p.1) := (add_le_add hz <| le_trans hp.2 <| tsub_le_tsub_left hp.1.out.le _)
_ = R := add_tsub_cancel_of_le (lt_trans hp.1 hrR).le
#align emetric.eventually_nhds_zero_forall_closed_ball_subset Emetric.eventually_nhds_zero_forall_closedBall_subset
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -30,7 +30,7 @@ metric space, partition of unity, locally finite
-/
-open Topology Ennreal BigOperators NNReal Filter
+open Topology ENNReal BigOperators NNReal Filter
open Set Function Filter TopologicalSpace
@@ -72,10 +72,10 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
(hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
∃ r : ℝ,
∀ᶠ y in 𝓝 x,
- r ∈ Ioi (0 : ℝ) ∩ Ennreal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i } :=
+ r ∈ Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i } :=
by
have :=
- (ennreal.continuous_of_real.tendsto' 0 0 Ennreal.ofReal_zero).Eventually
+ (ennreal.continuous_of_real.tendsto' 0 0 ENNReal.ofReal_zero).Eventually
(eventually_nhds_zero_forall_closed_ball_subset hK hU hKU hfin x).curry
rcases this.exists_gt with ⟨r, hr0, hr⟩
refine' ⟨r, hr.mono fun y hy => ⟨hr0, _⟩⟩
@@ -84,7 +84,7 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
theorem exists_forall_closedBall_subset_aux₂ (y : X) :
Convex ℝ
- (Ioi (0 : ℝ) ∩ Ennreal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i }) :=
+ (Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (hi : y ∈ K i), { r | closedBall y r ⊆ U i }) :=
(convex_Ioi _).inter <|
OrdConnected.convex <|
OrdConnected.preimage_ennreal_ofReal <|
@@ -98,7 +98,7 @@ exists a positive continuous function `δ : C(X, ℝ)` such that for any `i` and
we have `emetric.closed_ball x (ennreal.of_real (δ x)) ⊆ U i`. -/
theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
- ∃ δ : C(X, ℝ), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (Ennreal.ofReal <| δ x) ⊆ U i :=
+ ∃ δ : C(X, ℝ), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (ENNReal.ofReal <| δ x) ⊆ U i :=
by
simpa only [mem_inter_iff, forall_and, mem_preimage, mem_Inter, @forall_swap ι X] using
exists_continuous_forall_mem_convex_of_local_const exists_forall_closed_ball_subset_aux₂
@@ -116,19 +116,19 @@ theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed
rcases exists_continuous_real_forall_closed_ball_subset hK hU hKU hfin with ⟨δ, hδ₀, hδ⟩
lift δ to C(X, ℝ≥0) using fun x => (hδ₀ x).le
refine' ⟨δ, hδ₀, fun i x hi => _⟩
- simpa only [← Ennreal.ofReal_coe_nNReal] using hδ i x hi
+ simpa only [← ENNReal.ofReal_coe_nnreal] using hδ i x hi
#align emetric.exists_continuous_nnreal_forall_closed_ball_subset Emetric.exists_continuous_nNReal_forall_closedBall_subset
/-- Let `X` be an extended metric space. Let `K : ι → set X` be a locally finite family of closed
sets, let `U : ι → set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0∞)` such that for any `i` and `x ∈ K i`,
we have `emetric.closed_ball x (δ x) ⊆ U i`. -/
-theorem exists_continuous_ennreal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
+theorem exists_continuous_eNNReal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0∞), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
- ⟨ContinuousMap.comp ⟨coe, Ennreal.continuous_coe⟩ δ, fun x => Ennreal.coe_pos.2 (hδ₀ x), hδ⟩
-#align emetric.exists_continuous_ennreal_forall_closed_ball_subset Emetric.exists_continuous_ennreal_forall_closedBall_subset
+ ⟨ContinuousMap.comp ⟨coe, ENNReal.continuous_coe⟩ δ, fun x => ENNReal.coe_pos.2 (hδ₀ x), hδ⟩
+#align emetric.exists_continuous_ennreal_forall_closed_ball_subset Emetric.exists_continuous_eNNReal_forall_closedBall_subset
end Emetric
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -57,7 +57,7 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
apply hR
calc
edist z x ≤ edist z p.2 + edist p.2 x := edist_triangle _ _ _
- _ ≤ p.1 + (R - p.1) := (add_le_add hz <| le_trans hp.2 <| tsub_le_tsub_left hp.1.out.le _)
+ _ ≤ p.1 + (R - p.1) := add_le_add hz <| le_trans hp.2 <| tsub_le_tsub_left hp.1.out.le _
_ = R := add_tsub_cancel_of_le (lt_trans (by exact hp.1) hrR).le
#align emetric.eventually_nhds_zero_forall_closed_ball_subset EMetric.eventually_nhds_zero_forall_closedBall_subset
@@ -97,14 +97,14 @@ theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K
sets, let `U : ι → Set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
exists a positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`,
we have `EMetric.closedBall x (δ x) ⊆ U i`. -/
-theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
+theorem exists_continuous_nnreal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i := by
rcases exists_continuous_real_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ₀, hδ⟩
lift δ to C(X, ℝ≥0) using fun x => (hδ₀ x).le
refine' ⟨δ, hδ₀, fun i x hi => _⟩
simpa only [← ENNReal.ofReal_coe_nnreal] using hδ i x hi
-#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nNReal_forall_closedBall_subset
+#align emetric.exists_continuous_nnreal_forall_closed_ball_subset EMetric.exists_continuous_nnreal_forall_closedBall_subset
/-- Let `X` be an extended metric space. Let `K : ι → Set X` be a locally finite family of closed
sets, let `U : ι → Set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there
@@ -113,7 +113,7 @@ we have `EMetric.closedBall x (δ x) ⊆ U i`. -/
theorem exists_continuous_eNNReal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0∞), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
- let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
+ let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nnreal_forall_closedBall_subset hK hU hKU hfin
⟨ContinuousMap.comp ⟨Coe.coe, ENNReal.continuous_coe⟩ δ, fun x => ENNReal.coe_pos.2 (hδ₀ x), hδ⟩
#align emetric.exists_continuous_ennreal_forall_closed_ball_subset EMetric.exists_continuous_eNNReal_forall_closedBall_subset
@@ -127,14 +127,14 @@ variable [MetricSpace X] {K : ι → Set X} {U : ι → Set X}
`U : ι → Set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
positive continuous function `δ : C(X, ℝ≥0)` such that for any `i` and `x ∈ K i`, we have
`Metric.closedBall x (δ x) ⊆ U i`. -/
-theorem exists_continuous_nNReal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
+theorem exists_continuous_nnreal_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ≥0), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i := by
- rcases EMetric.exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ0, hδ⟩
+ rcases EMetric.exists_continuous_nnreal_forall_closedBall_subset hK hU hKU hfin with ⟨δ, hδ0, hδ⟩
refine' ⟨δ, hδ0, fun i x hx => _⟩
rw [← emetric_closedBall_nnreal]
exact hδ i x hx
-#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nNReal_forall_closedBall_subset
+#align metric.exists_continuous_nnreal_forall_closed_ball_subset Metric.exists_continuous_nnreal_forall_closedBall_subset
/-- Let `X` be a metric space. Let `K : ι → Set X` be a locally finite family of closed sets, let
`U : ι → Set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then there exists a
@@ -143,7 +143,7 @@ positive continuous function `δ : C(X, ℝ)` such that for any `i` and `x ∈ K
theorem exists_continuous_real_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) :
∃ δ : C(X, ℝ), (∀ x, 0 < δ x) ∧ ∀ (i), ∀ x ∈ K i, closedBall x (δ x) ⊆ U i :=
- let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nNReal_forall_closedBall_subset hK hU hKU hfin
+ let ⟨δ, hδ₀, hδ⟩ := exists_continuous_nnreal_forall_closedBall_subset hK hU hKU hfin
⟨ContinuousMap.comp ⟨Coe.coe, NNReal.continuous_coe⟩ δ, hδ₀, hδ⟩
#align metric.exists_continuous_real_forall_closed_ball_subset Metric.exists_continuous_real_forall_closedBall_subset
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-/
import Mathlib.Topology.EMetricSpace.Paracompact
+import Mathlib.Topology.Instances.ENNReal
import Mathlib.Analysis.Convex.PartitionOfUnity
#align_import topology.metric_space.partition_of_unity from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
Later I'm going to split files like Lipschitz
into 2: one in EMetricSpace/
and one in MetricSpace/
.
@@ -3,7 +3,7 @@ Copyright (c) 2022 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-/
-import Mathlib.Topology.MetricSpace.EMetricParacompact
+import Mathlib.Topology.EMetricSpace.Paracompact
import Mathlib.Analysis.Convex.PartitionOfUnity
#align_import topology.metric_space.partition_of_unity from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -28,7 +28,7 @@ metric space, partition of unity, locally finite
open Topology ENNReal BigOperators NNReal Filter Set Function TopologicalSpace
-variable {ι X : Type _}
+variable {ι X : Type*}
namespace EMetric
@@ -2,15 +2,12 @@
Copyright (c) 2022 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.partition_of_unity
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.MetricSpace.EMetricParacompact
import Mathlib.Analysis.Convex.PartitionOfUnity
+#align_import topology.metric_space.partition_of_unity from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
/-!
# Lemmas about (e)metric spaces that need partition of unity
@@ -66,7 +66,7 @@ theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i
theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU : ∀ i, IsOpen (U i))
(hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
∃ r : ℝ, ∀ᶠ y in 𝓝 x,
- r ∈ Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (_hi : y ∈ K i), { r | closedBall y r ⊆ U i } := by
+ r ∈ Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (_ : y ∈ K i), { r | closedBall y r ⊆ U i } := by
have := (ENNReal.continuous_ofReal.tendsto' 0 0 ENNReal.ofReal_zero).eventually
(eventually_nhds_zero_forall_closedBall_subset hK hU hKU hfin x).curry
rcases this.exists_gt with ⟨r, hr0, hr⟩
@@ -76,7 +76,7 @@ theorem exists_forall_closedBall_subset_aux₁ (hK : ∀ i, IsClosed (K i)) (hU
theorem exists_forall_closedBall_subset_aux₂ (y : X) :
Convex ℝ
- (Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (_hi : y ∈ K i), { r | closedBall y r ⊆ U i }) :=
+ (Ioi (0 : ℝ) ∩ ENNReal.ofReal ⁻¹' ⋂ (i) (_ : y ∈ K i), { r | closedBall y r ⊆ U i }) :=
(convex_Ioi _).inter <| OrdConnected.convex <| OrdConnected.preimage_ennreal_ofReal <|
ordConnected_iInter fun i => ordConnected_iInter fun (_ : y ∈ K i) =>
ordConnected_setOf_closedBall_subset y (U i)
SProd
to implement overloaded notation · ×ˢ ·
(#4200)
Currently, the following notations are changed from · ×ˢ ·
because Lean 4 can't deal with ambiguous notations.
| Definition | Notation |
| :
Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>
@@ -43,8 +43,8 @@ variable [EMetricSpace X] {K : ι → Set X} {U : ι → Set X}
`y ∈ K i`, then `EMetric.closedBall y r ⊆ U i`. -/
theorem eventually_nhds_zero_forall_closedBall_subset (hK : ∀ i, IsClosed (K i))
(hU : ∀ i, IsOpen (U i)) (hKU : ∀ i, K i ⊆ U i) (hfin : LocallyFinite K) (x : X) :
- ∀ᶠ p : ℝ≥0∞ × X in 𝓝 0 ×ᶠ 𝓝 x, ∀ i, p.2 ∈ K i → closedBall p.2 p.1 ⊆ U i := by
- suffices ∀ i, x ∈ K i → ∀ᶠ p : ℝ≥0∞ × X in 𝓝 0 ×ᶠ 𝓝 x, closedBall p.2 p.1 ⊆ U i by
+ ∀ᶠ p : ℝ≥0∞ × X in 𝓝 0 ×ˢ 𝓝 x, ∀ i, p.2 ∈ K i → closedBall p.2 p.1 ⊆ U i := by
+ suffices ∀ i, x ∈ K i → ∀ᶠ p : ℝ≥0∞ × X in 𝓝 0 ×ˢ 𝓝 x, closedBall p.2 p.1 ⊆ U i by
apply mp_mem ((eventually_all_finite (hfin.point_finite x)).2 this)
(mp_mem (@tendsto_snd ℝ≥0∞ _ (𝓝 0) _ _ (hfin.iInter_compl_mem_nhds hK x)) _)
apply univ_mem'
@@ -37,7 +37,7 @@ namespace EMetric
variable [EMetricSpace X] {K : ι → Set X} {U : ι → Set X}
-/-- Let `K : ι → Set X` be a locally finitie family of closed sets in an emetric space. Let
+/-- Let `K : ι → Set X` be a locally finite family of closed sets in an emetric space. Let
`U : ι → Set X` be a family of open sets such that `K i ⊆ U i` for all `i`. Then for any point
`x : X`, for sufficiently small `r : ℝ≥0∞` and for `y` sufficiently close to `x`, for all `i`, if
`y ∈ K i`, then `EMetric.closedBall y r ⊆ U i`. -/
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file