Limits of sequences in metric spaces

Content created by Louis Wasserman, malarbol and Fredrik Bakke.

Created on 2025-05-01.
Last modified on 2025-10-19.

module metric-spaces.limits-of-sequences-metric-spaces where
Imports
open import elementary-number-theory.addition-positive-rational-numbers
open import elementary-number-theory.inequality-natural-numbers
open import elementary-number-theory.maximum-natural-numbers
open import elementary-number-theory.natural-numbers
open import elementary-number-theory.positive-rational-numbers

open import foundation.cartesian-product-types
open import foundation.dependent-pair-types
open import foundation.function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.functoriality-propositional-truncation
open import foundation.identity-types
open import foundation.inhabited-subtypes
open import foundation.inhabited-types
open import foundation.propositional-truncations
open import foundation.propositions
open import foundation.subtypes
open import foundation.transport-along-identifications
open import foundation.universe-levels

open import lists.sequences

open import metric-spaces.cartesian-products-metric-spaces
open import metric-spaces.metric-spaces
open import metric-spaces.modulated-uniformly-continuous-functions-metric-spaces
open import metric-spaces.sequences-metric-spaces
open import metric-spaces.short-functions-metric-spaces
open import metric-spaces.uniformly-continuous-functions-metric-spaces

Ideas

An element l of a metric space is the limit of a sequence in metric spaces u if there exists a function m : ℚ⁺ → ℕ such that whenever m ε ≤ n in , u n is in an ε-neighborhood of l.

Definition

Limits of sequences in a metric space

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (u : sequence-type-Metric-Space M)
  (lim : type-Metric-Space M)
  where

  is-limit-modulus-prop-sequence-Metric-Space : (ℚ⁺  )  Prop l2
  is-limit-modulus-prop-sequence-Metric-Space m =
    Π-Prop
      ( ℚ⁺)
      ( λ ε 
        Π-Prop
          ( )
          ( λ ( n : ) 
            hom-Prop
              ( leq-ℕ-Prop (m ε) n)
              ( neighborhood-prop-Metric-Space M ε (u n) lim)))

  is-limit-modulus-sequence-Metric-Space : (ℚ⁺  )  UU l2
  is-limit-modulus-sequence-Metric-Space m =
    type-Prop (is-limit-modulus-prop-sequence-Metric-Space m)

  limit-modulus-sequence-Metric-Space : UU l2
  limit-modulus-sequence-Metric-Space =
    type-subtype is-limit-modulus-prop-sequence-Metric-Space

  modulus-limit-modulus-sequence-Metric-Space :
    limit-modulus-sequence-Metric-Space  ℚ⁺  
  modulus-limit-modulus-sequence-Metric-Space m = pr1 m

  is-modulus-limit-modulus-sequence-Metric-Space :
    (m : limit-modulus-sequence-Metric-Space) 
    is-limit-modulus-sequence-Metric-Space
      (modulus-limit-modulus-sequence-Metric-Space m)
  is-modulus-limit-modulus-sequence-Metric-Space m = pr2 m

  is-limit-prop-sequence-Metric-Space : Prop l2
  is-limit-prop-sequence-Metric-Space =
    is-inhabited-subtype-Prop is-limit-modulus-prop-sequence-Metric-Space

  is-limit-sequence-Metric-Space : UU l2
  is-limit-sequence-Metric-Space =
    type-Prop is-limit-prop-sequence-Metric-Space

Properties

