Cauchy sequences in metric spaces

Content created by Louis Wasserman.

Created on 2025-03-23.
Last modified on 2025-03-23.

{-# OPTIONS --lossy-unification #-}

module metric-spaces.cauchy-sequences-metric-spaces where
Imports
open import elementary-number-theory.addition-rational-numbers
open import elementary-number-theory.archimedean-property-positive-rational-numbers
open import elementary-number-theory.inequality-natural-numbers
open import elementary-number-theory.inequality-rational-numbers
open import elementary-number-theory.maximum-natural-numbers
open import elementary-number-theory.multiplicative-group-of-positive-rational-numbers
open import elementary-number-theory.natural-numbers
open import elementary-number-theory.nonzero-natural-numbers
open import elementary-number-theory.positive-rational-numbers
open import elementary-number-theory.strict-inequality-rational-numbers
open import elementary-number-theory.unit-fractions-rational-numbers

open import foundation.action-on-identifications-functions
open import foundation.binary-transport
open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.propositions
open import foundation.transport-along-identifications
open import foundation.universe-levels

open import metric-spaces.cauchy-approximations-metric-spaces
open import metric-spaces.limits-of-cauchy-approximations-in-premetric-spaces
open import metric-spaces.metric-spaces

Idea

A Cauchy sequence x in a metric space is a mapping from the natural numbers to the underlying type of the metric space such that for any positive rational ε, there is a concrete n : ℕ such that for any m, k ≥ n, x m and x k are in an ε-neighborhood of each other.

Importantly, this is a structure, not a proposition, allowing us to explicitly calculate rates of convergence. This follows Section 11.2.2 in [UF13].

In a metric space, every Cauchy sequence has a (non-unique) corresponding Cauchy approximation, with the same limit if either exists, and vice versa.

Definition

Cauchy sequences

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

  is-cauchy-sequence-Metric-Space : UU l2
  is-cauchy-sequence-Metric-Space =
    (ε : ℚ⁺) 
    Σ
      ( )
      ( λ n 
        (m k : )  leq-ℕ n m  leq-ℕ n k 
        neighborhood-Metric-Space M ε (x m) (x k))

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

  cauchy-sequence-Metric-Space : UU (l1  l2)
  cauchy-sequence-Metric-Space =
    Σ (  type-Metric-Space M) (is-cauchy-sequence-Metric-Space M)

  modulus-of-convergence-cauchy-sequence-Metric-Space :
    cauchy-sequence-Metric-Space  ℚ⁺  
  modulus-of-convergence-cauchy-sequence-Metric-Space (x , is-cauchy-x) ε⁺ =
    pr1 (is-cauchy-x ε⁺)

  map-cauchy-sequence-Metric-Space :
    cauchy-sequence-Metric-Space    type-Metric-Space M
  map-cauchy-sequence-Metric-Space = pr1

  is-cauchy-sequence-cauchy-sequence-Metric-Space :
    (x : cauchy-sequence-Metric-Space) 
    is-cauchy-sequence-Metric-Space M (map-cauchy-sequence-Metric-Space x)
  is-cauchy-sequence-cauchy-sequence-Metric-Space = pr2

  neighborhood-modulus-of-convergence-cauchy-sequence-Metric-Space :
    (x : cauchy-sequence-Metric-Space) (ε⁺ : ℚ⁺) (m k : ) 
    leq-ℕ (modulus-of-convergence-cauchy-sequence-Metric-Space x ε⁺) m 
    leq-ℕ (modulus-of-convergence-cauchy-sequence-Metric-Space x ε⁺) k 
    neighborhood-Metric-Space
      ( M)
      ( ε⁺)
      ( map-cauchy-sequence-Metric-Space x m)
      ( map-cauchy-sequence-Metric-Space x k)
  neighborhood-modulus-of-convergence-cauchy-sequence-Metric-Space
    (x , is-cauchy-x) ε⁺ = pr2 (is-cauchy-x ε⁺)

  map-at-modulus-of-convergence-cauchy-sequence-Metric-Space :
    (x : cauchy-sequence-Metric-Space) (ε⁺ : ℚ⁺)  type-Metric-Space M
  map-at-modulus-of-convergence-cauchy-sequence-Metric-Space x ε⁺ =
    map-cauchy-sequence-Metric-Space
      ( x)
      ( modulus-of-convergence-cauchy-sequence-Metric-Space x ε⁺)

  neighborhood-at-modulus-of-convergence-cauchy-sequence-Metric-Space :
    (x : cauchy-sequence-Metric-Space) (ε⁺ : ℚ⁺) (m : ) 
    leq-ℕ (modulus-of-convergence-cauchy-sequence-Metric-Space x ε⁺) m 
    neighborhood-Metric-Space
      ( M)
      ( ε⁺)
      ( map-at-modulus-of-convergence-cauchy-sequence-Metric-Space x ε⁺)
      ( map-cauchy-sequence-Metric-Space x m)
  neighborhood-at-modulus-of-convergence-cauchy-sequence-Metric-Space
    x ε⁺ m n≤m =
    let
      n = modulus-of-convergence-cauchy-sequence-Metric-Space x ε⁺
    in
      neighborhood-modulus-of-convergence-cauchy-sequence-Metric-Space
        ( x)
        ( ε⁺)
        ( n)
        ( m)
        ( refl-leq-ℕ n)
        ( n≤m)

Limits of arbitrary sequences

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

  is-limit-sequence-Metric-Space : UU l2
  is-limit-sequence-Metric-Space =
    (ε : ℚ⁺) 
    Σ
      ( )
      ( λ n 
        (m : )  leq-ℕ n m 
        neighborhood-Metric-Space
          ( M)
          ( ε)
          ( x m)
          ( l))

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (x :   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 x)

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

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

Limits of Cauchy sequences

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

  is-limit-cauchy-sequence-Metric-Space : UU l2
  is-limit-cauchy-sequence-Metric-Space =
    is-limit-sequence-Metric-Space
      ( M)
      ( map-cauchy-sequence-Metric-Space M x)
      ( l)

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

  has-limit-cauchy-sequence-Metric-Space : UU (l1  l2)
  has-limit-cauchy-sequence-Metric-Space =
    has-limit-sequence-Metric-Space
      ( M)
      ( map-cauchy-sequence-Metric-Space M x)

Properties

If a sequence has a limit, it is Cauchy

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (x :   type-Metric-Space M)
  (H : has-limit-sequence-Metric-Space M x)
  where

  abstract
    is-cauchy-sequence-has-limit-Metric-Space :
      is-cauchy-sequence-Metric-Space M x
    is-cauchy-sequence-has-limit-Metric-Space ε⁺@(ε , _) =
      let
        lim = limit-has-limit-sequence-Metric-Space M x H
        (ε'⁺@(ε' , _) , 2ε'<ε) = bound-double-le-ℚ⁺ ε⁺
        (n , n≤m⇒|xm-l|<ε') =
          is-limit-limit-has-limit-sequence-Metric-Space M x H ε'⁺
      in
        n ,
        λ m k n≤m n≤k 
        is-monotonic-structure-Metric-Space
          ( M)
          ( x m)
          ( x k)
          ( ε'⁺ +ℚ⁺ ε'⁺)
          ( ε⁺)
          ( 2ε'<ε)
          ( is-triangular-structure-Metric-Space
            ( M)
            ( x m)
            ( lim)
            ( x k)
            ( ε'⁺)
            ( ε'⁺)
            ( is-symmetric-structure-Metric-Space
              ( M)
              ( ε'⁺)
              ( x k)
              ( lim)
              ( n≤m⇒|xm-l|<ε' k n≤k))
            ( n≤m⇒|xm-l|<ε' m n≤m))

Correspondence to Cauchy approximations

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

  map-cauchy-approximation-cauchy-sequence-Metric-Space :
    ℚ⁺  type-Metric-Space M
  map-cauchy-approximation-cauchy-sequence-Metric-Space ε =
    map-cauchy-sequence-Metric-Space
      ( M)
      ( x)
      ( modulus-of-convergence-cauchy-sequence-Metric-Space M x ε)

  abstract
    is-cauchy-approximation-cauchy-approximation-cauchy-sequence-Metric-Space :
      is-cauchy-approximation-Metric-Space
        ( M)
        ( map-cauchy-approximation-cauchy-sequence-Metric-Space)
    is-cauchy-approximation-cauchy-approximation-cauchy-sequence-Metric-Space
      ε⁺@(ε , _) δ⁺@(δ , _) =
        let
           = modulus-of-convergence-cauchy-sequence-Metric-Space M x ε⁺
           = modulus-of-convergence-cauchy-sequence-Metric-Space M x δ⁺
          xmε = map-cauchy-sequence-Metric-Space M x 
          xmδ = map-cauchy-sequence-Metric-Space M x 
        in
          rec-coproduct
            ( λ mε≤mδ 
              is-monotonic-structure-Metric-Space
                ( M)
                ( xmε)
                ( xmδ)
                ( ε⁺)
                ( ε⁺ +ℚ⁺ δ⁺)
                ( le-right-add-rational-ℚ⁺ ε δ⁺)
                ( neighborhood-at-modulus-of-convergence-cauchy-sequence-Metric-Space
                  ( M)
                  ( x)
                  ( ε⁺)
                  ( )
                  ( mε≤mδ)))
            ( λ mδ≤mε 
              is-monotonic-structure-Metric-Space
                ( M)
                ( xmε)
                ( xmδ)
                ( δ⁺)
                ( ε⁺ +ℚ⁺ δ⁺)
                ( le-left-add-rational-ℚ⁺ δ ε⁺)
                ( is-symmetric-structure-Metric-Space
                  ( M)
                  ( δ⁺)
                  ( xmδ)
                  ( xmε)
                  ( neighborhood-at-modulus-of-convergence-cauchy-sequence-Metric-Space
                    ( M)
                    ( x)
                    ( δ⁺)
                    ( )
                    ( mδ≤mε))))
            ( linear-leq-ℕ  )

  cauchy-approximation-cauchy-sequence-Metric-Space :
    cauchy-approximation-Metric-Space M
  pr1 cauchy-approximation-cauchy-sequence-Metric-Space =
    map-cauchy-approximation-cauchy-sequence-Metric-Space
  pr2 cauchy-approximation-cauchy-sequence-Metric-Space =
    is-cauchy-approximation-cauchy-approximation-cauchy-sequence-Metric-Space

The limit of a Cauchy approximation corresponding to a Cauchy sequence is the limit of the sequence

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (x : cauchy-sequence-Metric-Space M)
  (l : type-Metric-Space M)
  (H :
    is-limit-cauchy-approximation-Premetric-Space
      ( premetric-Metric-Space M)
      ( cauchy-approximation-cauchy-sequence-Metric-Space M x)
      ( l))
  where

  abstract
    is-limit-cauchy-sequence-limit-cauchy-approximation-cauchy-sequence-Metric-Space :
      is-limit-cauchy-sequence-Metric-Space M x l
    is-limit-cauchy-sequence-limit-cauchy-approximation-cauchy-sequence-Metric-Space
      ε⁺@(ε , _) =
      let
        (ε'⁺@(ε' , _) , 2ε'<ε) = bound-double-le-ℚ⁺ ε⁺
        ε''⁺@(ε'' , _) = left-summand-split-ℚ⁺ ε'⁺
        n =
          modulus-of-convergence-cauchy-sequence-Metric-Space M x ε''⁺
        xn = map-cauchy-sequence-Metric-Space M x n
      in
        n ,
        λ m n≤m 
          let
            xm = map-cauchy-sequence-Metric-Space M x m
          in
            is-monotonic-structure-Metric-Space
              ( M)
              ( xm)
              ( l)
              ( ε''⁺ +ℚ⁺ ε'⁺)
              ( ε⁺)
              ( transitive-le-ℚ
                ( ε'' +ℚ ε')
                ( ε' +ℚ ε')
                ( ε)
                ( 2ε'<ε)
                ( preserves-le-left-add-ℚ ε' ε'' ε' (le-mediant-zero-ℚ⁺ ε'⁺)))
              ( is-triangular-structure-Metric-Space
                ( M)
                ( xm)
                ( xn)
                ( l)
                ( ε''⁺)
                ( ε'⁺)
                ( tr
                  ( λ d  neighborhood-Metric-Space M d xn l)
                  ( eq-add-split-ℚ⁺ ε'⁺)
                  ( H ε''⁺ (right-summand-split-ℚ⁺ ε'⁺)))
                ( is-symmetric-structure-Metric-Space
                  ( M)
                  ( ε''⁺)
                  ( xn)
                  ( xm)
                  ( neighborhood-at-modulus-of-convergence-cauchy-sequence-Metric-Space
                    ( M)
                    ( x)
                    ( ε''⁺)
                    ( m)
                    ( n≤m))))

Correspondence of Cauchy approximations to Cauchy sequences

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (x : cauchy-approximation-Metric-Space M)
  where

  map-cauchy-sequence-cauchy-approximation-Metric-Space :
      type-Metric-Space M
  map-cauchy-sequence-cauchy-approximation-Metric-Space n =
    map-cauchy-approximation-Metric-Space
      ( M)
      ( x)
      ( positive-reciprocal-rational-ℕ⁺ (succ-nonzero-ℕ' n))

  modulus-of-convergence-cauchy-sequence-cauchy-approximation-Metric-Space :
    ℚ⁺  
  modulus-of-convergence-cauchy-sequence-cauchy-approximation-Metric-Space ε⁺ =
    pred-nonzero-ℕ (pr1 (smaller-reciprocal-ℚ⁺ ε⁺))

  abstract
    is-cauchy-sequence-cauchy-sequence-cauchy-approximation-Metric-Space :
      is-cauchy-sequence-Metric-Space
        ( M)
        ( map-cauchy-sequence-cauchy-approximation-Metric-Space)
    is-cauchy-sequence-cauchy-sequence-cauchy-approximation-Metric-Space
      ε⁺@(ε , _) =
      let
        (ε'⁺@(ε' , _) , 2ε'<ε) = bound-double-le-ℚ⁺ ε⁺
        (n' , 1/n'<ε') = smaller-reciprocal-ℚ⁺ ε'⁺
        n = pred-nonzero-ℕ n'
        1/n' = positive-reciprocal-rational-ℕ⁺ n'
        xn = map-cauchy-sequence-cauchy-approximation-Metric-Space n
      in
        n ,
        λ m k n≤m n≤k 
          let
            xm = map-cauchy-sequence-cauchy-approximation-Metric-Space m
            xk = map-cauchy-sequence-cauchy-approximation-Metric-Space k
            m' = succ-nonzero-ℕ' m
            k' = succ-nonzero-ℕ' k
            1/m' = positive-reciprocal-rational-ℕ⁺ m'
            1/k' = positive-reciprocal-rational-ℕ⁺ k'
          in
            is-monotonic-structure-Metric-Space
              ( M)
              ( xm)
              ( xk)
              ( 1/m' +ℚ⁺ 1/k')
              ( ε⁺)
              ( concatenate-leq-le-ℚ
                ( rational-ℚ⁺ (1/m' +ℚ⁺ 1/k'))
                ( rational-ℚ⁺ (1/n' +ℚ⁺ 1/n'))
                ( ε)
                ( preserves-leq-add-ℚ
                  { rational-ℚ⁺ 1/m'}
                  { rational-ℚ⁺ 1/n'}
                  { rational-ℚ⁺ 1/k'}
                  { rational-ℚ⁺ 1/n'}
                  ( leq-reciprocal-rational-ℕ⁺
                    ( n')
                    ( m')
                    ( tr
                      ( λ p  leq-ℕ⁺ p m')
                      ( is-section-succ-nonzero-ℕ' n')
                      ( n≤m)))
                  ( leq-reciprocal-rational-ℕ⁺
                    ( n')
                    ( k')
                    ( tr
                      ( λ p  leq-ℕ⁺ p k')
                      ( is-section-succ-nonzero-ℕ' n')
                      ( n≤k))))
                ( transitive-le-ℚ
                  ( rational-ℚ⁺ (1/n' +ℚ⁺ 1/n'))
                  ( ε' +ℚ ε')
                  ( ε)
                  ( 2ε'<ε)
                  ( preserves-le-add-ℚ
                    { rational-ℚ⁺ 1/n'}
                    { ε'}
                    { rational-ℚ⁺ 1/n'}
                    { ε'}
                    ( 1/n'<ε')
                    ( 1/n'<ε'))))
              ( is-cauchy-approximation-map-cauchy-approximation-Metric-Space
                ( M)
                ( x)
                ( 1/m')
                ( 1/k'))

  cauchy-sequence-cauchy-approximation-Metric-Space :
    cauchy-sequence-Metric-Space M
  cauchy-sequence-cauchy-approximation-Metric-Space =
    map-cauchy-sequence-cauchy-approximation-Metric-Space ,
    is-cauchy-sequence-cauchy-sequence-cauchy-approximation-Metric-Space

If the Cauchy sequence associated with a Cauchy approximation has a limit, the approximation has the same limit

module _
  {l1 l2 : Level} (M : Metric-Space l1 l2)
  (x : cauchy-approximation-Metric-Space M)
  (l : type-Metric-Space M)
  where

  abstract
    is-limit-cauchy-approximation-limit-cauchy-sequence-cauchy-approximation-Metric-Space :
      is-limit-cauchy-sequence-Metric-Space
        ( M)
        ( cauchy-sequence-cauchy-approximation-Metric-Space M x)
        ( l) 
      is-limit-cauchy-approximation-Premetric-Space
        ( premetric-Metric-Space M)
        ( x)
        ( l)
    is-limit-cauchy-approximation-limit-cauchy-sequence-cauchy-approximation-Metric-Space
      l-is-sequence-limit ε⁺@(ε , _) δ⁺@(δ , _) =
      let
        (δ'⁺@(δ' , _) , 2δ'<δ) = bound-double-le-ℚ⁺ δ⁺
        (n₁' , 1/n₁'<δ') = smaller-reciprocal-ℚ⁺ δ'⁺
        1/n₁' = positive-reciprocal-rational-ℕ⁺ n₁'
        n₁ = pred-ℕ⁺ n₁'
        (n₂ , H) = l-is-sequence-limit δ'⁺
        n = max-ℕ n₁ n₂
        n' = succ-nonzero-ℕ' n
        1/n' = positive-reciprocal-rational-ℕ⁺ n'
         = map-cauchy-approximation-Metric-Space M x ε⁺
        x1/n' = map-cauchy-approximation-Metric-Space M x 1/n'
      in
        is-monotonic-structure-Metric-Space
          ( M)
          ( )
          ( l)
          ( (ε⁺ +ℚ⁺ δ'⁺) +ℚ⁺ δ'⁺)
          ( ε⁺ +ℚ⁺ δ⁺)
          ( inv-tr
            ( λ y  le-ℚ⁺ y (ε⁺ +ℚ⁺ δ⁺))
            ( associative-add-ℚ⁺ ε⁺ δ'⁺ δ'⁺)
            ( preserves-le-right-add-ℚ ε (δ' +ℚ δ') δ 2δ'<δ))
          ( is-triangular-structure-Metric-Space
            ( M)
            ( )
            ( x1/n')
            ( l)
            ( ε⁺ +ℚ⁺ δ'⁺)
            ( δ'⁺)
            ( pr2
              ( l-is-sequence-limit δ'⁺)
              ( n)
              ( right-leq-max-ℕ n₁ n₂))
            ( is-monotonic-structure-Metric-Space
              ( M)
              ( )
              ( x1/n')
              ( ε⁺ +ℚ⁺ 1/n')
              ( ε⁺ +ℚ⁺ δ'⁺)
              ( preserves-le-right-add-ℚ
                ( ε)
                ( rational-ℚ⁺ 1/n')
                ( δ')
                ( concatenate-leq-le-ℚ
                  ( rational-ℚ⁺ 1/n')
                  ( rational-ℚ⁺ 1/n₁')
                  ( δ')
                  ( leq-reciprocal-rational-ℕ⁺
                    ( n₁')
                    ( n')
                    ( reflects-leq-pred-nonzero-ℕ
                      ( n₁')
                      ( n')
                      ( inv-tr
                        ( leq-ℕ n₁)
                        ( is-section-pred-nonzero-ℕ n)
                        ( left-leq-max-ℕ n₁ n₂))))
                  ( 1/n₁'<δ')))
              ( is-cauchy-approximation-map-cauchy-approximation-Metric-Space
                ( M)
                ( x)
                ( ε⁺)
                ( 1/n'))))

References

{­{#bibliography}}

References

[UF13]
The Univalent Foundations Program. Homotopy Type Theory: Univalent Foundations of Mathematics. Institute for Advanced Study, 2013. URL: https://homotopytypetheory.org/book/, arXiv:1308.0729.

Recent changes