Documentation

Mathlib.Analysis.Real.Hyperreal

Construction of the hyperreal numbers as an ultraproduct of real sequences #

We define the Hyperreal numbers as quotients of sequences ℕ → ℝ by an ultrafilter. These form a field, and we prove some of their basic properties.

Note that most of the machinery that is usually defined for the specific purpose of non-standard analysis (infinitesimal and infinite elements, standard parts) has been generalized to other non-archimedean fields. In particular:

TODO #

Use Łoś's Theorem FirstOrder.Language.Ultraproduct.sentence_realize to formalize the transfer principle on Hyperreal.

Hyperreal numbers on the ultrafilter extending the cofinite filter.

Equations
Instances For
    @[instance_reducible]
    noncomputable instance instInhabitedHyperreal :
    Equations

    Hyperreal numbers on the ultrafilter extending the cofinite filter.

    Equations
    Instances For
      @[instance_reducible]
      noncomputable instance Hyperreal.instField :
      Equations
      • One or more equations did not get rendered due to their size.
      @[instance_reducible]
      Equations
      • One or more equations did not get rendered due to their size.
      noncomputable def Hyperreal.ofReal :
      ℝ*

      Natural embedding ℝ → ℝ*.

      Equations
      Instances For
        @[instance_reducible]
        noncomputable instance Hyperreal.instCoeTCReal :
        Equations
        @[simp]
        theorem Hyperreal.coe_eq_coe {x y : } :
        x = y x = y
        theorem Hyperreal.coe_ne_coe {x y : } :
        x y x y
        @[simp]
        theorem Hyperreal.coe_eq_zero {x : } :
        x = 0 x = 0
        @[simp]
        theorem Hyperreal.coe_eq_one {x : } :
        x = 1 x = 1
        theorem Hyperreal.coe_ne_zero {x : } :
        x 0 x 0
        theorem Hyperreal.coe_ne_one {x : } :
        x 1 x 1
        @[simp]
        theorem Hyperreal.coe_one :
        1 = 1
        @[simp]
        theorem Hyperreal.coe_zero :
        0 = 0
        @[simp]
        theorem Hyperreal.coe_inv (x : ) :
        x⁻¹ = (↑x)⁻¹
        @[simp]
        theorem Hyperreal.coe_neg (x : ) :
        ↑(-x) = -x
        @[simp]
        theorem Hyperreal.coe_add (x y : ) :
        ↑(x + y) = x + y
        @[simp]
        @[simp]
        theorem Hyperreal.coe_mul (x y : ) :
        ↑(x * y) = x * y
        @[simp]
        theorem Hyperreal.coe_div (x y : ) :
        ↑(x / y) = x / y
        @[simp]
        theorem Hyperreal.coe_sub (x y : ) :
        ↑(x - y) = x - y
        @[simp]
        theorem Hyperreal.coe_le_coe {x y : } :
        x y x y
        @[simp]
        theorem Hyperreal.coe_lt_coe {x y : } :
        x < y x < y
        @[simp]
        theorem Hyperreal.coe_nonneg {x : } :
        0 x 0 x
        @[simp]
        theorem Hyperreal.coe_pos {x : } :
        0 < x 0 < x
        @[simp]
        theorem Hyperreal.coe_abs (x : ) :
        |x| = |x|
        @[simp]
        theorem Hyperreal.coe_max (x y : ) :
        (max x y) = max x y
        @[simp]
        theorem Hyperreal.coe_min (x y : ) :
        (min x y) = min x y
        noncomputable def Hyperreal.coeRingHom :

        The canonical map ℝ → ℝ* as an OrderRingHom.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          @[simp]

          Basic constants #

          noncomputable def Hyperreal.ofSeq (f : ) :

          Construct a hyperreal number from a sequence of real numbers.

          Equations
          Instances For
            theorem Hyperreal.ofSeq_lt_ofSeq {f g : } :
            ofSeq f < ofSeq g ∀ᶠ (n : ) in (Filter.hyperfilter ), f n < g n

            ω #

            noncomputable def Hyperreal.omega :

            A sample infinite hyperreal ω = ⟦(0, 1, 2, 3, ⋯)⟧.

            Conventions for notations in identifiers:

            • The recommended spelling of ω in identifiers is omega.
            Equations
            Instances For

              A sample infinite hyperreal ω = ⟦(0, 1, 2, 3, ⋯)⟧.

              Conventions for notations in identifiers:

              • The recommended spelling of ω in identifiers is omega.
              Equations
              Instances For

                ε #

                noncomputable def Hyperreal.epsilon :

                A sample infinitesimal hyperreal ε = ⟦(0, 1, 1/2, 1/3, ⋯)⟧.

                Conventions for notations in identifiers:

                • The recommended spelling of ε in identifiers is epsilon.
                Equations
                Instances For

                  A sample infinitesimal hyperreal ε = ⟦(0, 1, 1/2, 1/3, ⋯)⟧.

                  Conventions for notations in identifiers:

                  • The recommended spelling of ε in identifiers is epsilon.
                  Equations
                  Instances For

                    Some facts about Tendsto #

                    theorem Hyperreal.stdPart_map {x : ℝ*} {r : } {f : } (hf : ContinuousAt f r) (hxr : Filter.Germ.Tendsto x (nhds r)) :
                    theorem Hyperreal.stdPart_map₂ {x y : ℝ*} {r s : } {f : } (hxr : Filter.Germ.Tendsto x (nhds r)) (hys : Filter.Germ.Tendsto y (nhds s)) (hf : ContinuousAt (Function.uncurry f) (r, s)) :
                    (Filter.Germ.map₂ f x y).Tendsto (nhds (f r s))
                    theorem Hyperreal.tendsto_iff_forall {x : ℝ*} {r : } :
                    Filter.Germ.Tendsto x (nhds r) (∀ s < r, s x) s > r, x s
                    theorem Hyperreal.epsilon_lt_of_pos {r : } :
                    0 < repsilon < r
                    theorem Hyperreal.epsilon_lt_of_neg {r : } :
                    r < 0r < epsilon