The limit of a sequence in a metric space is unique

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (u : sequence-type-Metric-Space M)
  (x y : type-Metric-Space M)
  (Lx : is-limit-sequence-Metric-Space M u x)
  (Ly : is-limit-sequence-Metric-Space M u y)
  where

  sim-limit-sequence-Metric-Space : sim-Metric-Space M x y
  sim-limit-sequence-Metric-Space =
    rec-trunc-Prop
      ( sim-prop-Metric-Space M x y)
      ( λ My 
        rec-trunc-Prop
          ( Π-Prop ℚ⁺  d  neighborhood-prop-Metric-Space M d x y))
          ( λ Mx 
            lemma-sim-limit-modulus-sequence-Metric-Space Mx My)
          ( Lx))
      ( Ly)
    where

    lemma-add-limit-modulus-sequence-Metric-Space :
      (d₁ d₂ : ℚ⁺) 
      Σ ( )
        ( λ N 
          (n : ) 
          leq-ℕ N n 
          neighborhood-Metric-Space M d₁ (u n) x) 
      Σ ( )
        ( λ N 
          (n : ) 
          leq-ℕ N n 
          neighborhood-Metric-Space M d₂ (u n) y) 
      neighborhood-Metric-Space M (d₁ +ℚ⁺ d₂) x y
    lemma-add-limit-modulus-sequence-Metric-Space d₁ d₂ (Nx , Mx) (Ny , My) =
      triangular-neighborhood-Metric-Space M
        ( x)
        ( u (max-ℕ Nx Ny))
        ( y)
        ( d₁)
        ( d₂)
        ( My (max-ℕ Nx Ny) (right-leq-max-ℕ Nx Ny))
        ( symmetric-neighborhood-Metric-Space M d₁
          ( u (max-ℕ Nx Ny))
          ( x)
          ( Mx (max-ℕ Nx Ny) (left-leq-max-ℕ Nx Ny)))

    lemma-sim-limit-modulus-sequence-Metric-Space :
      limit-modulus-sequence-Metric-Space M u x 
      limit-modulus-sequence-Metric-Space M u y 
      sim-Metric-Space M x y
    lemma-sim-limit-modulus-sequence-Metric-Space mx my ε =
      let
        (δ , η , δ+η=ε) = split-ℚ⁺ ε
         = modulus-limit-modulus-sequence-Metric-Space M u x mx δ
         = modulus-limit-modulus-sequence-Metric-Space M u y my η
         = max-ℕ  
        Nδ≤Nε = left-leq-max-ℕ  
        Nη≤Nε = right-leq-max-ℕ  

        δ-neighborhood : neighborhood-Metric-Space M δ (u ) x
        δ-neighborhood =
          is-modulus-limit-modulus-sequence-Metric-Space M u x mx δ  Nδ≤Nε

        η-neighborhood : neighborhood-Metric-Space M η (u ) y
        η-neighborhood =
          is-modulus-limit-modulus-sequence-Metric-Space M u y my η  Nη≤Nε

      in
        tr
          ( is-upper-bound-dist-Metric-Space M x y)
          ( δ+η=ε)
          ( triangular-neighborhood-Metric-Space
            ( M)
            ( x)
            ( u )
            ( y)
            ( δ)
            ( η)
            ( η-neighborhood)
            ( symmetric-neighborhood-Metric-Space
              ( M)
              ( δ)
              ( u )
              ( x)
              ( δ-neighborhood)))

  eq-limit-sequence-Metric-Space : x  y
  eq-limit-sequence-Metric-Space =
    eq-sim-Metric-Space M x y sim-limit-sequence-Metric-Space

