Topological structure on EReal #
We prove basic properties of the topology on EReal.
Main results #
Real.toEReal : ℝ → ERealis an open embeddingENNReal.toEReal : ℝ≥0∞ → ERealis a closed embedding- The addition on
ERealis continuous except at(⊥, ⊤)and at(⊤, ⊥). - Negation is a homeomorphism on
EReal.
Implementation #
Most proofs are adapted from the corresponding proofs on ℝ≥0∞.
Real coercion #
theorem
EReal.tendsto_coe
{α : Type u_2}
{f : Filter α}
{m : α → ℝ}
{a : ℝ}
:
Filter.Tendsto (fun (a : α) => ↑(m a)) f (nhds ↑a) ↔ Filter.Tendsto m f (nhds a)
theorem
EReal.continuous_coe_iff
{α : Type u_1}
[TopologicalSpace α]
{f : α → ℝ}
:
(Continuous fun (a : α) => ↑(f a)) ↔ Continuous f
theorem
EReal.nhds_coe_coe
{r p : ℝ}
:
nhds (↑r, ↑p) = Filter.map (fun (p : ℝ × ℝ) => (↑p.1, ↑p.2)) (nhds (r, p))
theorem
EReal.tendsto_toReal
{a : EReal}
(ha : a ≠ ⊤)
(h'a : a ≠ ⊥)
:
Filter.Tendsto toReal (nhds a) (nhds a.toReal)
The set of finite EReal numbers is homeomorphic to ℝ.
Instances For
ENNReal coercion #
theorem
EReal.tendsto_coe_ennreal
{α : Type u_2}
{f : Filter α}
{m : α → ENNReal}
{a : ENNReal}
:
Filter.Tendsto (fun (a : α) => ↑(m a)) f (nhds ↑a) ↔ Filter.Tendsto m f (nhds a)
theorem
EReal.continuous_coe_ennreal_iff
{α : Type u_1}
[TopologicalSpace α]
{f : α → ENNReal}
:
(Continuous fun (a : α) => ↑(f a)) ↔ Continuous f
Neighborhoods of infinity #
@[simp]
theorem
EReal.tendsto_coe_nhds_top_iff
{α : Type u_1}
{f : α → ℝ}
{l : Filter α}
:
Filter.Tendsto (fun (x : α) => ↑(f x)) l (nhds ⊤) ↔ Filter.Tendsto f l Filter.atTop
@[simp]
theorem
EReal.tendsto_coe_nhds_bot_iff
{α : Type u_1}
{f : α → ℝ}
{l : Filter α}
:
Filter.Tendsto (fun (x : α) => ↑(f x)) l (nhds ⊥) ↔ Filter.Tendsto f l Filter.atBot
toENNReal #
theorem
Continuous.ereal_toENNReal
{α : Type u_2}
[TopologicalSpace α]
{f : α → EReal}
(hf : Continuous f)
:
Continuous fun (x : α) => (f x).toENNReal
theorem
ContinuousOn.ereal_toENNReal
{α : Type u_2}
[TopologicalSpace α]
{s : Set α}
{f : α → EReal}
(hf : ContinuousOn f s)
:
ContinuousOn (fun (x : α) => (f x).toENNReal) s
theorem
ContinuousWithinAt.ereal_toENNReal
{α : Type u_2}
[TopologicalSpace α]
{f : α → EReal}
{s : Set α}
{x : α}
(hf : ContinuousWithinAt f s x)
:
ContinuousWithinAt (fun (x : α) => (f x).toENNReal) s x
theorem
ContinuousAt.ereal_toENNReal
{α : Type u_2}
[TopologicalSpace α]
{f : α → EReal}
{x : α}
(hf : ContinuousAt f x)
:
ContinuousAt (fun (x : α) => (f x).toENNReal) x
Infs and Sups #
Liminfs and Limsups #
theorem
EReal.liminf_neg
{α : Type u_3}
{f : Filter α}
{v : α → EReal}
:
Filter.liminf (-v) f = -Filter.limsup v f
theorem
EReal.limsup_neg
{α : Type u_3}
{f : Filter α}
{v : α → EReal}
:
Filter.limsup (-v) f = -Filter.liminf v f
theorem
EReal.limsup_add_le
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
(h : Filter.limsup u f ≠ ⊥ ∨ Filter.limsup v f ≠ ⊤)
(h' : Filter.limsup u f ≠ ⊤ ∨ Filter.limsup v f ≠ ⊥)
:
theorem
EReal.liminf_add_le
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
(h : Filter.limsup u f ≠ ⊥ ∨ Filter.liminf v f ≠ ⊤)
(h' : Filter.limsup u f ≠ ⊤ ∨ Filter.liminf v f ≠ ⊥)
:
theorem
EReal.limsup_add_bot_of_ne_top
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
(h : Filter.limsup u f = ⊥)
(h' : Filter.limsup v f ≠ ⊤)
:
Filter.limsup (u + v) f = ⊥
theorem
EReal.limsup_add_le_of_le
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
{a b : EReal}
(ha : Filter.limsup u f < a)
(hb : Filter.limsup v f ≤ b)
:
theorem
EReal.liminf_add_gt_of_gt
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
{a b : EReal}
(ha : a < Filter.liminf u f)
(hb : b < Filter.liminf v f)
:
theorem
EReal.liminf_add_top_of_ne_bot
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
(h : Filter.liminf u f = ⊤)
(h' : Filter.liminf v f ≠ ⊥)
:
Filter.liminf (u + v) f = ⊤
theorem
EReal.limsup_const_mul_of_nonneg_of_ne_top
{α : Type u_3}
{f : Filter α}
{u : α → EReal}
[f.NeBot]
{c : EReal}
(h₁ : 0 ≤ c)
(h₂ : c ≠ ⊤)
:
Filter.limsup (fun (x : α) => c * u x) f = c * Filter.limsup u f
theorem
EReal.limsup_const_mul_of_nonpos_of_ne_bot
{α : Type u_3}
{f : Filter α}
{u : α → EReal}
[f.NeBot]
{c : EReal}
(h₁ : c ≤ 0)
(h₂ : c ≠ ⊥)
:
Filter.limsup (fun (x : α) => c * u x) f = c * Filter.liminf u f
theorem
EReal.liminf_const_mul_of_nonneg_of_ne_top
{α : Type u_3}
{f : Filter α}
{u : α → EReal}
[f.NeBot]
{c : EReal}
(h₁ : 0 ≤ c)
(h₂ : c ≠ ⊤)
:
Filter.liminf (fun (x : α) => c * u x) f = c * Filter.liminf u f
theorem
EReal.liminf_const_mul_of_nonpos_of_ne_bot
{α : Type u_3}
{f : Filter α}
{u : α → EReal}
[f.NeBot]
{c : EReal}
(h₁ : c ≤ 0)
(h₂ : c ≠ ⊥)
:
Filter.liminf (fun (x : α) => c * u x) f = c * Filter.limsup u f
theorem
EReal.limsup_mul_le
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
(hu : ∃ᶠ (x : α) in f, 0 ≤ u x)
(hv : 0 ≤ᶠ[f] v)
(h₁ : Filter.limsup u f ≠ 0 ∨ Filter.limsup v f ≠ ⊤)
(h₂ : Filter.limsup u f ≠ ⊤ ∨ Filter.limsup v f ≠ 0)
:
theorem
EReal.liminf_mul_le
{α : Type u_3}
{f : Filter α}
{u v : α → EReal}
[f.NeBot]
(hu : 0 ≤ᶠ[f] u)
(hv : 0 ≤ᶠ[f] v)
(h₁ : Filter.limsup u f ≠ 0 ∨ Filter.liminf v f ≠ ⊤)
(h₂ : Filter.limsup u f ≠ ⊤ ∨ Filter.liminf v f ≠ 0)
:
Continuity of addition #
theorem
EReal.continuousAt_add_coe_coe
(a b : ℝ)
:
ContinuousAt (fun (p : EReal × EReal) => p.1 + p.2) (↑a, ↑b)
theorem
EReal.continuousAt_add_top_coe
(a : ℝ)
:
ContinuousAt (fun (p : EReal × EReal) => p.1 + p.2) (⊤, ↑a)
theorem
EReal.continuousAt_add_coe_top
(a : ℝ)
:
ContinuousAt (fun (p : EReal × EReal) => p.1 + p.2) (↑a, ⊤)
theorem
EReal.continuousAt_add_bot_coe
(a : ℝ)
:
ContinuousAt (fun (p : EReal × EReal) => p.1 + p.2) (⊥, ↑a)
theorem
EReal.continuousAt_add_coe_bot
(a : ℝ)
:
ContinuousAt (fun (p : EReal × EReal) => p.1 + p.2) (↑a, ⊥)
Continuity of multiplication #
theorem
EReal.continuousAt_mul
{p : EReal × EReal}
(h₁ : p.1 ≠ 0 ∨ p.2 ≠ ⊥)
(h₂ : p.1 ≠ 0 ∨ p.2 ≠ ⊤)
(h₃ : p.1 ≠ ⊥ ∨ p.2 ≠ 0)
(h₄ : p.1 ≠ ⊤ ∨ p.2 ≠ 0)
:
ContinuousAt (fun (p : EReal × EReal) => p.1 * p.2) p
The multiplication on EReal is continuous except at indeterminacies
(i.e. whenever one value is zero and the other infinite).
theorem
EReal.Tendsto.mul
{α : Type u_2}
{f : Filter α}
{ma mb : α → EReal}
{a b : EReal}
(hma : Filter.Tendsto ma f (nhds a))
(hmb : Filter.Tendsto mb f (nhds b))
(h₁ : a ≠ 0 ∨ b ≠ ⊥)
(h₂ : a ≠ 0 ∨ b ≠ ⊤)
(h₃ : a ≠ ⊥ ∨ b ≠ 0)
(h₄ : a ≠ ⊤ ∨ b ≠ 0)
:
Filter.Tendsto (fun (x : α) => ma x * mb x) f (nhds (a * b))
theorem
EReal.Tendsto.const_mul
{α : Type u_2}
{f : Filter α}
{m : α → EReal}
{a b : EReal}
(hm : Filter.Tendsto m f (nhds b))
(h₁ : a ≠ ⊥ ∨ b ≠ 0)
(h₂ : a ≠ ⊤ ∨ b ≠ 0)
:
Filter.Tendsto (fun (b : α) => a * m b) f (nhds (a * b))
theorem
EReal.Tendsto.mul_const
{α : Type u_2}
{f : Filter α}
{m : α → EReal}
{a b : EReal}
(hm : Filter.Tendsto m f (nhds a))
(h₁ : a ≠ 0 ∨ b ≠ ⊥)
(h₂ : a ≠ 0 ∨ b ≠ ⊤)
:
Filter.Tendsto (fun (x : α) => m x * b) f (nhds (a * b))