Construction of the hyperreal numbers as an ultraproduct of real sequences. #
Equations
- instHyperrealInhabited = Filter.Germ.instInhabited
Hyperreal numbers on the ultrafilter extending the cofinite filter
Equations
- Hyperreal.«termℝ*» = Lean.ParserDescr.node `Hyperreal.«termℝ*» 1024 (Lean.ParserDescr.symbol "ℝ*")
Instances For
Equations
Equations
- Hyperreal.instCoeTCReal = { coe := Hyperreal.ofReal }
Construct a hyperreal number from a sequence of real numbers.
Equations
- Hyperreal.ofSeq f = ↑f
Instances For
theorem
Hyperreal.ofSeq_lt_ofSeq
{f g : ℕ → ℝ}
:
Hyperreal.ofSeq f < Hyperreal.ofSeq g ↔ ∀ᶠ (n : ℕ) in ↑(Filter.hyperfilter ℕ), f n < g n
A sample infinitesimal hyperreal
Equations
- Hyperreal.epsilon = Hyperreal.ofSeq fun (n : ℕ) => (↑n)⁻¹
Instances For
A sample infinitesimal hyperreal
Equations
- Hyperreal.termε = Lean.ParserDescr.node `Hyperreal.termε 1024 (Lean.ParserDescr.symbol "ε")
Instances For
A sample infinite hyperreal
Equations
- Hyperreal.termω = Lean.ParserDescr.node `Hyperreal.termω 1024 (Lean.ParserDescr.symbol "ω")
Instances For
theorem
Hyperreal.lt_of_tendsto_zero_of_pos
{f : ℕ → ℝ}
(hf : Filter.Tendsto f Filter.atTop (nhds 0))
{r : ℝ}
:
0 < r → Hyperreal.ofSeq f < ↑r
theorem
Hyperreal.neg_lt_of_tendsto_zero_of_pos
{f : ℕ → ℝ}
(hf : Filter.Tendsto f Filter.atTop (nhds 0))
{r : ℝ}
:
0 < r → -↑r < Hyperreal.ofSeq f
theorem
Hyperreal.gt_of_tendsto_zero_of_neg
{f : ℕ → ℝ}
(hf : Filter.Tendsto f Filter.atTop (nhds 0))
{r : ℝ}
:
r < 0 → ↑r < Hyperreal.ofSeq f
Standard part function: like a "round" to ℝ instead of ℤ
Equations
- x.st = if h : ∃ (r : ℝ), x.IsSt r then Classical.choose h else 0
Instances For
A hyperreal number is infinitesimal if its standard part is 0
Equations
- x.Infinitesimal = x.IsSt 0
Instances For
theorem
Hyperreal.isSt_ofSeq_iff_tendsto
{f : ℕ → ℝ}
{r : ℝ}
:
(Hyperreal.ofSeq f).IsSt r ↔ Filter.Tendsto f (↑(Filter.hyperfilter ℕ)) (nhds r)
theorem
Hyperreal.isSt_of_tendsto
{f : ℕ → ℝ}
{r : ℝ}
(hf : Filter.Tendsto f Filter.atTop (nhds r))
:
(Hyperreal.ofSeq f).IsSt r
theorem
Hyperreal.IsSt.map
{x : ℝ*}
{r : ℝ}
(hxr : x.IsSt r)
{f : ℝ → ℝ}
(hf : ContinuousAt f r)
:
Hyperreal.IsSt (Filter.Germ.map f x) (f r)
theorem
Hyperreal.IsSt.map₂
{x y : ℝ*}
{r s : ℝ}
(hxr : x.IsSt r)
(hys : y.IsSt s)
{f : ℝ → ℝ → ℝ}
(hf : ContinuousAt (Function.uncurry f) (r, s))
:
Hyperreal.IsSt (Filter.Germ.map₂ f x y) (f r s)
Basic lemmas about infinite #
theorem
Hyperreal.infinitePos_iff_infinite_of_nonneg
{x : ℝ*}
(hp : 0 ≤ x)
:
x.InfinitePos ↔ x.Infinite
theorem
Hyperreal.infinitePos_add_infinitePos
{x y : ℝ*}
:
x.InfinitePos → y.InfinitePos → (x + y).InfinitePos
theorem
Hyperreal.infiniteNeg_add_infiniteNeg
{x y : ℝ*}
:
x.InfiniteNeg → y.InfiniteNeg → (x + y).InfiniteNeg
theorem
Hyperreal.infinitePos_of_tendsto_top
{f : ℕ → ℝ}
(hf : Filter.Tendsto f Filter.atTop Filter.atTop)
:
(Hyperreal.ofSeq f).InfinitePos
theorem
Hyperreal.infiniteNeg_of_tendsto_bot
{f : ℕ → ℝ}
(hf : Filter.Tendsto f Filter.atTop Filter.atBot)
:
(Hyperreal.ofSeq f).InfiniteNeg
Basic lemmas about infinitesimal #
theorem
Hyperreal.Infinitesimal.add
{x y : ℝ*}
(hx : x.Infinitesimal)
(hy : y.Infinitesimal)
:
(x + y).Infinitesimal
theorem
Hyperreal.Infinitesimal.mul
{x y : ℝ*}
(hx : x.Infinitesimal)
(hy : y.Infinitesimal)
:
(x * y).Infinitesimal
theorem
Hyperreal.infinitesimal_of_tendsto_zero
{f : ℕ → ℝ}
(h : Filter.Tendsto f Filter.atTop (nhds 0))
:
(Hyperreal.ofSeq f).Infinitesimal
theorem
Hyperreal.infinite_of_infinitesimal_inv
{x : ℝ*}
(h0 : x ≠ 0)
(hi : x⁻¹.Infinitesimal)
:
x.Infinite
Hyperreal.st
stuff that requires infinitesimal machinery #
Infinite stuff that requires infinitesimal machinery #
theorem
Hyperreal.infinitePos_mul_infinitePos
{x y : ℝ*}
:
x.InfinitePos → y.InfinitePos → (x * y).InfinitePos
theorem
Hyperreal.infiniteNeg_mul_infiniteNeg
{x y : ℝ*}
:
x.InfiniteNeg → y.InfiniteNeg → (x * y).InfinitePos
theorem
Hyperreal.infinitePos_mul_infiniteNeg
{x y : ℝ*}
:
x.InfinitePos → y.InfiniteNeg → (x * y).InfiniteNeg
theorem
Hyperreal.infiniteNeg_mul_infinitePos
{x y : ℝ*}
:
x.InfiniteNeg → y.InfinitePos → (x * y).InfiniteNeg