Having a limit in a metric space is a proposition

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (u : sequence-type-Metric-Space M)
  where

  has-limit-sequence-Metric-Space : UU (l1  l2)
  has-limit-sequence-Metric-Space =
    Σ (type-Metric-Space M) (is-limit-sequence-Metric-Space M u)

  limit-has-limit-sequence-Metric-Space :
    has-limit-sequence-Metric-Space  type-Metric-Space M
  limit-has-limit-sequence-Metric-Space H = pr1 H

  is-limit-limit-has-limit-sequence-Metric-Space :
    (H : has-limit-sequence-Metric-Space) 
    is-limit-sequence-Metric-Space M u
      (limit-has-limit-sequence-Metric-Space H)
  is-limit-limit-has-limit-sequence-Metric-Space H = pr2 H

  is-prop-has-limit-sequence-Metric-Space :
    is-prop has-limit-sequence-Metric-Space
  is-prop-has-limit-sequence-Metric-Space =
    is-prop-all-elements-equal
      ( λ x y 
        eq-type-subtype
          ( is-limit-prop-sequence-Metric-Space M u)
          ( eq-limit-sequence-Metric-Space M u
            ( limit-has-limit-sequence-Metric-Space x)
            ( limit-has-limit-sequence-Metric-Space y)
            ( is-limit-limit-has-limit-sequence-Metric-Space x)
            ( is-limit-limit-has-limit-sequence-Metric-Space y)))

  has-limit-prop-sequence-Metric-Space : Prop (l1  l2)
  has-limit-prop-sequence-Metric-Space =
    has-limit-sequence-Metric-Space ,
    is-prop-has-limit-sequence-Metric-Space

Modulated uniformly continuous maps between metric spaces preserve limits

