topology.instances.ereal
⟷
Mathlib.Topology.Instances.EReal
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
@@ -64,7 +64,7 @@ instance : SecondCountableTopology EReal :=
[rw [show s = ⋃ q ∈ {q : ℚ | a < (q : ℝ)}, {b | ((q : ℝ) : EReal) < b} by ext x;
simpa only [hs, exists_prop, mem_Union] using lt_iff_exists_rat_btwn];
rw [show s = ⋃ q ∈ {q : ℚ | ((q : ℝ) : EReal) < a}, {b | b < ((q : ℝ) : EReal)} by ext x;
- simpa only [hs, and_comm', exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
+ simpa only [hs, and_comm, exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
· apply isOpen_iUnion; intro q
apply isOpen_iUnion; intro hq
apply generate_open.basic
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,9 +4,9 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-/
import Data.Rat.Encodable
-import Data.Real.Ereal
-import Topology.Algebra.Order.MonotoneContinuity
-import Topology.Instances.Ennreal
+import Data.Real.EReal
+import Topology.Order.MonotoneContinuity
+import Topology.Instances.ENNReal
#align_import topology.instances.ereal from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
@@ -239,7 +239,7 @@ theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
/-! ### Neighborhoods of infinity -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
#print EReal.nhds_top /-
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
@@ -276,7 +276,7 @@ theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
#print EReal.nhds_bot /-
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -157,7 +157,7 @@ theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
#print EReal.continuousOn_toReal /-
theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set EReal) := fun a ha =>
ContinuousAt.continuousWithinAt
- (tendsto_toReal (by simp [not_or] at ha ; exact ha.2) (by simp [not_or] at ha ; exact ha.1))
+ (tendsto_toReal (by simp [not_or] at ha; exact ha.2) (by simp [not_or] at ha; exact ha.1))
#align ereal.continuous_on_to_real EReal.continuousOn_toReal
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-/
-import Mathbin.Data.Rat.Encodable
-import Mathbin.Data.Real.Ereal
-import Mathbin.Topology.Algebra.Order.MonotoneContinuity
-import Mathbin.Topology.Instances.Ennreal
+import Data.Rat.Encodable
+import Data.Real.Ereal
+import Topology.Algebra.Order.MonotoneContinuity
+import Topology.Instances.Ennreal
#align_import topology.instances.ereal from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
@@ -239,7 +239,7 @@ theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
/-! ### Neighborhoods of infinity -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
#print EReal.nhds_top /-
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
@@ -276,7 +276,7 @@ theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
#print EReal.nhds_bot /-
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module topology.instances.ereal
-! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.Rat.Encodable
import Mathbin.Data.Real.Ereal
import Mathbin.Topology.Algebra.Order.MonotoneContinuity
import Mathbin.Topology.Instances.Ennreal
+#align_import topology.instances.ereal from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
+
/-!
# Topological structure on `ereal`
@@ -242,7 +239,7 @@ theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
/-! ### Neighborhoods of infinity -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
#print EReal.nhds_top /-
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
@@ -279,7 +276,7 @@ theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
-/
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
#print EReal.nhds_bot /-
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -76,6 +76,7 @@ instance : SecondCountableTopology EReal :=
/-! ### Real coercion -/
+#print EReal.embedding_coe /-
theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
@@ -99,7 +100,9 @@ theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
exact ⟨Iio a, isOpen_Iio, by simp [Iio]⟩⟩, fun a b => by
simp only [imp_self, EReal.coe_eq_coe_iff]⟩
#align ereal.embedding_coe EReal.embedding_coe
+-/
+#print EReal.openEmbedding_coe /-
theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
⟨embedding_coe, by
convert @isOpen_Ioo EReal _ _ _ ⊥ ⊤
@@ -109,30 +112,42 @@ theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
· simp only [mem_range_self, mem_Ioo, bot_lt_coe, coe_lt_top, and_self_iff]
· simp only [mem_range, right_mem_Ioo, exists_false, coe_ne_top]⟩
#align ereal.open_embedding_coe EReal.openEmbedding_coe
+-/
+#print EReal.tendsto_coe /-
@[norm_cast]
theorem tendsto_coe {α : Type _} {f : Filter α} {m : α → ℝ} {a : ℝ} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe.tendsto_nhds_iff.symm
#align ereal.tendsto_coe EReal.tendsto_coe
+-/
+#print continuous_coe_real_ereal /-
theorem continuous_coe_real_ereal : Continuous (coe : ℝ → EReal) :=
embedding_coe.Continuous
#align continuous_coe_real_ereal continuous_coe_real_ereal
+-/
+#print EReal.continuous_coe_iff /-
theorem continuous_coe_iff {f : α → ℝ} : (Continuous fun a => (f a : EReal)) ↔ Continuous f :=
embedding_coe.continuous_iff.symm
#align ereal.continuous_coe_iff EReal.continuous_coe_iff
+-/
+#print EReal.nhds_coe /-
theorem nhds_coe {r : ℝ} : 𝓝 (r : EReal) = (𝓝 r).map coe :=
(openEmbedding_coe.map_nhds_eq r).symm
#align ereal.nhds_coe EReal.nhds_coe
+-/
+#print EReal.nhds_coe_coe /-
theorem nhds_coe_coe {r p : ℝ} :
𝓝 ((r : EReal), (p : EReal)) = (𝓝 (r, p)).map fun p : ℝ × ℝ => (p.1, p.2) :=
((openEmbedding_coe.Prod openEmbedding_coe).map_nhds_eq (r, p)).symm
#align ereal.nhds_coe_coe EReal.nhds_coe_coe
+-/
+#print EReal.tendsto_toReal /-
theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
Tendsto EReal.toReal (𝓝 a) (𝓝 a.toReal) :=
by
@@ -140,12 +155,16 @@ theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
rw [nhds_coe, tendsto_map'_iff]
exact tendsto_id
#align ereal.tendsto_to_real EReal.tendsto_toReal
+-/
+#print EReal.continuousOn_toReal /-
theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set EReal) := fun a ha =>
ContinuousAt.continuousWithinAt
(tendsto_toReal (by simp [not_or] at ha ; exact ha.2) (by simp [not_or] at ha ; exact ha.1))
#align ereal.continuous_on_to_real EReal.continuousOn_toReal
+-/
+#print EReal.neBotTopHomeomorphReal /-
/-- The set of finite `ereal` numbers is homeomorphic to `ℝ`. -/
def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set EReal) ≃ₜ ℝ :=
{
@@ -153,10 +172,12 @@ def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set EReal) ≃ₜ ℝ :=
continuous_toFun := continuousOn_iff_continuous_restrict.1 continuousOn_toReal
continuous_invFun := continuous_coe_real_ereal.subtype_mk _ }
#align ereal.ne_bot_top_homeomorph_real EReal.neBotTopHomeomorphReal
+-/
/-! ### ennreal coercion -/
+#print EReal.embedding_coe_ennreal /-
theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
@@ -195,30 +216,40 @@ theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → EReal) :=
exact ⟨Iio a, isOpen_Iio, by simp [Iio]⟩⟩, fun a b => by
simp only [imp_self, coe_ennreal_eq_coe_ennreal_iff]⟩
#align ereal.embedding_coe_ennreal EReal.embedding_coe_ennreal
+-/
+#print EReal.tendsto_coe_ennreal /-
@[norm_cast]
theorem tendsto_coe_ennreal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe_ennreal.tendsto_nhds_iff.symm
#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_ennreal
+-/
+#print continuous_coe_ennreal_ereal /-
theorem continuous_coe_ennreal_ereal : Continuous (coe : ℝ≥0∞ → EReal) :=
embedding_coe_ennreal.Continuous
#align continuous_coe_ennreal_ereal continuous_coe_ennreal_ereal
+-/
+#print EReal.continuous_coe_ennreal_iff /-
theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
(Continuous fun a => (f a : EReal)) ↔ Continuous f :=
embedding_coe_ennreal.continuous_iff.symm
#align ereal.continuous_coe_ennreal_iff EReal.continuous_coe_ennreal_iff
+-/
/-! ### Neighborhoods of infinity -/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
+#print EReal.nhds_top /-
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
#align ereal.nhds_top EReal.nhds_top
+-/
+#print EReal.nhds_top' /-
theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
by
rw [nhds_top]
@@ -230,24 +261,32 @@ theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
· exact iInf_le _ _
· simpa using hr
#align ereal.nhds_top' EReal.nhds_top'
+-/
+#print EReal.mem_nhds_top_iff /-
theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y : ℝ, Ioi (y : EReal) ⊆ s :=
by
rw [nhds_top', mem_infi_of_directed]
· rfl
exact fun x y => ⟨max x y, by simp [le_refl], by simp [le_refl]⟩
#align ereal.mem_nhds_top_iff EReal.mem_nhds_top_iff
+-/
+#print EReal.tendsto_nhds_top_iff_real /-
theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊤) ↔ ∀ x : ℝ, ∀ᶠ a in f, ↑x < m a := by
simp only [nhds_top', mem_Ioi, tendsto_infi, tendsto_principal]
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
+-/
/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
+#print EReal.nhds_bot /-
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
#align ereal.nhds_bot EReal.nhds_bot
+-/
+#print EReal.nhds_bot' /-
theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
by
rw [nhds_bot]
@@ -259,28 +298,36 @@ theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
· exact iInf_le _ _
· exact (iInf_le _ 0).trans (by simp)
#align ereal.nhds_bot' EReal.nhds_bot'
+-/
+#print EReal.mem_nhds_bot_iff /-
theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y : ℝ, Iio (y : EReal) ⊆ s :=
by
rw [nhds_bot', mem_infi_of_directed]
· rfl
exact fun x y => ⟨min x y, by simp [le_refl], by simp [le_refl]⟩
#align ereal.mem_nhds_bot_iff EReal.mem_nhds_bot_iff
+-/
+#print EReal.tendsto_nhds_bot_iff_real /-
theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊥) ↔ ∀ x : ℝ, ∀ᶠ a in f, m a < x := by
simp only [nhds_bot', mem_Iio, tendsto_infi, tendsto_principal]
#align ereal.tendsto_nhds_bot_iff_real EReal.tendsto_nhds_bot_iff_real
+-/
/-! ### Continuity of addition -/
+#print EReal.continuousAt_add_coe_coe /-
theorem continuousAt_add_coe_coe (a b : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, b) := by
simp only [ContinuousAt, nhds_coe_coe, ← coe_add, tendsto_map'_iff, (· ∘ ·), tendsto_coe,
tendsto_add]
#align ereal.continuous_at_add_coe_coe EReal.continuousAt_add_coe_coe
+-/
+#print EReal.continuousAt_add_top_coe /-
theorem continuousAt_add_top_coe (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, a) :=
by
@@ -294,7 +341,9 @@ theorem continuousAt_add_top_coe (a : ℝ) :
convert add_lt_add hx hy
simp
#align ereal.continuous_at_add_top_coe EReal.continuousAt_add_top_coe
+-/
+#print EReal.continuousAt_add_coe_top /-
theorem continuousAt_add_coe_top (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊤) :=
by
@@ -303,7 +352,9 @@ theorem continuousAt_add_coe_top (a : ℝ) :
simp_rw [add_comm]
exact continuous_at_add_top_coe a
#align ereal.continuous_at_add_coe_top EReal.continuousAt_add_coe_top
+-/
+#print EReal.continuousAt_add_top_top /-
theorem continuousAt_add_top_top : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, ⊤) :=
by
simp only [ContinuousAt, tendsto_nhds_top_iff_real, top_add_top, nhds_prod_eq]
@@ -316,7 +367,9 @@ theorem continuousAt_add_top_top : ContinuousAt (fun p : EReal × EReal => p.1 +
convert add_lt_add hx hy
simp
#align ereal.continuous_at_add_top_top EReal.continuousAt_add_top_top
+-/
+#print EReal.continuousAt_add_bot_coe /-
theorem continuousAt_add_bot_coe (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, a) :=
by
@@ -329,7 +382,9 @@ theorem continuousAt_add_bot_coe (a : ℝ) :
convert add_lt_add hx hy
rw [sub_add_cancel]
#align ereal.continuous_at_add_bot_coe EReal.continuousAt_add_bot_coe
+-/
+#print EReal.continuousAt_add_coe_bot /-
theorem continuousAt_add_coe_bot (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊥) :=
by
@@ -338,7 +393,9 @@ theorem continuousAt_add_coe_bot (a : ℝ) :
simp_rw [add_comm]
exact continuous_at_add_bot_coe a
#align ereal.continuous_at_add_coe_bot EReal.continuousAt_add_coe_bot
+-/
+#print EReal.continuousAt_add_bot_bot /-
theorem continuousAt_add_bot_bot : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, ⊥) :=
by
simp only [ContinuousAt, tendsto_nhds_bot_iff_real, nhds_prod_eq, bot_add]
@@ -351,7 +408,9 @@ theorem continuousAt_add_bot_bot : ContinuousAt (fun p : EReal × EReal => p.1 +
convert add_lt_add hx hy
simp
#align ereal.continuous_at_add_bot_bot EReal.continuousAt_add_bot_bot
+-/
+#print EReal.continuousAt_add /-
/-- The addition on `ereal` is continuous except where it doesn't make sense (i.e., at `(⊥, ⊤)`
and at `(⊤, ⊥)`). -/
theorem continuousAt_add {p : EReal × EReal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥) (h' : p.1 ≠ ⊥ ∨ p.2 ≠ ⊤) :
@@ -369,18 +428,23 @@ theorem continuousAt_add {p : EReal × EReal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥)
· exact continuous_at_add_top_coe _
· exact continuous_at_add_top_top
#align ereal.continuous_at_add EReal.continuousAt_add
+-/
/-! ### Negation-/
+#print EReal.negHomeo /-
/-- Negation on `ereal` as a homeomorphism -/
def negHomeo : EReal ≃ₜ EReal :=
negOrderIso.toHomeomorph
#align ereal.neg_homeo EReal.negHomeo
+-/
+#print EReal.continuous_neg /-
theorem continuous_neg : Continuous fun x : EReal => -x :=
negHomeo.Continuous
#align ereal.continuous_neg EReal.continuous_neg
+-/
end EReal
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -214,7 +214,7 @@ theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
/-! ### Neighborhoods of infinity -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
#align ereal.nhds_top EReal.nhds_top
@@ -243,7 +243,7 @@ theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter
simp only [nhds_top', mem_Ioi, tendsto_infi, tendsto_principal]
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
#align ereal.nhds_bot EReal.nhds_bot
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -55,7 +55,7 @@ instance : T2Space EReal := by infer_instance
instance : SecondCountableTopology EReal :=
⟨by
refine'
- ⟨⋃ q : ℚ, {{ a : EReal | a < (q : ℝ) }, { a : EReal | ((q : ℝ) : EReal) < a }},
+ ⟨⋃ q : ℚ, {{a : EReal | a < (q : ℝ)}, {a : EReal | ((q : ℝ) : EReal) < a}},
countable_Union fun a => (countable_singleton _).insert _, _⟩
refine'
le_antisymm
@@ -64,10 +64,9 @@ instance : SecondCountableTopology EReal :=
_
apply le_generateFrom fun s h => _
rcases h with ⟨a, hs | hs⟩ <;>
- [rw [show s = ⋃ q ∈ { q : ℚ | a < (q : ℝ) }, { b | ((q : ℝ) : EReal) < b } by ext x;
+ [rw [show s = ⋃ q ∈ {q : ℚ | a < (q : ℝ)}, {b | ((q : ℝ) : EReal) < b} by ext x;
simpa only [hs, exists_prop, mem_Union] using lt_iff_exists_rat_btwn];
- rw [show s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) } by
- ext x;
+ rw [show s = ⋃ q ∈ {q : ℚ | ((q : ℝ) : EReal) < a}, {b | b < ((q : ℝ) : EReal)} by ext x;
simpa only [hs, and_comm', exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
· apply isOpen_iUnion; intro q
apply isOpen_iUnion; intro hq
@@ -83,12 +82,12 @@ theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
· rw [@OrderTopology.topology_eq_generate_intervals EReal _, ← coinduced_le_iff_le_induced]
refine' le_generateFrom fun s ha => _
rcases ha with ⟨a, rfl | rfl⟩
- show IsOpen { b : ℝ | a < ↑b }
+ show IsOpen {b : ℝ | a < ↑b}
· induction a using EReal.rec
· simp only [isOpen_univ, bot_lt_coe, set_of_true]
· simp only [EReal.coe_lt_coe_iff]; exact isOpen_Ioi
· simp only [set_of_false, isOpen_empty, not_top_lt]
- show IsOpen { b : ℝ | ↑b < a }
+ show IsOpen {b : ℝ | ↑b < a}
· induction a using EReal.rec
· simp only [not_lt_bot, set_of_false, isOpen_empty]
· simp only [EReal.coe_lt_coe_iff]; exact isOpen_Iio
@@ -103,7 +102,7 @@ theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
⟨embedding_coe, by
- convert@isOpen_Ioo EReal _ _ _ ⊥ ⊤
+ convert @isOpen_Ioo EReal _ _ _ ⊥ ⊤
ext x
induction x using EReal.rec
· simp only [left_mem_Ioo, mem_range, coe_ne_bot, exists_false, not_false_iff]
@@ -164,7 +163,7 @@ theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → EReal) :=
· rw [@OrderTopology.topology_eq_generate_intervals EReal _, ← coinduced_le_iff_le_induced]
refine' le_generateFrom fun s ha => _
rcases ha with ⟨a, rfl | rfl⟩
- show IsOpen { b : ℝ≥0∞ | a < ↑b }
+ show IsOpen {b : ℝ≥0∞ | a < ↑b}
· induction' a using EReal.rec with x
· simp only [isOpen_univ, bot_lt_coe_ennreal, set_of_true]
· rcases le_or_lt 0 x with (h | h)
@@ -176,7 +175,7 @@ theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → EReal) :=
(EReal.coe_lt_coe_iff.2 h).trans_le (coe_ennreal_nonneg _)
simp only [this, isOpen_univ, set_of_true]
· simp only [set_of_false, isOpen_empty, not_top_lt]
- show IsOpen { b : ℝ≥0∞ | ↑b < a }
+ show IsOpen {b : ℝ≥0∞ | ↑b < a}
· induction' a using EReal.rec with x
· simp only [not_lt_bot, set_of_false, isOpen_empty]
· rcases le_or_lt 0 x with (h | h)
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -65,9 +65,9 @@ instance : SecondCountableTopology EReal :=
apply le_generateFrom fun s h => _
rcases h with ⟨a, hs | hs⟩ <;>
[rw [show s = ⋃ q ∈ { q : ℚ | a < (q : ℝ) }, { b | ((q : ℝ) : EReal) < b } by ext x;
- simpa only [hs, exists_prop, mem_Union] using
- lt_iff_exists_rat_btwn];rw [show
- s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) } by ext x;
+ simpa only [hs, exists_prop, mem_Union] using lt_iff_exists_rat_btwn];
+ rw [show s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) } by
+ ext x;
simpa only [hs, and_comm', exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
· apply isOpen_iUnion; intro q
apply isOpen_iUnion; intro hq
@@ -144,7 +144,7 @@ theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set EReal) := fun a ha =>
ContinuousAt.continuousWithinAt
- (tendsto_toReal (by simp [not_or] at ha; exact ha.2) (by simp [not_or] at ha; exact ha.1))
+ (tendsto_toReal (by simp [not_or] at ha ; exact ha.2) (by simp [not_or] at ha ; exact ha.1))
#align ereal.continuous_on_to_real EReal.continuousOn_toReal
/-- The set of finite `ereal` numbers is homeomorphic to `ℝ`. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -38,7 +38,7 @@ noncomputable section
open Classical Set Filter Metric TopologicalSpace
-open Classical Topology ENNReal NNReal BigOperators Filter
+open scoped Classical Topology ENNReal NNReal BigOperators Filter
variable {α : Type _} [TopologicalSpace α]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -77,12 +77,6 @@ instance : SecondCountableTopology EReal :=
/-! ### Real coercion -/
-/- warning: ereal.embedding_coe -> EReal.embedding_coe is a dubious translation:
-lean 3 declaration is
- Embedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))))
-but is expected to have type
- Embedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.instTopologicalSpaceEReal Real.toEReal
-Case conversion may be inaccurate. Consider using '#align ereal.embedding_coe EReal.embedding_coeₓ'. -/
theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
@@ -107,12 +101,6 @@ theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
simp only [imp_self, EReal.coe_eq_coe_iff]⟩
#align ereal.embedding_coe EReal.embedding_coe
-/- warning: ereal.open_embedding_coe -> EReal.openEmbedding_coe is a dubious translation:
-lean 3 declaration is
- OpenEmbedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))))
-but is expected to have type
- OpenEmbedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.instTopologicalSpaceEReal Real.toEReal
-Case conversion may be inaccurate. Consider using '#align ereal.open_embedding_coe EReal.openEmbedding_coeₓ'. -/
theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
⟨embedding_coe, by
convert@isOpen_Ioo EReal _ _ _ ⊥ ⊤
@@ -123,65 +111,29 @@ theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
· simp only [mem_range, right_mem_Ioo, exists_false, coe_ne_top]⟩
#align ereal.open_embedding_coe EReal.openEmbedding_coe
-/- warning: ereal.tendsto_coe -> EReal.tendsto_coe is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> Real} {a : Real}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (m a)) f (nhds.{0} EReal EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))) (Filter.Tendsto.{u1, 0} α Real m f (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) a))
-but is expected to have type
- forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> Real} {a : Real}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => Real.toEReal (m a)) f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Real.toEReal a))) (Filter.Tendsto.{u1, 0} α Real m f (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) a))
-Case conversion may be inaccurate. Consider using '#align ereal.tendsto_coe EReal.tendsto_coeₓ'. -/
@[norm_cast]
theorem tendsto_coe {α : Type _} {f : Filter α} {m : α → ℝ} {a : ℝ} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe.tendsto_nhds_iff.symm
#align ereal.tendsto_coe EReal.tendsto_coe
-/- warning: continuous_coe_real_ereal -> continuous_coe_real_ereal is a dubious translation:
-lean 3 declaration is
- Continuous.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))))
-but is expected to have type
- Continuous.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.instTopologicalSpaceEReal Real.toEReal
-Case conversion may be inaccurate. Consider using '#align continuous_coe_real_ereal continuous_coe_real_erealₓ'. -/
theorem continuous_coe_real_ereal : Continuous (coe : ℝ → EReal) :=
embedding_coe.Continuous
#align continuous_coe_real_ereal continuous_coe_real_ereal
-/- warning: ereal.continuous_coe_iff -> EReal.continuous_coe_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.topologicalSpace (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (f a))) (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.instTopologicalSpaceEReal (fun (a : α) => Real.toEReal (f a))) (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f)
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_coe_iff EReal.continuous_coe_iffₓ'. -/
theorem continuous_coe_iff {f : α → ℝ} : (Continuous fun a => (f a : EReal)) ↔ Continuous f :=
embedding_coe.continuous_iff.symm
#align ereal.continuous_coe_iff EReal.continuous_coe_iff
-/- warning: ereal.nhds_coe -> EReal.nhds_coe is a dubious translation:
-lean 3 declaration is
- forall {r : Real}, Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) r)) (Filter.map.{0, 0} Real EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe)))) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r))
-but is expected to have type
- forall {r : Real}, Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Real.toEReal r)) (Filter.map.{0, 0} Real EReal Real.toEReal (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r))
-Case conversion may be inaccurate. Consider using '#align ereal.nhds_coe EReal.nhds_coeₓ'. -/
theorem nhds_coe {r : ℝ} : 𝓝 (r : EReal) = (𝓝 r).map coe :=
(openEmbedding_coe.map_nhds_eq r).symm
#align ereal.nhds_coe EReal.nhds_coe
-/- warning: ereal.nhds_coe_coe -> EReal.nhds_coe_coe is a dubious translation:
-lean 3 declaration is
- forall {r : Real} {p : Real}, Eq.{1} (Filter.{0} (Prod.{0, 0} EReal EReal)) (nhds.{0} (Prod.{0, 0} EReal EReal) (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) r) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) p))) (Filter.map.{0, 0} (Prod.{0, 0} Real Real) (Prod.{0, 0} EReal EReal) (fun (p : Prod.{0, 0} Real Real) => Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (Prod.fst.{0, 0} Real Real p)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (Prod.snd.{0, 0} Real Real p))) (nhds.{0} (Prod.{0, 0} Real Real) (Prod.topologicalSpace.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Prod.mk.{0, 0} Real Real r p)))
-but is expected to have type
- forall {r : Real} {p : Real}, Eq.{1} (Filter.{0} (Prod.{0, 0} EReal EReal)) (nhds.{0} (Prod.{0, 0} EReal EReal) (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) (Prod.mk.{0, 0} EReal EReal (Real.toEReal r) (Real.toEReal p))) (Filter.map.{0, 0} (Prod.{0, 0} Real Real) (Prod.{0, 0} EReal EReal) (fun (p : Prod.{0, 0} Real Real) => Prod.mk.{0, 0} EReal EReal (Real.toEReal (Prod.fst.{0, 0} Real Real p)) (Real.toEReal (Prod.snd.{0, 0} Real Real p))) (nhds.{0} (Prod.{0, 0} Real Real) (instTopologicalSpaceProd.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Prod.mk.{0, 0} Real Real r p)))
-Case conversion may be inaccurate. Consider using '#align ereal.nhds_coe_coe EReal.nhds_coe_coeₓ'. -/
theorem nhds_coe_coe {r p : ℝ} :
𝓝 ((r : EReal), (p : EReal)) = (𝓝 (r, p)).map fun p : ℝ × ℝ => (p.1, p.2) :=
((openEmbedding_coe.Prod openEmbedding_coe).map_nhds_eq (r, p)).symm
#align ereal.nhds_coe_coe EReal.nhds_coe_coe
-/- warning: ereal.tendsto_to_real -> EReal.tendsto_toReal is a dubious translation:
-lean 3 declaration is
- forall {a : EReal}, (Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) -> (Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) -> (Filter.Tendsto.{0, 0} EReal Real EReal.toReal (nhds.{0} EReal EReal.topologicalSpace a) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (EReal.toReal a)))
-but is expected to have type
- forall {a : EReal}, (Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) -> (Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) -> (Filter.Tendsto.{0, 0} EReal Real EReal.toReal (nhds.{0} EReal EReal.instTopologicalSpaceEReal a) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (EReal.toReal a)))
-Case conversion may be inaccurate. Consider using '#align ereal.tendsto_to_real EReal.tendsto_toRealₓ'. -/
theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
Tendsto EReal.toReal (𝓝 a) (𝓝 a.toReal) :=
by
@@ -190,23 +142,11 @@ theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
exact tendsto_id
#align ereal.tendsto_to_real EReal.tendsto_toReal
-/- warning: ereal.continuous_on_to_real -> EReal.continuousOn_toReal is a dubious translation:
-lean 3 declaration is
- ContinuousOn.{0, 0} EReal Real EReal.topologicalSpace (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.toReal (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.booleanAlgebra.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.hasInsert.{0} EReal) (Bot.bot.{0} EReal EReal.hasBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.hasSingleton.{0} EReal) (Top.top.{0} EReal EReal.hasTop))))
-but is expected to have type
- ContinuousOn.{0, 0} EReal Real EReal.instTopologicalSpaceEReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.toReal (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.instBooleanAlgebraSet.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.instInsertSet.{0} EReal) (Bot.bot.{0} EReal instERealBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.instSingletonSet.{0} EReal) (Top.top.{0} EReal EReal.instTopEReal))))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_on_to_real EReal.continuousOn_toRealₓ'. -/
theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set EReal) := fun a ha =>
ContinuousAt.continuousWithinAt
(tendsto_toReal (by simp [not_or] at ha; exact ha.2) (by simp [not_or] at ha; exact ha.1))
#align ereal.continuous_on_to_real EReal.continuousOn_toReal
-/- warning: ereal.ne_bot_top_homeomorph_real -> EReal.neBotTopHomeomorphReal is a dubious translation:
-lean 3 declaration is
- Homeomorph.{0, 0} (coeSort.{1, 2} (Set.{0} EReal) Type (Set.hasCoeToSort.{0} EReal) (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.booleanAlgebra.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.hasInsert.{0} EReal) (Bot.bot.{0} EReal EReal.hasBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.hasSingleton.{0} EReal) (Top.top.{0} EReal EReal.hasTop))))) Real (Subtype.topologicalSpace.{0} EReal (fun (x : EReal) => Membership.Mem.{0, 0} EReal (Set.{0} EReal) (Set.hasMem.{0} EReal) x (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.booleanAlgebra.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.hasInsert.{0} EReal) (Bot.bot.{0} EReal EReal.hasBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.hasSingleton.{0} EReal) (Top.top.{0} EReal EReal.hasTop))))) EReal.topologicalSpace) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))
-but is expected to have type
- Homeomorph.{0, 0} (Set.Elem.{0} EReal (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.instBooleanAlgebraSet.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.instInsertSet.{0} EReal) (Bot.bot.{0} EReal instERealBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.instSingletonSet.{0} EReal) (Top.top.{0} EReal EReal.instTopEReal))))) Real (instTopologicalSpaceSubtype.{0} EReal (fun (x : EReal) => Membership.mem.{0, 0} EReal (Set.{0} EReal) (Set.instMembershipSet.{0} EReal) x (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.instBooleanAlgebraSet.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.instInsertSet.{0} EReal) (Bot.bot.{0} EReal instERealBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.instSingletonSet.{0} EReal) (Top.top.{0} EReal EReal.instTopEReal))))) EReal.instTopologicalSpaceEReal) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))
-Case conversion may be inaccurate. Consider using '#align ereal.ne_bot_top_homeomorph_real EReal.neBotTopHomeomorphRealₓ'. -/
/-- The set of finite `ereal` numbers is homeomorphic to `ℝ`. -/
def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set EReal) ≃ₜ ℝ :=
{
@@ -218,12 +158,6 @@ def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set EReal) ≃ₜ ℝ :=
/-! ### ennreal coercion -/
-/- warning: ereal.embedding_coe_ennreal -> EReal.embedding_coe_ennreal is a dubious translation:
-lean 3 declaration is
- Embedding.{0, 0} ENNReal EReal ENNReal.topologicalSpace EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))))
-but is expected to have type
- Embedding.{0, 0} ENNReal EReal ENNReal.instTopologicalSpaceENNReal EReal.instTopologicalSpaceEReal ENNReal.toEReal
-Case conversion may be inaccurate. Consider using '#align ereal.embedding_coe_ennreal EReal.embedding_coe_ennrealₓ'. -/
theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
@@ -263,34 +197,16 @@ theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → EReal) :=
simp only [imp_self, coe_ennreal_eq_coe_ennreal_iff]⟩
#align ereal.embedding_coe_ennreal EReal.embedding_coe_ennreal
-/- warning: ereal.tendsto_coe_ennreal -> EReal.tendsto_coe_ennreal is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> ENNReal} {a : ENNReal}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))) (m a)) f (nhds.{0} EReal EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))) a))) (Filter.Tendsto.{u1, 0} α ENNReal m f (nhds.{0} ENNReal ENNReal.topologicalSpace a))
-but is expected to have type
- forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> ENNReal} {a : ENNReal}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => ENNReal.toEReal (m a)) f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (ENNReal.toEReal a))) (Filter.Tendsto.{u1, 0} α ENNReal m f (nhds.{0} ENNReal ENNReal.instTopologicalSpaceENNReal a))
-Case conversion may be inaccurate. Consider using '#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_ennrealₓ'. -/
@[norm_cast]
theorem tendsto_coe_ennreal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe_ennreal.tendsto_nhds_iff.symm
#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_ennreal
-/- warning: continuous_coe_ennreal_ereal -> continuous_coe_ennreal_ereal is a dubious translation:
-lean 3 declaration is
- Continuous.{0, 0} ENNReal EReal ENNReal.topologicalSpace EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))))
-but is expected to have type
- Continuous.{0, 0} ENNReal EReal ENNReal.instTopologicalSpaceENNReal EReal.instTopologicalSpaceEReal ENNReal.toEReal
-Case conversion may be inaccurate. Consider using '#align continuous_coe_ennreal_ereal continuous_coe_ennreal_erealₓ'. -/
theorem continuous_coe_ennreal_ereal : Continuous (coe : ℝ≥0∞ → EReal) :=
embedding_coe_ennreal.Continuous
#align continuous_coe_ennreal_ereal continuous_coe_ennreal_ereal
-/- warning: ereal.continuous_coe_ennreal_iff -> EReal.continuous_coe_ennreal_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> ENNReal}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.topologicalSpace (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))) (f a))) (Continuous.{u1, 0} α ENNReal _inst_1 ENNReal.topologicalSpace f)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> ENNReal}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.instTopologicalSpaceEReal (fun (a : α) => ENNReal.toEReal (f a))) (Continuous.{u1, 0} α ENNReal _inst_1 ENNReal.instTopologicalSpaceENNReal f)
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_coe_ennreal_iff EReal.continuous_coe_ennreal_iffₓ'. -/
theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
(Continuous fun a => (f a : EReal)) ↔ Continuous f :=
embedding_coe_ennreal.continuous_iff.symm
@@ -299,23 +215,11 @@ theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
/-! ### Neighborhoods of infinity -/
-/- warning: ereal.nhds_top -> EReal.nhds_top is a dubious translation:
-lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
-but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
-Case conversion may be inaccurate. Consider using '#align ereal.nhds_top EReal.nhds_topₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
#align ereal.nhds_top EReal.nhds_top
-/- warning: ereal.nhds_top' -> EReal.nhds_top' is a dubious translation:
-lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
-but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
-Case conversion may be inaccurate. Consider using '#align ereal.nhds_top' EReal.nhds_top'ₓ'. -/
theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
by
rw [nhds_top]
@@ -328,12 +232,6 @@ theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
· simpa using hr
#align ereal.nhds_top' EReal.nhds_top'
-/- warning: ereal.mem_nhds_top_iff -> EReal.mem_nhds_top_iff is a dubious translation:
-lean 3 declaration is
- forall {s : Set.{0} EReal}, Iff (Membership.Mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (Filter.hasMem.{0} EReal) s (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.hasSubset.{0} EReal) (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) y)) s))
-but is expected to have type
- forall {s : Set.{0} EReal}, Iff (Membership.mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (instMembershipSetFilter.{0} EReal) s (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.instHasSubsetSet.{0} EReal) (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal y)) s))
-Case conversion may be inaccurate. Consider using '#align ereal.mem_nhds_top_iff EReal.mem_nhds_top_iffₓ'. -/
theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y : ℝ, Ioi (y : EReal) ⊆ s :=
by
rw [nhds_top', mem_infi_of_directed]
@@ -341,34 +239,16 @@ theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y :
exact fun x y => ⟨max x y, by simp [le_refl], by simp [le_refl]⟩
#align ereal.mem_nhds_top_iff EReal.mem_nhds_top_iff
-/- warning: ereal.tendsto_nhds_top_iff_real -> EReal.tendsto_nhds_top_iff_real is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toHasLt.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x) (m a)) f)
-but is expected to have type
- forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder)) (Real.toEReal x) (m a)) f)
-Case conversion may be inaccurate. Consider using '#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_realₓ'. -/
theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊤) ↔ ∀ x : ℝ, ∀ᶠ a in f, ↑x < m a := by
simp only [nhds_top', mem_Ioi, tendsto_infi, tendsto_principal]
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
-/- warning: ereal.nhds_bot -> EReal.nhds_bot is a dubious translation:
-lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
-but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
-Case conversion may be inaccurate. Consider using '#align ereal.nhds_bot EReal.nhds_botₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
#align ereal.nhds_bot EReal.nhds_bot
-/- warning: ereal.nhds_bot' -> EReal.nhds_bot' is a dubious translation:
-lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
-but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
-Case conversion may be inaccurate. Consider using '#align ereal.nhds_bot' EReal.nhds_bot'ₓ'. -/
theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
by
rw [nhds_bot]
@@ -381,12 +261,6 @@ theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
· exact (iInf_le _ 0).trans (by simp)
#align ereal.nhds_bot' EReal.nhds_bot'
-/- warning: ereal.mem_nhds_bot_iff -> EReal.mem_nhds_bot_iff is a dubious translation:
-lean 3 declaration is
- forall {s : Set.{0} EReal}, Iff (Membership.Mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (Filter.hasMem.{0} EReal) s (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.hasSubset.{0} EReal) (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) y)) s))
-but is expected to have type
- forall {s : Set.{0} EReal}, Iff (Membership.mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (instMembershipSetFilter.{0} EReal) s (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.instHasSubsetSet.{0} EReal) (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal y)) s))
-Case conversion may be inaccurate. Consider using '#align ereal.mem_nhds_bot_iff EReal.mem_nhds_bot_iffₓ'. -/
theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y : ℝ, Iio (y : EReal) ⊆ s :=
by
rw [nhds_bot', mem_infi_of_directed]
@@ -394,12 +268,6 @@ theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y :
exact fun x y => ⟨min x y, by simp [le_refl], by simp [le_refl]⟩
#align ereal.mem_nhds_bot_iff EReal.mem_nhds_bot_iff
-/- warning: ereal.tendsto_nhds_bot_iff_real -> EReal.tendsto_nhds_bot_iff_real is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toHasLt.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) (m a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x)) f)
-but is expected to have type
- forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder)) (m a) (Real.toEReal x)) f)
-Case conversion may be inaccurate. Consider using '#align ereal.tendsto_nhds_bot_iff_real EReal.tendsto_nhds_bot_iff_realₓ'. -/
theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊥) ↔ ∀ x : ℝ, ∀ᶠ a in f, m a < x := by
simp only [nhds_bot', mem_Iio, tendsto_infi, tendsto_principal]
@@ -408,24 +276,12 @@ theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → EReal} {f : Filter
/-! ### Continuity of addition -/
-/- warning: ereal.continuous_at_add_coe_coe -> EReal.continuousAt_add_coe_coe is a dubious translation:
-lean 3 declaration is
- forall (a : Real) (b : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) b))
-but is expected to have type
- forall (a : Real) (b : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Real.toEReal a) (Real.toEReal b))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_coe_coe EReal.continuousAt_add_coe_coeₓ'. -/
theorem continuousAt_add_coe_coe (a b : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, b) := by
simp only [ContinuousAt, nhds_coe_coe, ← coe_add, tendsto_map'_iff, (· ∘ ·), tendsto_coe,
tendsto_add]
#align ereal.continuous_at_add_coe_coe EReal.continuousAt_add_coe_coe
-/- warning: ereal.continuous_at_add_top_coe -> EReal.continuousAt_add_top_coe is a dubious translation:
-lean 3 declaration is
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.hasTop) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))
-but is expected to have type
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.instTopEReal) (Real.toEReal a))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_top_coe EReal.continuousAt_add_top_coeₓ'. -/
theorem continuousAt_add_top_coe (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, a) :=
by
@@ -440,12 +296,6 @@ theorem continuousAt_add_top_coe (a : ℝ) :
simp
#align ereal.continuous_at_add_top_coe EReal.continuousAt_add_top_coe
-/- warning: ereal.continuous_at_add_coe_top -> EReal.continuousAt_add_coe_top is a dubious translation:
-lean 3 declaration is
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a) (Top.top.{0} EReal EReal.hasTop))
-but is expected to have type
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Real.toEReal a) (Top.top.{0} EReal EReal.instTopEReal))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_coe_top EReal.continuousAt_add_coe_topₓ'. -/
theorem continuousAt_add_coe_top (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊤) :=
by
@@ -455,12 +305,6 @@ theorem continuousAt_add_coe_top (a : ℝ) :
exact continuous_at_add_top_coe a
#align ereal.continuous_at_add_coe_top EReal.continuousAt_add_coe_top
-/- warning: ereal.continuous_at_add_top_top -> EReal.continuousAt_add_top_top is a dubious translation:
-lean 3 declaration is
- ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.hasTop) (Top.top.{0} EReal EReal.hasTop))
-but is expected to have type
- ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.instTopEReal) (Top.top.{0} EReal EReal.instTopEReal))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_top_top EReal.continuousAt_add_top_topₓ'. -/
theorem continuousAt_add_top_top : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, ⊤) :=
by
simp only [ContinuousAt, tendsto_nhds_top_iff_real, top_add_top, nhds_prod_eq]
@@ -474,12 +318,6 @@ theorem continuousAt_add_top_top : ContinuousAt (fun p : EReal × EReal => p.1 +
simp
#align ereal.continuous_at_add_top_top EReal.continuousAt_add_top_top
-/- warning: ereal.continuous_at_add_bot_coe -> EReal.continuousAt_add_bot_coe is a dubious translation:
-lean 3 declaration is
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal EReal.hasBot) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))
-but is expected to have type
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal instERealBot) (Real.toEReal a))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_bot_coe EReal.continuousAt_add_bot_coeₓ'. -/
theorem continuousAt_add_bot_coe (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, a) :=
by
@@ -493,12 +331,6 @@ theorem continuousAt_add_bot_coe (a : ℝ) :
rw [sub_add_cancel]
#align ereal.continuous_at_add_bot_coe EReal.continuousAt_add_bot_coe
-/- warning: ereal.continuous_at_add_coe_bot -> EReal.continuousAt_add_coe_bot is a dubious translation:
-lean 3 declaration is
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a) (Bot.bot.{0} EReal EReal.hasBot))
-but is expected to have type
- forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Real.toEReal a) (Bot.bot.{0} EReal instERealBot))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_coe_bot EReal.continuousAt_add_coe_botₓ'. -/
theorem continuousAt_add_coe_bot (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊥) :=
by
@@ -508,12 +340,6 @@ theorem continuousAt_add_coe_bot (a : ℝ) :
exact continuous_at_add_bot_coe a
#align ereal.continuous_at_add_coe_bot EReal.continuousAt_add_coe_bot
-/- warning: ereal.continuous_at_add_bot_bot -> EReal.continuousAt_add_bot_bot is a dubious translation:
-lean 3 declaration is
- ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal EReal.hasBot) (Bot.bot.{0} EReal EReal.hasBot))
-but is expected to have type
- ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal instERealBot) (Bot.bot.{0} EReal instERealBot))
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_bot_bot EReal.continuousAt_add_bot_botₓ'. -/
theorem continuousAt_add_bot_bot : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, ⊥) :=
by
simp only [ContinuousAt, tendsto_nhds_bot_iff_real, nhds_prod_eq, bot_add]
@@ -527,12 +353,6 @@ theorem continuousAt_add_bot_bot : ContinuousAt (fun p : EReal × EReal => p.1 +
simp
#align ereal.continuous_at_add_bot_bot EReal.continuousAt_add_bot_bot
-/- warning: ereal.continuous_at_add -> EReal.continuousAt_add is a dubious translation:
-lean 3 declaration is
- forall {p : Prod.{0, 0} EReal EReal}, (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.hasTop)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Bot.bot.{0} EReal EReal.hasBot))) -> (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Bot.bot.{0} EReal EReal.hasBot)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.hasTop))) -> (ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) p)
-but is expected to have type
- forall {p : Prod.{0, 0} EReal EReal}, (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.instTopEReal)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Bot.bot.{0} EReal instERealBot))) -> (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Bot.bot.{0} EReal instERealBot)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.instTopEReal))) -> (ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) p)
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add EReal.continuousAt_addₓ'. -/
/-- The addition on `ereal` is continuous except where it doesn't make sense (i.e., at `(⊥, ⊤)`
and at `(⊤, ⊥)`). -/
theorem continuousAt_add {p : EReal × EReal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥) (h' : p.1 ≠ ⊥ ∨ p.2 ≠ ⊤) :
@@ -554,23 +374,11 @@ theorem continuousAt_add {p : EReal × EReal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥)
/-! ### Negation-/
-/- warning: ereal.neg_homeo -> EReal.negHomeo is a dubious translation:
-lean 3 declaration is
- Homeomorph.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace
-but is expected to have type
- Homeomorph.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal
-Case conversion may be inaccurate. Consider using '#align ereal.neg_homeo EReal.negHomeoₓ'. -/
/-- Negation on `ereal` as a homeomorphism -/
def negHomeo : EReal ≃ₜ EReal :=
negOrderIso.toHomeomorph
#align ereal.neg_homeo EReal.negHomeo
-/- warning: ereal.continuous_neg -> EReal.continuous_neg is a dubious translation:
-lean 3 declaration is
- Continuous.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace (fun (x : EReal) => Neg.neg.{0} EReal EReal.hasNeg x)
-but is expected to have type
- Continuous.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal (fun (x : EReal) => Neg.neg.{0} EReal EReal.instNegEReal x)
-Case conversion may be inaccurate. Consider using '#align ereal.continuous_neg EReal.continuous_negₓ'. -/
theorem continuous_neg : Continuous fun x : EReal => -x :=
negHomeo.Continuous
#align ereal.continuous_neg EReal.continuous_neg
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -64,19 +64,13 @@ instance : SecondCountableTopology EReal :=
_
apply le_generateFrom fun s h => _
rcases h with ⟨a, hs | hs⟩ <;>
- [rw [show s = ⋃ q ∈ { q : ℚ | a < (q : ℝ) }, { b | ((q : ℝ) : EReal) < b }
- by
- ext x
+ [rw [show s = ⋃ q ∈ { q : ℚ | a < (q : ℝ) }, { b | ((q : ℝ) : EReal) < b } by ext x;
simpa only [hs, exists_prop, mem_Union] using
lt_iff_exists_rat_btwn];rw [show
- s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) }
- by
- ext x
+ s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) } by ext x;
simpa only [hs, and_comm', exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
- · apply isOpen_iUnion
- intro q
- apply isOpen_iUnion
- intro hq
+ · apply isOpen_iUnion; intro q
+ apply isOpen_iUnion; intro hq
apply generate_open.basic
exact mem_Union.2 ⟨q, by simp⟩⟩
@@ -98,14 +92,12 @@ theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
show IsOpen { b : ℝ | a < ↑b }
· induction a using EReal.rec
· simp only [isOpen_univ, bot_lt_coe, set_of_true]
- · simp only [EReal.coe_lt_coe_iff]
- exact isOpen_Ioi
+ · simp only [EReal.coe_lt_coe_iff]; exact isOpen_Ioi
· simp only [set_of_false, isOpen_empty, not_top_lt]
show IsOpen { b : ℝ | ↑b < a }
· induction a using EReal.rec
· simp only [not_lt_bot, set_of_false, isOpen_empty]
- · simp only [EReal.coe_lt_coe_iff]
- exact isOpen_Iio
+ · simp only [EReal.coe_lt_coe_iff]; exact isOpen_Iio
· simp only [isOpen_univ, coe_lt_top, set_of_true]
· rw [@OrderTopology.topology_eq_generate_intervals ℝ _]
refine' le_generateFrom fun s ha => _
@@ -206,13 +198,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align ereal.continuous_on_to_real EReal.continuousOn_toRealₓ'. -/
theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set EReal) := fun a ha =>
ContinuousAt.continuousWithinAt
- (tendsto_toReal
- (by
- simp [not_or] at ha
- exact ha.2)
- (by
- simp [not_or] at ha
- exact ha.1))
+ (tendsto_toReal (by simp [not_or] at ha; exact ha.2) (by simp [not_or] at ha; exact ha.1))
#align ereal.continuous_on_to_real EReal.continuousOn_toReal
/- warning: ereal.ne_bot_top_homeomorph_real -> EReal.neBotTopHomeomorphReal is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -67,8 +67,9 @@ instance : SecondCountableTopology EReal :=
[rw [show s = ⋃ q ∈ { q : ℚ | a < (q : ℝ) }, { b | ((q : ℝ) : EReal) < b }
by
ext x
- simpa only [hs, exists_prop, mem_Union] using lt_iff_exists_rat_btwn],
- rw [show s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) }
+ simpa only [hs, exists_prop, mem_Union] using
+ lt_iff_exists_rat_btwn];rw [show
+ s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) }
by
ext x
simpa only [hs, and_comm', exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -356,7 +356,7 @@ theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y :
/- warning: ereal.tendsto_nhds_top_iff_real -> EReal.tendsto_nhds_top_iff_real is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x) (m a)) f)
+ forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toHasLt.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x) (m a)) f)
but is expected to have type
forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder)) (Real.toEReal x) (m a)) f)
Case conversion may be inaccurate. Consider using '#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_realₓ'. -/
@@ -409,7 +409,7 @@ theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y :
/- warning: ereal.tendsto_nhds_bot_iff_real -> EReal.tendsto_nhds_bot_iff_real is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) (m a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x)) f)
+ forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toHasLt.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) (m a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x)) f)
but is expected to have type
forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder)) (m a) (Real.toEReal x)) f)
Case conversion may be inaccurate. Consider using '#align ereal.tendsto_nhds_bot_iff_real EReal.tendsto_nhds_bot_iff_realₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -72,9 +72,9 @@ instance : SecondCountableTopology EReal :=
by
ext x
simpa only [hs, and_comm', exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
- · apply isOpen_unionᵢ
+ · apply isOpen_iUnion
intro q
- apply isOpen_unionᵢ
+ apply isOpen_iUnion
intro hq
apply generate_open.basic
exact mem_Union.2 ⟨q, by simp⟩⟩
@@ -314,9 +314,9 @@ theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
/- warning: ereal.nhds_top -> EReal.nhds_top is a dubious translation:
lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
Case conversion may be inaccurate. Consider using '#align ereal.nhds_top EReal.nhds_topₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
@@ -325,19 +325,19 @@ theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
/- warning: ereal.nhds_top' -> EReal.nhds_top' is a dubious translation:
lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
Case conversion may be inaccurate. Consider using '#align ereal.nhds_top' EReal.nhds_top'ₓ'. -/
theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
by
rw [nhds_top]
apply le_antisymm
- · exact infᵢ_mono' fun x => ⟨x, by simp⟩
- · refine' le_infᵢ fun r => le_infᵢ fun hr => _
+ · exact iInf_mono' fun x => ⟨x, by simp⟩
+ · refine' le_iInf fun r => le_iInf fun hr => _
induction r using EReal.rec
- · exact (infᵢ_le _ 0).trans (by simp)
- · exact infᵢ_le _ _
+ · exact (iInf_le _ 0).trans (by simp)
+ · exact iInf_le _ _
· simpa using hr
#align ereal.nhds_top' EReal.nhds_top'
@@ -367,9 +367,9 @@ theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter
/- warning: ereal.nhds_bot -> EReal.nhds_bot is a dubious translation:
lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => iInf.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
Case conversion may be inaccurate. Consider using '#align ereal.nhds_bot EReal.nhds_botₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
@@ -378,20 +378,20 @@ theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
/- warning: ereal.nhds_bot' -> EReal.nhds_bot' is a dubious translation:
lean 3 declaration is
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
but is expected to have type
- Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (iInf.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
Case conversion may be inaccurate. Consider using '#align ereal.nhds_bot' EReal.nhds_bot'ₓ'. -/
theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
by
rw [nhds_bot]
apply le_antisymm
- · exact infᵢ_mono' fun x => ⟨x, by simp⟩
- · refine' le_infᵢ fun r => le_infᵢ fun hr => _
+ · exact iInf_mono' fun x => ⟨x, by simp⟩
+ · refine' le_iInf fun r => le_iInf fun hr => _
induction r using EReal.rec
· simpa using hr
- · exact infᵢ_le _ _
- · exact (infᵢ_le _ 0).trans (by simp)
+ · exact iInf_le _ _
+ · exact (iInf_le _ 0).trans (by simp)
#align ereal.nhds_bot' EReal.nhds_bot'
/- warning: ereal.mem_nhds_bot_iff -> EReal.mem_nhds_bot_iff is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -122,7 +122,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align ereal.open_embedding_coe EReal.openEmbedding_coeₓ'. -/
theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
⟨embedding_coe, by
- convert @isOpen_Ioo EReal _ _ _ ⊥ ⊤
+ convert@isOpen_Ioo EReal _ _ _ ⊥ ⊤
ext x
induction x using EReal.rec
· simp only [left_mem_Ioo, mem_range, coe_ne_bot, exists_false, not_false_iff]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
! This file was ported from Lean 3 source module topology.instances.ereal
-! leanprover-community/mathlib commit f2ce6086713c78a7f880485f7917ea547a215982
+! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.Topology.Instances.Ennreal
/-!
# Topological structure on `ereal`
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We endow `ereal` with the order topology, and prove basic properties of this topology.
## Main results
mathlib commit https://github.com/leanprover-community/mathlib/commit/2196ab363eb097c008d4497125e0dde23fb36db2
@@ -79,6 +79,12 @@ instance : SecondCountableTopology EReal :=
/-! ### Real coercion -/
+/- warning: ereal.embedding_coe -> EReal.embedding_coe is a dubious translation:
+lean 3 declaration is
+ Embedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))))
+but is expected to have type
+ Embedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.instTopologicalSpaceEReal Real.toEReal
+Case conversion may be inaccurate. Consider using '#align ereal.embedding_coe EReal.embedding_coeₓ'. -/
theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
@@ -105,6 +111,12 @@ theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
simp only [imp_self, EReal.coe_eq_coe_iff]⟩
#align ereal.embedding_coe EReal.embedding_coe
+/- warning: ereal.open_embedding_coe -> EReal.openEmbedding_coe is a dubious translation:
+lean 3 declaration is
+ OpenEmbedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))))
+but is expected to have type
+ OpenEmbedding.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.instTopologicalSpaceEReal Real.toEReal
+Case conversion may be inaccurate. Consider using '#align ereal.open_embedding_coe EReal.openEmbedding_coeₓ'. -/
theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
⟨embedding_coe, by
convert @isOpen_Ioo EReal _ _ _ ⊥ ⊤
@@ -115,29 +127,65 @@ theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
· simp only [mem_range, right_mem_Ioo, exists_false, coe_ne_top]⟩
#align ereal.open_embedding_coe EReal.openEmbedding_coe
+/- warning: ereal.tendsto_coe -> EReal.tendsto_coe is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> Real} {a : Real}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (m a)) f (nhds.{0} EReal EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))) (Filter.Tendsto.{u1, 0} α Real m f (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) a))
+but is expected to have type
+ forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> Real} {a : Real}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => Real.toEReal (m a)) f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Real.toEReal a))) (Filter.Tendsto.{u1, 0} α Real m f (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) a))
+Case conversion may be inaccurate. Consider using '#align ereal.tendsto_coe EReal.tendsto_coeₓ'. -/
@[norm_cast]
theorem tendsto_coe {α : Type _} {f : Filter α} {m : α → ℝ} {a : ℝ} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe.tendsto_nhds_iff.symm
#align ereal.tendsto_coe EReal.tendsto_coe
-theorem continuous_coe_real_eReal : Continuous (coe : ℝ → EReal) :=
+/- warning: continuous_coe_real_ereal -> continuous_coe_real_ereal is a dubious translation:
+lean 3 declaration is
+ Continuous.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))))
+but is expected to have type
+ Continuous.{0, 0} Real EReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.instTopologicalSpaceEReal Real.toEReal
+Case conversion may be inaccurate. Consider using '#align continuous_coe_real_ereal continuous_coe_real_erealₓ'. -/
+theorem continuous_coe_real_ereal : Continuous (coe : ℝ → EReal) :=
embedding_coe.Continuous
-#align continuous_coe_real_ereal continuous_coe_real_eReal
-
+#align continuous_coe_real_ereal continuous_coe_real_ereal
+
+/- warning: ereal.continuous_coe_iff -> EReal.continuous_coe_iff is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.topologicalSpace (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (f a))) (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> Real}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.instTopologicalSpaceEReal (fun (a : α) => Real.toEReal (f a))) (Continuous.{u1, 0} α Real _inst_1 (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) f)
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_coe_iff EReal.continuous_coe_iffₓ'. -/
theorem continuous_coe_iff {f : α → ℝ} : (Continuous fun a => (f a : EReal)) ↔ Continuous f :=
embedding_coe.continuous_iff.symm
#align ereal.continuous_coe_iff EReal.continuous_coe_iff
+/- warning: ereal.nhds_coe -> EReal.nhds_coe is a dubious translation:
+lean 3 declaration is
+ forall {r : Real}, Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) r)) (Filter.map.{0, 0} Real EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe)))) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r))
+but is expected to have type
+ forall {r : Real}, Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Real.toEReal r)) (Filter.map.{0, 0} Real EReal Real.toEReal (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) r))
+Case conversion may be inaccurate. Consider using '#align ereal.nhds_coe EReal.nhds_coeₓ'. -/
theorem nhds_coe {r : ℝ} : 𝓝 (r : EReal) = (𝓝 r).map coe :=
(openEmbedding_coe.map_nhds_eq r).symm
#align ereal.nhds_coe EReal.nhds_coe
+/- warning: ereal.nhds_coe_coe -> EReal.nhds_coe_coe is a dubious translation:
+lean 3 declaration is
+ forall {r : Real} {p : Real}, Eq.{1} (Filter.{0} (Prod.{0, 0} EReal EReal)) (nhds.{0} (Prod.{0, 0} EReal EReal) (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) r) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) p))) (Filter.map.{0, 0} (Prod.{0, 0} Real Real) (Prod.{0, 0} EReal EReal) (fun (p : Prod.{0, 0} Real Real) => Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (Prod.fst.{0, 0} Real Real p)) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) (Prod.snd.{0, 0} Real Real p))) (nhds.{0} (Prod.{0, 0} Real Real) (Prod.topologicalSpace.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Prod.mk.{0, 0} Real Real r p)))
+but is expected to have type
+ forall {r : Real} {p : Real}, Eq.{1} (Filter.{0} (Prod.{0, 0} EReal EReal)) (nhds.{0} (Prod.{0, 0} EReal EReal) (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) (Prod.mk.{0, 0} EReal EReal (Real.toEReal r) (Real.toEReal p))) (Filter.map.{0, 0} (Prod.{0, 0} Real Real) (Prod.{0, 0} EReal EReal) (fun (p : Prod.{0, 0} Real Real) => Prod.mk.{0, 0} EReal EReal (Real.toEReal (Prod.fst.{0, 0} Real Real p)) (Real.toEReal (Prod.snd.{0, 0} Real Real p))) (nhds.{0} (Prod.{0, 0} Real Real) (instTopologicalSpaceProd.{0, 0} Real Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))) (Prod.mk.{0, 0} Real Real r p)))
+Case conversion may be inaccurate. Consider using '#align ereal.nhds_coe_coe EReal.nhds_coe_coeₓ'. -/
theorem nhds_coe_coe {r p : ℝ} :
𝓝 ((r : EReal), (p : EReal)) = (𝓝 (r, p)).map fun p : ℝ × ℝ => (p.1, p.2) :=
((openEmbedding_coe.Prod openEmbedding_coe).map_nhds_eq (r, p)).symm
#align ereal.nhds_coe_coe EReal.nhds_coe_coe
+/- warning: ereal.tendsto_to_real -> EReal.tendsto_toReal is a dubious translation:
+lean 3 declaration is
+ forall {a : EReal}, (Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) -> (Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) -> (Filter.Tendsto.{0, 0} EReal Real EReal.toReal (nhds.{0} EReal EReal.topologicalSpace a) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (EReal.toReal a)))
+but is expected to have type
+ forall {a : EReal}, (Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) -> (Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) -> (Filter.Tendsto.{0, 0} EReal Real EReal.toReal (nhds.{0} EReal EReal.instTopologicalSpaceEReal a) (nhds.{0} Real (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) (EReal.toReal a)))
+Case conversion may be inaccurate. Consider using '#align ereal.tendsto_to_real EReal.tendsto_toRealₓ'. -/
theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
Tendsto EReal.toReal (𝓝 a) (𝓝 a.toReal) :=
by
@@ -146,6 +194,12 @@ theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
exact tendsto_id
#align ereal.tendsto_to_real EReal.tendsto_toReal
+/- warning: ereal.continuous_on_to_real -> EReal.continuousOn_toReal is a dubious translation:
+lean 3 declaration is
+ ContinuousOn.{0, 0} EReal Real EReal.topologicalSpace (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.toReal (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.booleanAlgebra.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.hasInsert.{0} EReal) (Bot.bot.{0} EReal EReal.hasBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.hasSingleton.{0} EReal) (Top.top.{0} EReal EReal.hasTop))))
+but is expected to have type
+ ContinuousOn.{0, 0} EReal Real EReal.instTopologicalSpaceEReal (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace)) EReal.toReal (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.instBooleanAlgebraSet.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.instInsertSet.{0} EReal) (Bot.bot.{0} EReal instERealBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.instSingletonSet.{0} EReal) (Top.top.{0} EReal EReal.instTopEReal))))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_on_to_real EReal.continuousOn_toRealₓ'. -/
theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set EReal) := fun a ha =>
ContinuousAt.continuousWithinAt
(tendsto_toReal
@@ -157,18 +211,30 @@ theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set ERe
exact ha.1))
#align ereal.continuous_on_to_real EReal.continuousOn_toReal
+/- warning: ereal.ne_bot_top_homeomorph_real -> EReal.neBotTopHomeomorphReal is a dubious translation:
+lean 3 declaration is
+ Homeomorph.{0, 0} (coeSort.{1, 2} (Set.{0} EReal) Type (Set.hasCoeToSort.{0} EReal) (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.booleanAlgebra.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.hasInsert.{0} EReal) (Bot.bot.{0} EReal EReal.hasBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.hasSingleton.{0} EReal) (Top.top.{0} EReal EReal.hasTop))))) Real (Subtype.topologicalSpace.{0} EReal (fun (x : EReal) => Membership.Mem.{0, 0} EReal (Set.{0} EReal) (Set.hasMem.{0} EReal) x (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.booleanAlgebra.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.hasInsert.{0} EReal) (Bot.bot.{0} EReal EReal.hasBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.hasSingleton.{0} EReal) (Top.top.{0} EReal EReal.hasTop))))) EReal.topologicalSpace) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))
+but is expected to have type
+ Homeomorph.{0, 0} (Set.Elem.{0} EReal (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.instBooleanAlgebraSet.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.instInsertSet.{0} EReal) (Bot.bot.{0} EReal instERealBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.instSingletonSet.{0} EReal) (Top.top.{0} EReal EReal.instTopEReal))))) Real (instTopologicalSpaceSubtype.{0} EReal (fun (x : EReal) => Membership.mem.{0, 0} EReal (Set.{0} EReal) (Set.instMembershipSet.{0} EReal) x (HasCompl.compl.{0} (Set.{0} EReal) (BooleanAlgebra.toHasCompl.{0} (Set.{0} EReal) (Set.instBooleanAlgebraSet.{0} EReal)) (Insert.insert.{0, 0} EReal (Set.{0} EReal) (Set.instInsertSet.{0} EReal) (Bot.bot.{0} EReal instERealBot) (Singleton.singleton.{0, 0} EReal (Set.{0} EReal) (Set.instSingletonSet.{0} EReal) (Top.top.{0} EReal EReal.instTopEReal))))) EReal.instTopologicalSpaceEReal) (UniformSpace.toTopologicalSpace.{0} Real (PseudoMetricSpace.toUniformSpace.{0} Real Real.pseudoMetricSpace))
+Case conversion may be inaccurate. Consider using '#align ereal.ne_bot_top_homeomorph_real EReal.neBotTopHomeomorphRealₓ'. -/
/-- The set of finite `ereal` numbers is homeomorphic to `ℝ`. -/
def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set EReal) ≃ₜ ℝ :=
{
neTopBotEquivReal with
continuous_toFun := continuousOn_iff_continuous_restrict.1 continuousOn_toReal
- continuous_invFun := continuous_coe_real_eReal.subtype_mk _ }
+ continuous_invFun := continuous_coe_real_ereal.subtype_mk _ }
#align ereal.ne_bot_top_homeomorph_real EReal.neBotTopHomeomorphReal
/-! ### ennreal coercion -/
-theorem embedding_coe_eNNReal : Embedding (coe : ℝ≥0∞ → EReal) :=
+/- warning: ereal.embedding_coe_ennreal -> EReal.embedding_coe_ennreal is a dubious translation:
+lean 3 declaration is
+ Embedding.{0, 0} ENNReal EReal ENNReal.topologicalSpace EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))))
+but is expected to have type
+ Embedding.{0, 0} ENNReal EReal ENNReal.instTopologicalSpaceENNReal EReal.instTopologicalSpaceEReal ENNReal.toEReal
+Case conversion may be inaccurate. Consider using '#align ereal.embedding_coe_ennreal EReal.embedding_coe_ennrealₓ'. -/
+theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
· rw [@OrderTopology.topology_eq_generate_intervals EReal _, ← coinduced_le_iff_le_induced]
@@ -205,31 +271,61 @@ theorem embedding_coe_eNNReal : Embedding (coe : ℝ≥0∞ → EReal) :=
exact ⟨Ioi a, isOpen_Ioi, by simp [Ioi]⟩
exact ⟨Iio a, isOpen_Iio, by simp [Iio]⟩⟩, fun a b => by
simp only [imp_self, coe_ennreal_eq_coe_ennreal_iff]⟩
-#align ereal.embedding_coe_ennreal EReal.embedding_coe_eNNReal
-
+#align ereal.embedding_coe_ennreal EReal.embedding_coe_ennreal
+
+/- warning: ereal.tendsto_coe_ennreal -> EReal.tendsto_coe_ennreal is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> ENNReal} {a : ENNReal}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))) (m a)) f (nhds.{0} EReal EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))) a))) (Filter.Tendsto.{u1, 0} α ENNReal m f (nhds.{0} ENNReal ENNReal.topologicalSpace a))
+but is expected to have type
+ forall {α : Type.{u1}} {f : Filter.{u1} α} {m : α -> ENNReal} {a : ENNReal}, Iff (Filter.Tendsto.{u1, 0} α EReal (fun (a : α) => ENNReal.toEReal (m a)) f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (ENNReal.toEReal a))) (Filter.Tendsto.{u1, 0} α ENNReal m f (nhds.{0} ENNReal ENNReal.instTopologicalSpaceENNReal a))
+Case conversion may be inaccurate. Consider using '#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_ennrealₓ'. -/
@[norm_cast]
-theorem tendsto_coe_eNNReal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
+theorem tendsto_coe_ennreal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
- embedding_coe_eNNReal.tendsto_nhds_iff.symm
-#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_eNNReal
-
-theorem continuous_coe_eNNReal_eReal : Continuous (coe : ℝ≥0∞ → EReal) :=
- embedding_coe_eNNReal.Continuous
-#align continuous_coe_ennreal_ereal continuous_coe_eNNReal_eReal
-
-theorem continuous_coe_eNNReal_iff {f : α → ℝ≥0∞} :
+ embedding_coe_ennreal.tendsto_nhds_iff.symm
+#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_ennreal
+
+/- warning: continuous_coe_ennreal_ereal -> continuous_coe_ennreal_ereal is a dubious translation:
+lean 3 declaration is
+ Continuous.{0, 0} ENNReal EReal ENNReal.topologicalSpace EReal.topologicalSpace ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))))
+but is expected to have type
+ Continuous.{0, 0} ENNReal EReal ENNReal.instTopologicalSpaceENNReal EReal.instTopologicalSpaceEReal ENNReal.toEReal
+Case conversion may be inaccurate. Consider using '#align continuous_coe_ennreal_ereal continuous_coe_ennreal_erealₓ'. -/
+theorem continuous_coe_ennreal_ereal : Continuous (coe : ℝ≥0∞ → EReal) :=
+ embedding_coe_ennreal.Continuous
+#align continuous_coe_ennreal_ereal continuous_coe_ennreal_ereal
+
+/- warning: ereal.continuous_coe_ennreal_iff -> EReal.continuous_coe_ennreal_iff is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> ENNReal}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.topologicalSpace (fun (a : α) => (fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) ENNReal EReal (HasLiftT.mk.{1, 1} ENNReal EReal (CoeTCₓ.coe.{1, 1} ENNReal EReal (coeBase.{1, 1} ENNReal EReal EReal.hasCoeENNReal))) (f a))) (Continuous.{u1, 0} α ENNReal _inst_1 ENNReal.topologicalSpace f)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : TopologicalSpace.{u1} α] {f : α -> ENNReal}, Iff (Continuous.{u1, 0} α EReal _inst_1 EReal.instTopologicalSpaceEReal (fun (a : α) => ENNReal.toEReal (f a))) (Continuous.{u1, 0} α ENNReal _inst_1 ENNReal.instTopologicalSpaceENNReal f)
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_coe_ennreal_iff EReal.continuous_coe_ennreal_iffₓ'. -/
+theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
(Continuous fun a => (f a : EReal)) ↔ Continuous f :=
- embedding_coe_eNNReal.continuous_iff.symm
-#align ereal.continuous_coe_ennreal_iff EReal.continuous_coe_eNNReal_iff
+ embedding_coe_ennreal.continuous_iff.symm
+#align ereal.continuous_coe_ennreal_iff EReal.continuous_coe_ennreal_iff
/-! ### Neighborhoods of infinity -/
+/- warning: ereal.nhds_top -> EReal.nhds_top is a dubious translation:
+lean 3 declaration is
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.hasTop)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
+but is expected to have type
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) (fun (H : Ne.{1} EReal a (Top.top.{0} EReal EReal.instTopEReal)) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
+Case conversion may be inaccurate. Consider using '#align ereal.nhds_top EReal.nhds_topₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
#align ereal.nhds_top EReal.nhds_top
+/- warning: ereal.nhds_top' -> EReal.nhds_top' is a dubious translation:
+lean 3 declaration is
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
+but is expected to have type
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
+Case conversion may be inaccurate. Consider using '#align ereal.nhds_top' EReal.nhds_top'ₓ'. -/
theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
by
rw [nhds_top]
@@ -242,6 +338,12 @@ theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
· simpa using hr
#align ereal.nhds_top' EReal.nhds_top'
+/- warning: ereal.mem_nhds_top_iff -> EReal.mem_nhds_top_iff is a dubious translation:
+lean 3 declaration is
+ forall {s : Set.{0} EReal}, Iff (Membership.Mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (Filter.hasMem.{0} EReal) s (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.hasSubset.{0} EReal) (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) y)) s))
+but is expected to have type
+ forall {s : Set.{0} EReal}, Iff (Membership.mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (instMembershipSetFilter.{0} EReal) s (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.instHasSubsetSet.{0} EReal) (Set.Ioi.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal y)) s))
+Case conversion may be inaccurate. Consider using '#align ereal.mem_nhds_top_iff EReal.mem_nhds_top_iffₓ'. -/
theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y : ℝ, Ioi (y : EReal) ⊆ s :=
by
rw [nhds_top', mem_infi_of_directed]
@@ -249,16 +351,34 @@ theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y :
exact fun x y => ⟨max x y, by simp [le_refl], by simp [le_refl]⟩
#align ereal.mem_nhds_top_iff EReal.mem_nhds_top_iff
+/- warning: ereal.tendsto_nhds_top_iff_real -> EReal.tendsto_nhds_top_iff_real is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Top.top.{0} EReal EReal.hasTop))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x) (m a)) f)
+but is expected to have type
+ forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Top.top.{0} EReal EReal.instTopEReal))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder)) (Real.toEReal x) (m a)) f)
+Case conversion may be inaccurate. Consider using '#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_realₓ'. -/
theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊤) ↔ ∀ x : ℝ, ∀ᶠ a in f, ↑x < m a := by
simp only [nhds_top', mem_Ioi, tendsto_infi, tendsto_principal]
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
+/- warning: ereal.nhds_bot -> EReal.nhds_bot is a dubious translation:
+lean 3 declaration is
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal EReal.hasBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) a))))
+but is expected to have type
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) EReal (fun (a : EReal) => infᵢ.{0, 0} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) (Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) (fun (H : Ne.{1} EReal a (Bot.bot.{0} EReal instERealBot)) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) a))))
+Case conversion may be inaccurate. Consider using '#align ereal.nhds_bot EReal.nhds_botₓ'. -/
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
#align ereal.nhds_bot EReal.nhds_bot
+/- warning: ereal.nhds_bot' -> EReal.nhds_bot' is a dubious translation:
+lean 3 declaration is
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toHasInf.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.completeLattice.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))))
+but is expected to have type
+ Eq.{1} (Filter.{0} EReal) (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot)) (infᵢ.{0, 1} (Filter.{0} EReal) (ConditionallyCompleteLattice.toInfSet.{0} (Filter.{0} EReal) (CompleteLattice.toConditionallyCompleteLattice.{0} (Filter.{0} EReal) (Filter.instCompleteLatticeFilter.{0} EReal))) Real (fun (a : Real) => Filter.principal.{0} EReal (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal a))))
+Case conversion may be inaccurate. Consider using '#align ereal.nhds_bot' EReal.nhds_bot'ₓ'. -/
theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
by
rw [nhds_bot]
@@ -271,6 +391,12 @@ theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
· exact (infᵢ_le _ 0).trans (by simp)
#align ereal.nhds_bot' EReal.nhds_bot'
+/- warning: ereal.mem_nhds_bot_iff -> EReal.mem_nhds_bot_iff is a dubious translation:
+lean 3 declaration is
+ forall {s : Set.{0} EReal}, Iff (Membership.Mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (Filter.hasMem.{0} EReal) s (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.hasSubset.{0} EReal) (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder)))) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) y)) s))
+but is expected to have type
+ forall {s : Set.{0} EReal}, Iff (Membership.mem.{0, 0} (Set.{0} EReal) (Filter.{0} EReal) (instMembershipSetFilter.{0} EReal) s (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot))) (Exists.{1} Real (fun (y : Real) => HasSubset.Subset.{0} (Set.{0} EReal) (Set.instHasSubsetSet.{0} EReal) (Set.Iio.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder) (Real.toEReal y)) s))
+Case conversion may be inaccurate. Consider using '#align ereal.mem_nhds_bot_iff EReal.mem_nhds_bot_iffₓ'. -/
theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y : ℝ, Iio (y : EReal) ⊆ s :=
by
rw [nhds_bot', mem_infi_of_directed]
@@ -278,6 +404,12 @@ theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y :
exact fun x y => ⟨min x y, by simp [le_refl], by simp [le_refl]⟩
#align ereal.mem_nhds_bot_iff EReal.mem_nhds_bot_iff
+/- warning: ereal.tendsto_nhds_bot_iff_real -> EReal.tendsto_nhds_bot_iff_real is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.topologicalSpace (Bot.bot.{0} EReal EReal.hasBot))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal (CompleteSemilatticeInf.toPartialOrder.{0} EReal (CompleteLattice.toCompleteSemilatticeInf.{0} EReal (CompleteLinearOrder.toCompleteLattice.{0} EReal EReal.completeLinearOrder))))) (m a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) x)) f)
+but is expected to have type
+ forall {α : Type.{u1}} {m : α -> EReal} {f : Filter.{u1} α}, Iff (Filter.Tendsto.{u1, 0} α EReal m f (nhds.{0} EReal EReal.instTopologicalSpaceEReal (Bot.bot.{0} EReal instERealBot))) (forall (x : Real), Filter.Eventually.{u1} α (fun (a : α) => LT.lt.{0} EReal (Preorder.toLT.{0} EReal (PartialOrder.toPreorder.{0} EReal instERealPartialOrder)) (m a) (Real.toEReal x)) f)
+Case conversion may be inaccurate. Consider using '#align ereal.tendsto_nhds_bot_iff_real EReal.tendsto_nhds_bot_iff_realₓ'. -/
theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊥) ↔ ∀ x : ℝ, ∀ᶠ a in f, m a < x := by
simp only [nhds_bot', mem_Iio, tendsto_infi, tendsto_principal]
@@ -286,12 +418,24 @@ theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → EReal} {f : Filter
/-! ### Continuity of addition -/
+/- warning: ereal.continuous_at_add_coe_coe -> EReal.continuousAt_add_coe_coe is a dubious translation:
+lean 3 declaration is
+ forall (a : Real) (b : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) b))
+but is expected to have type
+ forall (a : Real) (b : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Real.toEReal a) (Real.toEReal b))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_coe_coe EReal.continuousAt_add_coe_coeₓ'. -/
theorem continuousAt_add_coe_coe (a b : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, b) := by
simp only [ContinuousAt, nhds_coe_coe, ← coe_add, tendsto_map'_iff, (· ∘ ·), tendsto_coe,
tendsto_add]
#align ereal.continuous_at_add_coe_coe EReal.continuousAt_add_coe_coe
+/- warning: ereal.continuous_at_add_top_coe -> EReal.continuousAt_add_top_coe is a dubious translation:
+lean 3 declaration is
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.hasTop) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))
+but is expected to have type
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.instTopEReal) (Real.toEReal a))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_top_coe EReal.continuousAt_add_top_coeₓ'. -/
theorem continuousAt_add_top_coe (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, a) :=
by
@@ -306,6 +450,12 @@ theorem continuousAt_add_top_coe (a : ℝ) :
simp
#align ereal.continuous_at_add_top_coe EReal.continuousAt_add_top_coe
+/- warning: ereal.continuous_at_add_coe_top -> EReal.continuousAt_add_coe_top is a dubious translation:
+lean 3 declaration is
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a) (Top.top.{0} EReal EReal.hasTop))
+but is expected to have type
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Real.toEReal a) (Top.top.{0} EReal EReal.instTopEReal))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_coe_top EReal.continuousAt_add_coe_topₓ'. -/
theorem continuousAt_add_coe_top (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊤) :=
by
@@ -315,6 +465,12 @@ theorem continuousAt_add_coe_top (a : ℝ) :
exact continuous_at_add_top_coe a
#align ereal.continuous_at_add_coe_top EReal.continuousAt_add_coe_top
+/- warning: ereal.continuous_at_add_top_top -> EReal.continuousAt_add_top_top is a dubious translation:
+lean 3 declaration is
+ ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.hasTop) (Top.top.{0} EReal EReal.hasTop))
+but is expected to have type
+ ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Top.top.{0} EReal EReal.instTopEReal) (Top.top.{0} EReal EReal.instTopEReal))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_top_top EReal.continuousAt_add_top_topₓ'. -/
theorem continuousAt_add_top_top : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, ⊤) :=
by
simp only [ContinuousAt, tendsto_nhds_top_iff_real, top_add_top, nhds_prod_eq]
@@ -328,6 +484,12 @@ theorem continuousAt_add_top_top : ContinuousAt (fun p : EReal × EReal => p.1 +
simp
#align ereal.continuous_at_add_top_top EReal.continuousAt_add_top_top
+/- warning: ereal.continuous_at_add_bot_coe -> EReal.continuousAt_add_bot_coe is a dubious translation:
+lean 3 declaration is
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal EReal.hasBot) ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a))
+but is expected to have type
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal instERealBot) (Real.toEReal a))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_bot_coe EReal.continuousAt_add_bot_coeₓ'. -/
theorem continuousAt_add_bot_coe (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, a) :=
by
@@ -341,6 +503,12 @@ theorem continuousAt_add_bot_coe (a : ℝ) :
rw [sub_add_cancel]
#align ereal.continuous_at_add_bot_coe EReal.continuousAt_add_bot_coe
+/- warning: ereal.continuous_at_add_coe_bot -> EReal.continuousAt_add_coe_bot is a dubious translation:
+lean 3 declaration is
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal ((fun (a : Type) (b : Type) [self : HasLiftT.{1, 1} a b] => self.0) Real EReal (HasLiftT.mk.{1, 1} Real EReal (CoeTCₓ.coe.{1, 1} Real EReal (coeBase.{1, 1} Real EReal EReal.hasCoe))) a) (Bot.bot.{0} EReal EReal.hasBot))
+but is expected to have type
+ forall (a : Real), ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Real.toEReal a) (Bot.bot.{0} EReal instERealBot))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_coe_bot EReal.continuousAt_add_coe_botₓ'. -/
theorem continuousAt_add_coe_bot (a : ℝ) :
ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊥) :=
by
@@ -350,6 +518,12 @@ theorem continuousAt_add_coe_bot (a : ℝ) :
exact continuous_at_add_bot_coe a
#align ereal.continuous_at_add_coe_bot EReal.continuousAt_add_coe_bot
+/- warning: ereal.continuous_at_add_bot_bot -> EReal.continuousAt_add_bot_bot is a dubious translation:
+lean 3 declaration is
+ ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal EReal.hasBot) (Bot.bot.{0} EReal EReal.hasBot))
+but is expected to have type
+ ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) (Prod.mk.{0, 0} EReal EReal (Bot.bot.{0} EReal instERealBot) (Bot.bot.{0} EReal instERealBot))
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add_bot_bot EReal.continuousAt_add_bot_botₓ'. -/
theorem continuousAt_add_bot_bot : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, ⊥) :=
by
simp only [ContinuousAt, tendsto_nhds_bot_iff_real, nhds_prod_eq, bot_add]
@@ -363,6 +537,12 @@ theorem continuousAt_add_bot_bot : ContinuousAt (fun p : EReal × EReal => p.1 +
simp
#align ereal.continuous_at_add_bot_bot EReal.continuousAt_add_bot_bot
+/- warning: ereal.continuous_at_add -> EReal.continuousAt_add is a dubious translation:
+lean 3 declaration is
+ forall {p : Prod.{0, 0} EReal EReal}, (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.hasTop)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Bot.bot.{0} EReal EReal.hasBot))) -> (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Bot.bot.{0} EReal EReal.hasBot)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.hasTop))) -> (ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (Prod.topologicalSpace.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace) EReal.topologicalSpace (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toHasAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal EReal.addMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) p)
+but is expected to have type
+ forall {p : Prod.{0, 0} EReal EReal}, (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.instTopEReal)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Bot.bot.{0} EReal instERealBot))) -> (Or (Ne.{1} EReal (Prod.fst.{0, 0} EReal EReal p) (Bot.bot.{0} EReal instERealBot)) (Ne.{1} EReal (Prod.snd.{0, 0} EReal EReal p) (Top.top.{0} EReal EReal.instTopEReal))) -> (ContinuousAt.{0, 0} (Prod.{0, 0} EReal EReal) EReal (instTopologicalSpaceProd.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal) EReal.instTopologicalSpaceEReal (fun (p : Prod.{0, 0} EReal EReal) => HAdd.hAdd.{0, 0, 0} EReal EReal EReal (instHAdd.{0} EReal (AddZeroClass.toAdd.{0} EReal (AddMonoid.toAddZeroClass.{0} EReal instERealAddMonoid))) (Prod.fst.{0, 0} EReal EReal p) (Prod.snd.{0, 0} EReal EReal p)) p)
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_at_add EReal.continuousAt_addₓ'. -/
/-- The addition on `ereal` is continuous except where it doesn't make sense (i.e., at `(⊥, ⊤)`
and at `(⊤, ⊥)`). -/
theorem continuousAt_add {p : EReal × EReal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥) (h' : p.1 ≠ ⊥ ∨ p.2 ≠ ⊤) :
@@ -384,11 +564,23 @@ theorem continuousAt_add {p : EReal × EReal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥)
/-! ### Negation-/
+/- warning: ereal.neg_homeo -> EReal.negHomeo is a dubious translation:
+lean 3 declaration is
+ Homeomorph.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace
+but is expected to have type
+ Homeomorph.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal
+Case conversion may be inaccurate. Consider using '#align ereal.neg_homeo EReal.negHomeoₓ'. -/
/-- Negation on `ereal` as a homeomorphism -/
def negHomeo : EReal ≃ₜ EReal :=
negOrderIso.toHomeomorph
#align ereal.neg_homeo EReal.negHomeo
+/- warning: ereal.continuous_neg -> EReal.continuous_neg is a dubious translation:
+lean 3 declaration is
+ Continuous.{0, 0} EReal EReal EReal.topologicalSpace EReal.topologicalSpace (fun (x : EReal) => Neg.neg.{0} EReal EReal.hasNeg x)
+but is expected to have type
+ Continuous.{0, 0} EReal EReal EReal.instTopologicalSpaceEReal EReal.instTopologicalSpaceEReal (fun (x : EReal) => Neg.neg.{0} EReal EReal.instNegEReal x)
+Case conversion may be inaccurate. Consider using '#align ereal.continuous_neg EReal.continuous_negₓ'. -/
theorem continuous_neg : Continuous fun x : EReal => -x :=
negHomeo.Continuous
#align ereal.continuous_neg EReal.continuous_neg
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -225,7 +225,7 @@ theorem continuous_coe_eNNReal_iff {f : α → ℝ≥0∞} :
/-! ### Neighborhoods of infinity -/
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
#align ereal.nhds_top EReal.nhds_top
@@ -254,7 +254,7 @@ theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter
simp only [nhds_top', mem_Ioi, tendsto_infi, tendsto_principal]
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
#align ereal.nhds_bot EReal.nhds_bot
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -39,20 +39,20 @@ open Classical Topology ENNReal NNReal BigOperators Filter
variable {α : Type _} [TopologicalSpace α]
-namespace Ereal
+namespace EReal
-instance : TopologicalSpace Ereal :=
- Preorder.topology Ereal
+instance : TopologicalSpace EReal :=
+ Preorder.topology EReal
-instance : OrderTopology Ereal :=
+instance : OrderTopology EReal :=
⟨rfl⟩
-instance : T2Space Ereal := by infer_instance
+instance : T2Space EReal := by infer_instance
-instance : SecondCountableTopology Ereal :=
+instance : SecondCountableTopology EReal :=
⟨by
refine'
- ⟨⋃ q : ℚ, {{ a : Ereal | a < (q : ℝ) }, { a : Ereal | ((q : ℝ) : Ereal) < a }},
+ ⟨⋃ q : ℚ, {{ a : EReal | a < (q : ℝ) }, { a : EReal | ((q : ℝ) : EReal) < a }},
countable_Union fun a => (countable_singleton _).insert _, _⟩
refine'
le_antisymm
@@ -61,11 +61,11 @@ instance : SecondCountableTopology Ereal :=
_
apply le_generateFrom fun s h => _
rcases h with ⟨a, hs | hs⟩ <;>
- [rw [show s = ⋃ q ∈ { q : ℚ | a < (q : ℝ) }, { b | ((q : ℝ) : Ereal) < b }
+ [rw [show s = ⋃ q ∈ { q : ℚ | a < (q : ℝ) }, { b | ((q : ℝ) : EReal) < b }
by
ext x
simpa only [hs, exists_prop, mem_Union] using lt_iff_exists_rat_btwn],
- rw [show s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : Ereal) < a }, { b | b < ((q : ℝ) : Ereal) }
+ rw [show s = ⋃ q ∈ { q : ℚ | ((q : ℝ) : EReal) < a }, { b | b < ((q : ℝ) : EReal) }
by
ext x
simpa only [hs, and_comm', exists_prop, mem_Union] using lt_iff_exists_rat_btwn]] <;>
@@ -79,22 +79,22 @@ instance : SecondCountableTopology Ereal :=
/-! ### Real coercion -/
-theorem embedding_coe : Embedding (coe : ℝ → Ereal) :=
+theorem embedding_coe : Embedding (coe : ℝ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
- · rw [@OrderTopology.topology_eq_generate_intervals Ereal _, ← coinduced_le_iff_le_induced]
+ · rw [@OrderTopology.topology_eq_generate_intervals EReal _, ← coinduced_le_iff_le_induced]
refine' le_generateFrom fun s ha => _
rcases ha with ⟨a, rfl | rfl⟩
show IsOpen { b : ℝ | a < ↑b }
- · induction a using Ereal.rec
+ · induction a using EReal.rec
· simp only [isOpen_univ, bot_lt_coe, set_of_true]
- · simp only [Ereal.coe_lt_coe_iff]
+ · simp only [EReal.coe_lt_coe_iff]
exact isOpen_Ioi
· simp only [set_of_false, isOpen_empty, not_top_lt]
show IsOpen { b : ℝ | ↑b < a }
- · induction a using Ereal.rec
+ · induction a using EReal.rec
· simp only [not_lt_bot, set_of_false, isOpen_empty]
- · simp only [Ereal.coe_lt_coe_iff]
+ · simp only [EReal.coe_lt_coe_iff]
exact isOpen_Iio
· simp only [isOpen_univ, coe_lt_top, set_of_true]
· rw [@OrderTopology.topology_eq_generate_intervals ℝ _]
@@ -102,51 +102,51 @@ theorem embedding_coe : Embedding (coe : ℝ → Ereal) :=
rcases ha with ⟨a, rfl | rfl⟩
exact ⟨Ioi a, isOpen_Ioi, by simp [Ioi]⟩
exact ⟨Iio a, isOpen_Iio, by simp [Iio]⟩⟩, fun a b => by
- simp only [imp_self, Ereal.coe_eq_coe_iff]⟩
-#align ereal.embedding_coe Ereal.embedding_coe
+ simp only [imp_self, EReal.coe_eq_coe_iff]⟩
+#align ereal.embedding_coe EReal.embedding_coe
-theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → Ereal) :=
+theorem openEmbedding_coe : OpenEmbedding (coe : ℝ → EReal) :=
⟨embedding_coe, by
- convert @isOpen_Ioo Ereal _ _ _ ⊥ ⊤
+ convert @isOpen_Ioo EReal _ _ _ ⊥ ⊤
ext x
- induction x using Ereal.rec
+ induction x using EReal.rec
· simp only [left_mem_Ioo, mem_range, coe_ne_bot, exists_false, not_false_iff]
· simp only [mem_range_self, mem_Ioo, bot_lt_coe, coe_lt_top, and_self_iff]
· simp only [mem_range, right_mem_Ioo, exists_false, coe_ne_top]⟩
-#align ereal.open_embedding_coe Ereal.openEmbedding_coe
+#align ereal.open_embedding_coe EReal.openEmbedding_coe
@[norm_cast]
theorem tendsto_coe {α : Type _} {f : Filter α} {m : α → ℝ} {a : ℝ} :
- Tendsto (fun a => (m a : Ereal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
+ Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe.tendsto_nhds_iff.symm
-#align ereal.tendsto_coe Ereal.tendsto_coe
+#align ereal.tendsto_coe EReal.tendsto_coe
-theorem continuous_coe_real_ereal : Continuous (coe : ℝ → Ereal) :=
+theorem continuous_coe_real_eReal : Continuous (coe : ℝ → EReal) :=
embedding_coe.Continuous
-#align continuous_coe_real_ereal continuous_coe_real_ereal
+#align continuous_coe_real_ereal continuous_coe_real_eReal
-theorem continuous_coe_iff {f : α → ℝ} : (Continuous fun a => (f a : Ereal)) ↔ Continuous f :=
+theorem continuous_coe_iff {f : α → ℝ} : (Continuous fun a => (f a : EReal)) ↔ Continuous f :=
embedding_coe.continuous_iff.symm
-#align ereal.continuous_coe_iff Ereal.continuous_coe_iff
+#align ereal.continuous_coe_iff EReal.continuous_coe_iff
-theorem nhds_coe {r : ℝ} : 𝓝 (r : Ereal) = (𝓝 r).map coe :=
+theorem nhds_coe {r : ℝ} : 𝓝 (r : EReal) = (𝓝 r).map coe :=
(openEmbedding_coe.map_nhds_eq r).symm
-#align ereal.nhds_coe Ereal.nhds_coe
+#align ereal.nhds_coe EReal.nhds_coe
theorem nhds_coe_coe {r p : ℝ} :
- 𝓝 ((r : Ereal), (p : Ereal)) = (𝓝 (r, p)).map fun p : ℝ × ℝ => (p.1, p.2) :=
+ 𝓝 ((r : EReal), (p : EReal)) = (𝓝 (r, p)).map fun p : ℝ × ℝ => (p.1, p.2) :=
((openEmbedding_coe.Prod openEmbedding_coe).map_nhds_eq (r, p)).symm
-#align ereal.nhds_coe_coe Ereal.nhds_coe_coe
+#align ereal.nhds_coe_coe EReal.nhds_coe_coe
-theorem tendsto_toReal {a : Ereal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
- Tendsto Ereal.toReal (𝓝 a) (𝓝 a.toReal) :=
+theorem tendsto_toReal {a : EReal} (ha : a ≠ ⊤) (h'a : a ≠ ⊥) :
+ Tendsto EReal.toReal (𝓝 a) (𝓝 a.toReal) :=
by
lift a to ℝ using And.intro ha h'a
rw [nhds_coe, tendsto_map'_iff]
exact tendsto_id
-#align ereal.tendsto_to_real Ereal.tendsto_toReal
+#align ereal.tendsto_to_real EReal.tendsto_toReal
-theorem continuousOn_toReal : ContinuousOn Ereal.toReal ({⊥, ⊤}ᶜ : Set Ereal) := fun a ha =>
+theorem continuousOn_toReal : ContinuousOn EReal.toReal ({⊥, ⊤}ᶜ : Set EReal) := fun a ha =>
ContinuousAt.continuousWithinAt
(tendsto_toReal
(by
@@ -155,48 +155,48 @@ theorem continuousOn_toReal : ContinuousOn Ereal.toReal ({⊥, ⊤}ᶜ : Set Ere
(by
simp [not_or] at ha
exact ha.1))
-#align ereal.continuous_on_to_real Ereal.continuousOn_toReal
+#align ereal.continuous_on_to_real EReal.continuousOn_toReal
/-- The set of finite `ereal` numbers is homeomorphic to `ℝ`. -/
-def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set Ereal) ≃ₜ ℝ :=
+def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set EReal) ≃ₜ ℝ :=
{
neTopBotEquivReal with
continuous_toFun := continuousOn_iff_continuous_restrict.1 continuousOn_toReal
- continuous_invFun := continuous_coe_real_ereal.subtype_mk _ }
-#align ereal.ne_bot_top_homeomorph_real Ereal.neBotTopHomeomorphReal
+ continuous_invFun := continuous_coe_real_eReal.subtype_mk _ }
+#align ereal.ne_bot_top_homeomorph_real EReal.neBotTopHomeomorphReal
/-! ### ennreal coercion -/
-theorem embedding_coe_eNNReal : Embedding (coe : ℝ≥0∞ → Ereal) :=
+theorem embedding_coe_eNNReal : Embedding (coe : ℝ≥0∞ → EReal) :=
⟨⟨by
refine' le_antisymm _ _
- · rw [@OrderTopology.topology_eq_generate_intervals Ereal _, ← coinduced_le_iff_le_induced]
+ · rw [@OrderTopology.topology_eq_generate_intervals EReal _, ← coinduced_le_iff_le_induced]
refine' le_generateFrom fun s ha => _
rcases ha with ⟨a, rfl | rfl⟩
show IsOpen { b : ℝ≥0∞ | a < ↑b }
- · induction' a using Ereal.rec with x
+ · induction' a using EReal.rec with x
· simp only [isOpen_univ, bot_lt_coe_ennreal, set_of_true]
· rcases le_or_lt 0 x with (h | h)
- · have : (x : Ereal) = ((id ⟨x, h⟩ : ℝ≥0) : ℝ≥0∞) := rfl
+ · have : (x : EReal) = ((id ⟨x, h⟩ : ℝ≥0) : ℝ≥0∞) := rfl
rw [this]
simp only [id.def, coe_ennreal_lt_coe_ennreal_iff]
exact isOpen_Ioi
- · have : ∀ y : ℝ≥0∞, (x : Ereal) < y := fun y =>
- (Ereal.coe_lt_coe_iff.2 h).trans_le (coe_ennreal_nonneg _)
+ · have : ∀ y : ℝ≥0∞, (x : EReal) < y := fun y =>
+ (EReal.coe_lt_coe_iff.2 h).trans_le (coe_ennreal_nonneg _)
simp only [this, isOpen_univ, set_of_true]
· simp only [set_of_false, isOpen_empty, not_top_lt]
show IsOpen { b : ℝ≥0∞ | ↑b < a }
- · induction' a using Ereal.rec with x
+ · induction' a using EReal.rec with x
· simp only [not_lt_bot, set_of_false, isOpen_empty]
· rcases le_or_lt 0 x with (h | h)
- · have : (x : Ereal) = ((id ⟨x, h⟩ : ℝ≥0) : ℝ≥0∞) := rfl
+ · have : (x : EReal) = ((id ⟨x, h⟩ : ℝ≥0) : ℝ≥0∞) := rfl
rw [this]
simp only [id.def, coe_ennreal_lt_coe_ennreal_iff]
exact isOpen_Iio
· convert isOpen_empty
- apply eq_empty_iff_forall_not_mem.2 fun y hy => lt_irrefl (x : Ereal) _
- exact ((Ereal.coe_lt_coe_iff.2 h).trans_le (coe_ennreal_nonneg y)).trans hy
+ apply eq_empty_iff_forall_not_mem.2 fun y hy => lt_irrefl (x : EReal) _
+ exact ((EReal.coe_lt_coe_iff.2 h).trans_le (coe_ennreal_nonneg y)).trans hy
· simp only [← coe_ennreal_top, coe_ennreal_lt_coe_ennreal_iff]
exact isOpen_Iio
· rw [@OrderTopology.topology_eq_generate_intervals ℝ≥0∞ _]
@@ -205,152 +205,152 @@ theorem embedding_coe_eNNReal : Embedding (coe : ℝ≥0∞ → Ereal) :=
exact ⟨Ioi a, isOpen_Ioi, by simp [Ioi]⟩
exact ⟨Iio a, isOpen_Iio, by simp [Iio]⟩⟩, fun a b => by
simp only [imp_self, coe_ennreal_eq_coe_ennreal_iff]⟩
-#align ereal.embedding_coe_ennreal Ereal.embedding_coe_eNNReal
+#align ereal.embedding_coe_ennreal EReal.embedding_coe_eNNReal
@[norm_cast]
theorem tendsto_coe_eNNReal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
- Tendsto (fun a => (m a : Ereal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
+ Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe_eNNReal.tendsto_nhds_iff.symm
-#align ereal.tendsto_coe_ennreal Ereal.tendsto_coe_eNNReal
+#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_eNNReal
-theorem continuous_coe_eNNReal_ereal : Continuous (coe : ℝ≥0∞ → Ereal) :=
+theorem continuous_coe_eNNReal_eReal : Continuous (coe : ℝ≥0∞ → EReal) :=
embedding_coe_eNNReal.Continuous
-#align continuous_coe_ennreal_ereal continuous_coe_eNNReal_ereal
+#align continuous_coe_ennreal_ereal continuous_coe_eNNReal_eReal
theorem continuous_coe_eNNReal_iff {f : α → ℝ≥0∞} :
- (Continuous fun a => (f a : Ereal)) ↔ Continuous f :=
+ (Continuous fun a => (f a : EReal)) ↔ Continuous f :=
embedding_coe_eNNReal.continuous_iff.symm
-#align ereal.continuous_coe_ennreal_iff Ereal.continuous_coe_eNNReal_iff
+#align ereal.continuous_coe_ennreal_iff EReal.continuous_coe_eNNReal_iff
/-! ### Neighborhoods of infinity -/
/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (a «expr ≠ » «expr⊤»()) -/
-theorem nhds_top : 𝓝 (⊤ : Ereal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
+theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp [lt_top_iff_ne_top, Ioi]
-#align ereal.nhds_top Ereal.nhds_top
+#align ereal.nhds_top EReal.nhds_top
-theorem nhds_top' : 𝓝 (⊤ : Ereal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
+theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi a) :=
by
rw [nhds_top]
apply le_antisymm
· exact infᵢ_mono' fun x => ⟨x, by simp⟩
· refine' le_infᵢ fun r => le_infᵢ fun hr => _
- induction r using Ereal.rec
+ induction r using EReal.rec
· exact (infᵢ_le _ 0).trans (by simp)
· exact infᵢ_le _ _
· simpa using hr
-#align ereal.nhds_top' Ereal.nhds_top'
+#align ereal.nhds_top' EReal.nhds_top'
-theorem mem_nhds_top_iff {s : Set Ereal} : s ∈ 𝓝 (⊤ : Ereal) ↔ ∃ y : ℝ, Ioi (y : Ereal) ⊆ s :=
+theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y : ℝ, Ioi (y : EReal) ⊆ s :=
by
rw [nhds_top', mem_infi_of_directed]
· rfl
exact fun x y => ⟨max x y, by simp [le_refl], by simp [le_refl]⟩
-#align ereal.mem_nhds_top_iff Ereal.mem_nhds_top_iff
+#align ereal.mem_nhds_top_iff EReal.mem_nhds_top_iff
-theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → Ereal} {f : Filter α} :
+theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊤) ↔ ∀ x : ℝ, ∀ᶠ a in f, ↑x < m a := by
simp only [nhds_top', mem_Ioi, tendsto_infi, tendsto_principal]
-#align ereal.tendsto_nhds_top_iff_real Ereal.tendsto_nhds_top_iff_real
+#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (a «expr ≠ » «expr⊥»()) -/
-theorem nhds_bot : 𝓝 (⊥ : Ereal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
+theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp [bot_lt_iff_ne_bot]
-#align ereal.nhds_bot Ereal.nhds_bot
+#align ereal.nhds_bot EReal.nhds_bot
-theorem nhds_bot' : 𝓝 (⊥ : Ereal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
+theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio a) :=
by
rw [nhds_bot]
apply le_antisymm
· exact infᵢ_mono' fun x => ⟨x, by simp⟩
· refine' le_infᵢ fun r => le_infᵢ fun hr => _
- induction r using Ereal.rec
+ induction r using EReal.rec
· simpa using hr
· exact infᵢ_le _ _
· exact (infᵢ_le _ 0).trans (by simp)
-#align ereal.nhds_bot' Ereal.nhds_bot'
+#align ereal.nhds_bot' EReal.nhds_bot'
-theorem mem_nhds_bot_iff {s : Set Ereal} : s ∈ 𝓝 (⊥ : Ereal) ↔ ∃ y : ℝ, Iio (y : Ereal) ⊆ s :=
+theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y : ℝ, Iio (y : EReal) ⊆ s :=
by
rw [nhds_bot', mem_infi_of_directed]
· rfl
exact fun x y => ⟨min x y, by simp [le_refl], by simp [le_refl]⟩
-#align ereal.mem_nhds_bot_iff Ereal.mem_nhds_bot_iff
+#align ereal.mem_nhds_bot_iff EReal.mem_nhds_bot_iff
-theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → Ereal} {f : Filter α} :
+theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊥) ↔ ∀ x : ℝ, ∀ᶠ a in f, m a < x := by
simp only [nhds_bot', mem_Iio, tendsto_infi, tendsto_principal]
-#align ereal.tendsto_nhds_bot_iff_real Ereal.tendsto_nhds_bot_iff_real
+#align ereal.tendsto_nhds_bot_iff_real EReal.tendsto_nhds_bot_iff_real
/-! ### Continuity of addition -/
theorem continuousAt_add_coe_coe (a b : ℝ) :
- ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) (a, b) := by
+ ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, b) := by
simp only [ContinuousAt, nhds_coe_coe, ← coe_add, tendsto_map'_iff, (· ∘ ·), tendsto_coe,
tendsto_add]
-#align ereal.continuous_at_add_coe_coe Ereal.continuousAt_add_coe_coe
+#align ereal.continuous_at_add_coe_coe EReal.continuousAt_add_coe_coe
theorem continuousAt_add_top_coe (a : ℝ) :
- ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) (⊤, a) :=
+ ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, a) :=
by
simp only [ContinuousAt, tendsto_nhds_top_iff_real, top_add_coe, nhds_prod_eq]
intro r
rw [eventually_prod_iff]
refine'
- ⟨fun z => ((r - (a - 1) : ℝ) : Ereal) < z, Ioi_mem_nhds (coe_lt_top _), fun z =>
- ((a - 1 : ℝ) : Ereal) < z, Ioi_mem_nhds (by simp [-Ereal.coe_sub]), fun x hx y hy => _⟩
+ ⟨fun z => ((r - (a - 1) : ℝ) : EReal) < z, Ioi_mem_nhds (coe_lt_top _), fun z =>
+ ((a - 1 : ℝ) : EReal) < z, Ioi_mem_nhds (by simp [-EReal.coe_sub]), fun x hx y hy => _⟩
dsimp
convert add_lt_add hx hy
simp
-#align ereal.continuous_at_add_top_coe Ereal.continuousAt_add_top_coe
+#align ereal.continuous_at_add_top_coe EReal.continuousAt_add_top_coe
theorem continuousAt_add_coe_top (a : ℝ) :
- ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) (a, ⊤) :=
+ ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊤) :=
by
- change ContinuousAt ((fun p : Ereal × Ereal => p.2 + p.1) ∘ Prod.swap) (a, ⊤)
+ change ContinuousAt ((fun p : EReal × EReal => p.2 + p.1) ∘ Prod.swap) (a, ⊤)
apply ContinuousAt.comp _ continuous_swap.continuous_at
simp_rw [add_comm]
exact continuous_at_add_top_coe a
-#align ereal.continuous_at_add_coe_top Ereal.continuousAt_add_coe_top
+#align ereal.continuous_at_add_coe_top EReal.continuousAt_add_coe_top
-theorem continuousAt_add_top_top : ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) (⊤, ⊤) :=
+theorem continuousAt_add_top_top : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊤, ⊤) :=
by
simp only [ContinuousAt, tendsto_nhds_top_iff_real, top_add_top, nhds_prod_eq]
intro r
rw [eventually_prod_iff]
refine'
- ⟨fun z => (r : Ereal) < z, Ioi_mem_nhds (coe_lt_top _), fun z => ((0 : ℝ) : Ereal) < z,
+ ⟨fun z => (r : EReal) < z, Ioi_mem_nhds (coe_lt_top _), fun z => ((0 : ℝ) : EReal) < z,
Ioi_mem_nhds (by simp [zero_lt_one]), fun x hx y hy => _⟩
dsimp
convert add_lt_add hx hy
simp
-#align ereal.continuous_at_add_top_top Ereal.continuousAt_add_top_top
+#align ereal.continuous_at_add_top_top EReal.continuousAt_add_top_top
theorem continuousAt_add_bot_coe (a : ℝ) :
- ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) (⊥, a) :=
+ ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, a) :=
by
simp only [ContinuousAt, tendsto_nhds_bot_iff_real, nhds_prod_eq, bot_add]
intro r
rw [eventually_prod_iff]
refine'
- ⟨fun z => z < ((r - (a + 1) : ℝ) : Ereal), Iio_mem_nhds (bot_lt_coe _), fun z =>
- z < ((a + 1 : ℝ) : Ereal), Iio_mem_nhds (by simp [-coe_add, zero_lt_one]), fun x hx y hy => _⟩
+ ⟨fun z => z < ((r - (a + 1) : ℝ) : EReal), Iio_mem_nhds (bot_lt_coe _), fun z =>
+ z < ((a + 1 : ℝ) : EReal), Iio_mem_nhds (by simp [-coe_add, zero_lt_one]), fun x hx y hy => _⟩
convert add_lt_add hx hy
rw [sub_add_cancel]
-#align ereal.continuous_at_add_bot_coe Ereal.continuousAt_add_bot_coe
+#align ereal.continuous_at_add_bot_coe EReal.continuousAt_add_bot_coe
theorem continuousAt_add_coe_bot (a : ℝ) :
- ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) (a, ⊥) :=
+ ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (a, ⊥) :=
by
- change ContinuousAt ((fun p : Ereal × Ereal => p.2 + p.1) ∘ Prod.swap) (a, ⊥)
+ change ContinuousAt ((fun p : EReal × EReal => p.2 + p.1) ∘ Prod.swap) (a, ⊥)
apply ContinuousAt.comp _ continuous_swap.continuous_at
simp_rw [add_comm]
exact continuous_at_add_bot_coe a
-#align ereal.continuous_at_add_coe_bot Ereal.continuousAt_add_coe_bot
+#align ereal.continuous_at_add_coe_bot EReal.continuousAt_add_coe_bot
-theorem continuousAt_add_bot_bot : ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) (⊥, ⊥) :=
+theorem continuousAt_add_bot_bot : ContinuousAt (fun p : EReal × EReal => p.1 + p.2) (⊥, ⊥) :=
by
simp only [ContinuousAt, tendsto_nhds_bot_iff_real, nhds_prod_eq, bot_add]
intro r
@@ -361,15 +361,15 @@ theorem continuousAt_add_bot_bot : ContinuousAt (fun p : Ereal × Ereal => p.1 +
dsimp
convert add_lt_add hx hy
simp
-#align ereal.continuous_at_add_bot_bot Ereal.continuousAt_add_bot_bot
+#align ereal.continuous_at_add_bot_bot EReal.continuousAt_add_bot_bot
/-- The addition on `ereal` is continuous except where it doesn't make sense (i.e., at `(⊥, ⊤)`
and at `(⊤, ⊥)`). -/
-theorem continuousAt_add {p : Ereal × Ereal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥) (h' : p.1 ≠ ⊥ ∨ p.2 ≠ ⊤) :
- ContinuousAt (fun p : Ereal × Ereal => p.1 + p.2) p :=
+theorem continuousAt_add {p : EReal × EReal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥) (h' : p.1 ≠ ⊥ ∨ p.2 ≠ ⊤) :
+ ContinuousAt (fun p : EReal × EReal => p.1 + p.2) p :=
by
rcases p with ⟨x, y⟩
- induction x using Ereal.rec <;> induction y using Ereal.rec
+ induction x using EReal.rec <;> induction y using EReal.rec
· exact continuous_at_add_bot_bot
· exact continuous_at_add_bot_coe _
· simpa using h'
@@ -379,19 +379,19 @@ theorem continuousAt_add {p : Ereal × Ereal} (h : p.1 ≠ ⊤ ∨ p.2 ≠ ⊥)
· simpa using h
· exact continuous_at_add_top_coe _
· exact continuous_at_add_top_top
-#align ereal.continuous_at_add Ereal.continuousAt_add
+#align ereal.continuous_at_add EReal.continuousAt_add
/-! ### Negation-/
/-- Negation on `ereal` as a homeomorphism -/
-def negHomeo : Ereal ≃ₜ Ereal :=
+def negHomeo : EReal ≃ₜ EReal :=
negOrderIso.toHomeomorph
-#align ereal.neg_homeo Ereal.negHomeo
+#align ereal.neg_homeo EReal.negHomeo
-theorem continuous_neg : Continuous fun x : Ereal => -x :=
+theorem continuous_neg : Continuous fun x : EReal => -x :=
negHomeo.Continuous
-#align ereal.continuous_neg Ereal.continuous_neg
+#align ereal.continuous_neg EReal.continuous_neg
-end Ereal
+end EReal
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -35,7 +35,7 @@ noncomputable section
open Classical Set Filter Metric TopologicalSpace
-open Classical Topology Ennreal NNReal BigOperators Filter
+open Classical Topology ENNReal NNReal BigOperators Filter
variable {α : Type _} [TopologicalSpace α]
@@ -168,7 +168,7 @@ def neBotTopHomeomorphReal : ({⊥, ⊤}ᶜ : Set Ereal) ≃ₜ ℝ :=
/-! ### ennreal coercion -/
-theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → Ereal) :=
+theorem embedding_coe_eNNReal : Embedding (coe : ℝ≥0∞ → Ereal) :=
⟨⟨by
refine' le_antisymm _ _
· rw [@OrderTopology.topology_eq_generate_intervals Ereal _, ← coinduced_le_iff_le_induced]
@@ -205,22 +205,22 @@ theorem embedding_coe_ennreal : Embedding (coe : ℝ≥0∞ → Ereal) :=
exact ⟨Ioi a, isOpen_Ioi, by simp [Ioi]⟩
exact ⟨Iio a, isOpen_Iio, by simp [Iio]⟩⟩, fun a b => by
simp only [imp_self, coe_ennreal_eq_coe_ennreal_iff]⟩
-#align ereal.embedding_coe_ennreal Ereal.embedding_coe_ennreal
+#align ereal.embedding_coe_ennreal Ereal.embedding_coe_eNNReal
@[norm_cast]
-theorem tendsto_coe_ennreal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
+theorem tendsto_coe_eNNReal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
Tendsto (fun a => (m a : Ereal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
- embedding_coe_ennreal.tendsto_nhds_iff.symm
-#align ereal.tendsto_coe_ennreal Ereal.tendsto_coe_ennreal
+ embedding_coe_eNNReal.tendsto_nhds_iff.symm
+#align ereal.tendsto_coe_ennreal Ereal.tendsto_coe_eNNReal
-theorem continuous_coe_ennreal_ereal : Continuous (coe : ℝ≥0∞ → Ereal) :=
- embedding_coe_ennreal.Continuous
-#align continuous_coe_ennreal_ereal continuous_coe_ennreal_ereal
+theorem continuous_coe_eNNReal_ereal : Continuous (coe : ℝ≥0∞ → Ereal) :=
+ embedding_coe_eNNReal.Continuous
+#align continuous_coe_ennreal_ereal continuous_coe_eNNReal_ereal
-theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
+theorem continuous_coe_eNNReal_iff {f : α → ℝ≥0∞} :
(Continuous fun a => (f a : Ereal)) ↔ Continuous f :=
- embedding_coe_ennreal.continuous_iff.symm
-#align ereal.continuous_coe_ennreal_iff Ereal.continuous_coe_ennreal_iff
+ embedding_coe_eNNReal.continuous_iff.symm
+#align ereal.continuous_coe_ennreal_iff Ereal.continuous_coe_eNNReal_iff
/-! ### Neighborhoods of infinity -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Move files from Topology.Algebra.Order
to Topology.Order
when they do not contain any algebra. Also move Topology.LocalExtr
to Topology.Order.LocalExtr
.
According to git, the moves are:
Mathlib/Topology/{Algebra => }/Order/ExtendFrom.lean
Mathlib/Topology/{Algebra => }/Order/ExtrClosure.lean
Mathlib/Topology/{Algebra => }/Order/Filter.lean
Mathlib/Topology/{Algebra => }/Order/IntermediateValue.lean
Mathlib/Topology/{Algebra => }/Order/LeftRight.lean
Mathlib/Topology/{Algebra => }/Order/LeftRightLim.lean
Mathlib/Topology/{Algebra => }/Order/MonotoneContinuity.lean
Mathlib/Topology/{Algebra => }/Order/MonotoneConvergence.lean
Mathlib/Topology/{Algebra => }/Order/ProjIcc.lean
Mathlib/Topology/{Algebra => }/Order/T5.lean
Mathlib/Topology/{ => Order}/LocalExtr.lean
@@ -5,8 +5,8 @@ Authors: Sébastien Gouëzel
-/
import Mathlib.Data.Rat.Encodable
import Mathlib.Data.Real.EReal
-import Mathlib.Topology.Algebra.Order.MonotoneContinuity
import Mathlib.Topology.Instances.ENNReal
+import Mathlib.Topology.Order.MonotoneContinuity
#align_import topology.instances.ereal from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -30,7 +30,8 @@ Most proofs are adapted from the corresponding proofs on `ℝ≥0∞`.
noncomputable section
-open Classical Set Filter Metric TopologicalSpace Topology
+open scoped Classical
+open Set Filter Metric TopologicalSpace Topology
open scoped ENNReal NNReal BigOperators Filter
variable {α : Type*} [TopologicalSpace α]
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -33,7 +33,7 @@ noncomputable section
open Classical Set Filter Metric TopologicalSpace Topology
open scoped ENNReal NNReal BigOperators Filter
-variable {α : Type _} [TopologicalSpace α]
+variable {α : Type*} [TopologicalSpace α]
namespace EReal
@@ -60,7 +60,7 @@ theorem openEmbedding_coe : OpenEmbedding ((↑) : ℝ → EReal) :=
#align ereal.open_embedding_coe EReal.openEmbedding_coe
@[norm_cast]
-theorem tendsto_coe {α : Type _} {f : Filter α} {m : α → ℝ} {a : ℝ} :
+theorem tendsto_coe {α : Type*} {f : Filter α} {m : α → ℝ} {a : ℝ} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe.tendsto_nhds_iff.symm
#align ereal.tendsto_coe EReal.tendsto_coe
@@ -111,7 +111,7 @@ theorem closedEmbedding_coe_ennreal : ClosedEmbedding ((↑) : ℝ≥0∞ → ER
⟨embedding_coe_ennreal, by rw [range_coe_ennreal]; exact isClosed_Ici⟩
@[norm_cast]
-theorem tendsto_coe_ennreal {α : Type _} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
+theorem tendsto_coe_ennreal {α : Type*} {f : Filter α} {m : α → ℝ≥0∞} {a : ℝ≥0∞} :
Tendsto (fun a => (m a : EReal)) f (𝓝 ↑a) ↔ Tendsto m f (𝓝 a) :=
embedding_coe_ennreal.tendsto_nhds_iff.symm
#align ereal.tendsto_coe_ennreal EReal.tendsto_coe_ennreal
@@ -143,7 +143,7 @@ theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y :
nhds_top_basis.mem_iff.trans <| by simp only [true_and]
#align ereal.mem_nhds_top_iff EReal.mem_nhds_top_iff
-theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
+theorem tendsto_nhds_top_iff_real {α : Type*} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊤) ↔ ∀ x : ℝ, ∀ᶠ a in f, ↑x < m a :=
nhds_top_basis.tendsto_right_iff.trans <| by simp only [true_implies, mem_Ioi]
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
@@ -165,7 +165,7 @@ theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y :
nhds_bot_basis.mem_iff.trans <| by simp only [true_and]
#align ereal.mem_nhds_bot_iff EReal.mem_nhds_bot_iff
-theorem tendsto_nhds_bot_iff_real {α : Type _} {m : α → EReal} {f : Filter α} :
+theorem tendsto_nhds_bot_iff_real {α : Type*} {m : α → EReal} {f : Filter α} :
Tendsto m f (𝓝 ⊥) ↔ ∀ x : ℝ, ∀ᶠ a in f, m a < x :=
nhds_bot_basis.tendsto_right_iff.trans <| by simp only [true_implies, mem_Iio]
#align ereal.tendsto_nhds_bot_iff_real EReal.tendsto_nhds_bot_iff_real
@@ -2,17 +2,14 @@
Copyright (c) 2021 Sébastien Gouëzel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Sébastien Gouëzel
-
-! This file was ported from Lean 3 source module topology.instances.ereal
-! 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.Data.Rat.Encodable
import Mathlib.Data.Real.EReal
import Mathlib.Topology.Algebra.Order.MonotoneContinuity
import Mathlib.Topology.Instances.ENNReal
+#align_import topology.instances.ereal from "leanprover-community/mathlib"@"f2ce6086713c78a7f880485f7917ea547a215982"
+
/-!
# Topological structure on `EReal`
@@ -130,7 +130,7 @@ theorem continuous_coe_ennreal_iff {f : α → ℝ≥0∞} :
/-! ### Neighborhoods of infinity -/
-theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_h : a ≠ ⊤), 𝓟 (Ioi a) :=
+theorem nhds_top : 𝓝 (⊤ : EReal) = ⨅ (a) (_ : a ≠ ⊤), 𝓟 (Ioi a) :=
nhds_top_order.trans <| by simp only [lt_top_iff_ne_top]
#align ereal.nhds_top EReal.nhds_top
@@ -151,7 +151,7 @@ theorem tendsto_nhds_top_iff_real {α : Type _} {m : α → EReal} {f : Filter
nhds_top_basis.tendsto_right_iff.trans <| by simp only [true_implies, mem_Ioi]
#align ereal.tendsto_nhds_top_iff_real EReal.tendsto_nhds_top_iff_real
-theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_h : a ≠ ⊥), 𝓟 (Iio a) :=
+theorem nhds_bot : 𝓝 (⊥ : EReal) = ⨅ (a) (_ : a ≠ ⊥), 𝓟 (Iio a) :=
nhds_bot_order.trans <| by simp only [bot_lt_iff_ne_bot]
#align ereal.nhds_bot EReal.nhds_bot
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -139,7 +139,7 @@ nonrec theorem nhds_top_basis : (𝓝 (⊤ : EReal)).HasBasis (fun _ : ℝ ↦ T
rcases exists_rat_btwn_of_lt hx with ⟨y, hxy, -⟩
exact ⟨_, trivial, Ioi_subset_Ioi hxy.le⟩
-theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi ↑a) := nhds_top_basis.eq_infᵢ
+theorem nhds_top' : 𝓝 (⊤ : EReal) = ⨅ a : ℝ, 𝓟 (Ioi ↑a) := nhds_top_basis.eq_iInf
#align ereal.nhds_top' EReal.nhds_top'
theorem mem_nhds_top_iff {s : Set EReal} : s ∈ 𝓝 (⊤ : EReal) ↔ ∃ y : ℝ, Ioi (y : EReal) ⊆ s :=
@@ -161,7 +161,7 @@ theorem nhds_bot_basis : (𝓝 (⊥ : EReal)).HasBasis (fun _ : ℝ ↦ True) (I
exact ⟨_, trivial, Iio_subset_Iio hxy.le⟩
theorem nhds_bot' : 𝓝 (⊥ : EReal) = ⨅ a : ℝ, 𝓟 (Iio ↑a) :=
- nhds_bot_basis.eq_infᵢ
+ nhds_bot_basis.eq_iInf
#align ereal.nhds_bot' EReal.nhds_bot'
theorem mem_nhds_bot_iff {s : Set EReal} : s ∈ 𝓝 (⊥ : EReal) ↔ ∃ y : ℝ, Iio (y : EReal) ⊆ s :=
ENNReal.range_coe
, ENNReal.range_coe'
, and ENNReal.coe_strictMono
.DenselyOrdered EReal
, T5Space EReal
, ContinuousNeg EReal
, and CanLift EReal ENNReal _ _
.EReal.range_coe
, EReal.range_coe_eq_Ioo
, EReal.range_coe_ennreal
.EReal.denseRange_ratCast
, EReal.nhds_top_basis
, EReal.nhds_bot_basis
.EReal.negHomeo
and EReal.continuous_neg
.orderTopology_of_ordConnected
to StrictMono.induced_topology_eq_preorder
and StrictMono.embedding_of_ordConnected
, use it to prove that some coercions are embeddings.TopologicalSpace.SecondCountableTopology.of_separableSpace_orderTopology
and helper lemmas Dense.topology_eq_generateFrom
, Dense.Ioi_eq_bunionᵢ
, and Dense.Iio_eq_bunionᵢ
.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