module _
  {la la' lb lb' : Level}
  (A : Metric-Space la la')
  (B : Metric-Space lb lb')
  (f : modulated-ucont-map-Metric-Space A B)
  (u : sequence-type-Metric-Space A)
  (lim : type-Metric-Space A)
  where

  abstract
    modulated-ucont-map-limit-modulus-sequence-Metric-Space :
      limit-modulus-sequence-Metric-Space A u lim 
      limit-modulus-sequence-Metric-Space
        ( B)
        ( map-sequence
          ( map-modulated-ucont-map-Metric-Space A B f)
          ( u))
        ( map-modulated-ucont-map-Metric-Space A B f lim)
    modulated-ucont-map-limit-modulus-sequence-Metric-Space (m , is-mod-m) =
      ( m  modulus-modulated-ucont-map-Metric-Space A B f ,
        λ ε n N≤n 
        is-modulus-of-uniform-continuity-modulus-modulated-ucont-map-Metric-Space
          ( A)
          ( B)
          ( f)
          ( u n)
          ( ε)
          ( lim)
          ( is-mod-m
            ( modulus-modulated-ucont-map-Metric-Space A B f ε)
            ( n)
            ( N≤n)))

    modulated-ucont-map-limit-sequence-Metric-Space :
      is-limit-sequence-Metric-Space A u lim 
      is-limit-sequence-Metric-Space
        ( B)
        ( map-sequence
          ( map-modulated-ucont-map-Metric-Space A B f)
          ( u))
        ( map-modulated-ucont-map-Metric-Space A B f lim)
    modulated-ucont-map-limit-sequence-Metric-Space =
      map-is-inhabited modulated-ucont-map-limit-modulus-sequence-Metric-Space

Uniformly continuous maps between metric spaces preserve limits

module _
  {la la' lb lb' : Level}
  (A : Metric-Space la la')
  (B : Metric-Space lb lb')
  (f : uniformly-continuous-function-Metric-Space A B)
  (u : sequence-type-Metric-Space A)
  (lim : type-Metric-Space A)
  where

  abstract
    uniformly-continuous-map-limit-sequence-Metric-Space :
      is-limit-sequence-Metric-Space A u lim 
      is-limit-sequence-Metric-Space
        ( B)
        ( map-sequence
          ( map-uniformly-continuous-function-Metric-Space A B f)
          ( u))
        ( map-uniformly-continuous-function-Metric-Space A B f lim)
    uniformly-continuous-map-limit-sequence-Metric-Space is-limit-lim =
      rec-trunc-Prop
        ( is-limit-prop-sequence-Metric-Space B _ _)
        ( λ m 
          modulated-ucont-map-limit-sequence-Metric-Space
            ( A)
            ( B)
            ( map-uniformly-continuous-function-Metric-Space A B f , m)
            ( u)
            ( lim)
            ( is-limit-lim))
        ( is-uniformly-continuous-map-uniformly-continuous-function-Metric-Space
          ( A)
          ( B)
          ( f))

Short maps between metric spaces preserve limits

module _
  {la la' lb lb' : Level}
  (A : Metric-Space la la')
  (B : Metric-Space lb lb')
  (f : short-function-Metric-Space A B)
  (u : sequence-type-Metric-Space A)
  (lim : type-Metric-Space A)
  where

  short-map-limit-modulus-sequence-Metric-Space :
    limit-modulus-sequence-Metric-Space A u lim 
    limit-modulus-sequence-Metric-Space
      ( B)
      ( map-sequence
        ( map-short-function-Metric-Space A B f)
        ( u))
      ( map-short-function-Metric-Space A B f lim)
  short-map-limit-modulus-sequence-Metric-Space =
    modulated-ucont-map-limit-modulus-sequence-Metric-Space
      ( A)
      ( B)
      ( modulated-ucont-map-short-function-Metric-Space A B f)
      ( u)
      ( lim)

  short-map-limit-sequence-Metric-Space :
    is-limit-sequence-Metric-Space A u lim 
    is-limit-sequence-Metric-Space
      ( B)
      ( map-sequence
        ( map-short-function-Metric-Space A B f)
        ( u))
      ( map-short-function-Metric-Space A B f lim)
  short-map-limit-sequence-Metric-Space =
    map-is-inhabited short-map-limit-modulus-sequence-Metric-Space

If two sequences have limits in metric spaces, their pairing has a limit in the product space

The converse has yet to be proved.

module _
  {l1 l2 l3 l4 : Level} (A : Metric-Space l1 l2) (B : Metric-Space l3 l4)
  (u : sequence-type-Metric-Space A)
  (v : sequence-type-Metric-Space B)
  (lim-u : type-Metric-Space A)
  (lim-v : type-Metric-Space B)
  (mod-lim-u : limit-modulus-sequence-Metric-Space A u lim-u)
  (mod-lim-v : limit-modulus-sequence-Metric-Space B v lim-v)
  where

  abstract
    limit-modulus-pair-sequence-Metric-Space :
      limit-modulus-sequence-Metric-Space
        ( product-Metric-Space A B)
        ( pair-sequence u v)
        ( lim-u , lim-v)
    limit-modulus-pair-sequence-Metric-Space =
      let
        (mu , is-mod-mu) = mod-lim-u
        (mv , is-mod-mv) = mod-lim-v
      in
        ( ( λ ε  max-ℕ (mu ε) (mv ε)) ,
          ( λ ε n N≤n 
            ( is-mod-mu ε n
                ( transitive-leq-ℕ
                  ( mu ε)
                  ( max-ℕ (mu ε) (mv ε))
                  ( n)
                  ( N≤n)
                  ( left-leq-max-ℕ (mu ε) (mv ε))) ,
              is-mod-mv ε n
                ( transitive-leq-ℕ
                  ( mv ε)
                  ( max-ℕ (mu ε) (mv ε))
                  ( n)
                  ( N≤n)
                  ( right-leq-max-ℕ (mu ε) (mv ε))))))

module _
  {l1 l2 l3 l4 : Level} (A : Metric-Space l1 l2) (B : Metric-Space l3 l4)
  {u : sequence-type-Metric-Space A}
  {v : sequence-type-Metric-Space B}
  {lim-u : type-Metric-Space A}
  {lim-v : type-Metric-Space B}
  (is-lim-u : is-limit-sequence-Metric-Space A u lim-u)
  (is-lim-v : is-limit-sequence-Metric-Space B v lim-v)
  where

  is-limit-pair-sequence-Metric-Space :
    is-limit-sequence-Metric-Space
      ( product-Metric-Space A B)
      ( pair-sequence u v)
      ( lim-u , lim-v)
  is-limit-pair-sequence-Metric-Space =
    map-binary-trunc-Prop
      ( limit-modulus-pair-sequence-Metric-Space A B u v lim-u lim-v)
      ( is-lim-u)
      ( is-lim-v)

See also

Recent changes