The distance between rational numbers

Content created by Louis Wasserman.

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

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

module elementary-number-theory.distance-rational-numbers where
Imports
open import elementary-number-theory.absolute-value-rational-numbers
open import elementary-number-theory.addition-rational-numbers
open import elementary-number-theory.additive-group-of-rational-numbers
open import elementary-number-theory.difference-rational-numbers
open import elementary-number-theory.inequality-rational-numbers
open import elementary-number-theory.maximum-rational-numbers
open import elementary-number-theory.minimum-rational-numbers
open import elementary-number-theory.multiplication-rational-numbers
open import elementary-number-theory.nonnegative-rational-numbers
open import elementary-number-theory.positive-rational-numbers
open import elementary-number-theory.rational-numbers
open import elementary-number-theory.strict-inequality-rational-numbers

open import foundation.action-on-identifications-binary-functions
open import foundation.action-on-identifications-functions
open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.transport-along-identifications

open import metric-spaces.metric-space-of-rational-numbers
open import metric-spaces.metric-space-of-rational-numbers-with-open-neighborhoods

Idea

The distance function between rational numbers measures how far two rational numbers are apart.

dist-ℚ :     ℚ⁰⁺
dist-ℚ p q = abs-ℚ (p -ℚ q)

rational-dist-ℚ :     
rational-dist-ℚ p q = rational-ℚ⁰⁺ (dist-ℚ p q)

Properties

Commutativity

abstract
  commutative-dist-ℚ : (p q : )  dist-ℚ p q  dist-ℚ q p
  commutative-dist-ℚ p q =
    inv (abs-neg-ℚ _)  ap abs-ℚ (distributive-neg-diff-ℚ _ _)

The differences of the arguments are less than or equal to their distance

abstract
  leq-diff-dist-ℚ : (p q : )  leq-ℚ (p -ℚ q) (rational-dist-ℚ p q)
  leq-diff-dist-ℚ p q = leq-abs-ℚ (p -ℚ q)

  leq-reversed-diff-dist-ℚ :
    (p q : )  leq-ℚ (q -ℚ p) (rational-dist-ℚ p q)
  leq-reversed-diff-dist-ℚ p q =
    tr
      ( leq-ℚ (q -ℚ p))
      ( ap rational-ℚ⁰⁺ (commutative-dist-ℚ q p))
      ( leq-diff-dist-ℚ q p)

Zero laws

abstract
  right-zero-law-dist-ℚ : (q : )  dist-ℚ q zero-ℚ  abs-ℚ q
  right-zero-law-dist-ℚ q = ap abs-ℚ (right-unit-law-add-ℚ _)

  left-zero-law-dist-ℚ : (q : )  dist-ℚ zero-ℚ q  abs-ℚ q
  left-zero-law-dist-ℚ q = commutative-dist-ℚ _ _  right-zero-law-dist-ℚ q

Distributivity laws

abstract
  left-distributive-mul-dist-ℚ :
    (p : ℚ⁰⁺) (q r : ) 
    p *ℚ⁰⁺ dist-ℚ q r  dist-ℚ (rational-ℚ⁰⁺ p *ℚ q) (rational-ℚ⁰⁺ p *ℚ r)
  left-distributive-mul-dist-ℚ p⁰⁺@(p , _) q r =
    eq-ℚ⁰⁺
      ( equational-reasoning
        p *ℚ rational-dist-ℚ q r
         rational-abs-ℚ (p *ℚ (q -ℚ r))
          by ap rational-ℚ⁰⁺ (inv (abs-left-mul-nonnegative-ℚ _ p⁰⁺))
         rational-abs-ℚ (p *ℚ q +ℚ p *ℚ (neg-ℚ r))
          by ap rational-abs-ℚ (left-distributive-mul-add-ℚ p q (neg-ℚ r))
         rational-abs-ℚ (p *ℚ q -ℚ p *ℚ r)
          by ap rational-abs-ℚ (ap (p *ℚ q +ℚ_) (right-negative-law-mul-ℚ _ _)))

  right-distributive-mul-dist-ℚ :
    (p : ℚ⁰⁺) (q r : ) 
    dist-ℚ q r *ℚ⁰⁺ p  dist-ℚ (q *ℚ rational-ℚ⁰⁺ p) (r *ℚ rational-ℚ⁰⁺ p)
  right-distributive-mul-dist-ℚ p⁰⁺@(p , _) q r =
    eq-ℚ⁰⁺
      ( equational-reasoning
        rational-dist-ℚ q r *ℚ p
         p *ℚ rational-dist-ℚ q r by commutative-mul-ℚ _ _
         rational-dist-ℚ (p *ℚ q) (p *ℚ r)
          by ap rational-ℚ⁰⁺ (left-distributive-mul-dist-ℚ p⁰⁺ q r)
         rational-dist-ℚ (q *ℚ p) (r *ℚ p)
          by
            ap-binary
              ( rational-dist-ℚ)
              ( commutative-mul-ℚ _ _)
              ( commutative-mul-ℚ _ _))

Triangle inequality

abstract
  triangle-inequality-dist-ℚ :
    (p q r : )  leq-ℚ⁰⁺ (dist-ℚ p r) (dist-ℚ p q +ℚ⁰⁺ dist-ℚ q r)
  triangle-inequality-dist-ℚ p q r =
    tr
      ( λ s  leq-ℚ⁰⁺ s (dist-ℚ p q +ℚ⁰⁺ dist-ℚ q r))
      ( ap abs-ℚ
        ( inv (associative-add-ℚ _ _ (neg-ℚ r)) 
          ap (_-ℚ r) (is-section-diff-ℚ _ _)))
      ( triangle-inequality-abs-ℚ (p -ℚ q) (q -ℚ r))

Bounding the distance between rational numbers

abstract
  leq-dist-leq-diff-ℚ :
    (p q r : )  leq-ℚ (p -ℚ q) r  leq-ℚ (q -ℚ p) r 
    leq-ℚ (rational-dist-ℚ p q) r
  leq-dist-leq-diff-ℚ p q r p-q≤r q-p≤r =
    leq-abs-leq-leq-neg-ℚ
      ( p -ℚ q)
      ( r)
      ( p-q≤r)
      ( inv-tr  s  leq-ℚ s r) (distributive-neg-diff-ℚ p q) q-p≤r)

  le-dist-le-diff-ℚ :
    (p q r : )  le-ℚ (p -ℚ q) r  le-ℚ (q -ℚ p) r 
    le-ℚ (rational-dist-ℚ p q) r
  le-dist-le-diff-ℚ p q r p-q<r q-p<r =
    le-abs-le-le-neg-ℚ
      ( p -ℚ q)
      ( r)
      ( p-q<r)
      ( inv-tr  s  le-ℚ s r) (distributive-neg-diff-ℚ p q) q-p<r)

Relationship to the metric space of rational numbers

abstract
  leq-dist-neighborhood-leq-ℚ :
    (ε : ℚ⁺) (p q : ) 
    neighborhood-leq-ℚ ε p q 
    leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε)
  leq-dist-neighborhood-leq-ℚ ε⁺@(ε , _) p q (H , K) =
    leq-dist-leq-diff-ℚ
      ( p)
      ( q)
      ( ε)
      ( swap-right-diff-leq-ℚ p ε q (leq-transpose-right-add-ℚ p q ε K))
      ( swap-right-diff-leq-ℚ q ε p (leq-transpose-right-add-ℚ q p ε H))

  neighborhood-leq-leq-dist-ℚ :
    (ε : ℚ⁺) (p q : ) 
    leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) 
    neighborhood-leq-ℚ ε p q
  neighborhood-leq-leq-dist-ℚ ε⁺@(ε , _) p q |p-q|≤ε =
    ( leq-transpose-left-diff-ℚ
      ( q)
      ( ε)
      ( p)
      ( swap-right-diff-leq-ℚ
        ( q)
        ( p)
        ( ε)
        ( transitive-leq-ℚ
          ( q -ℚ p)
          ( rational-dist-ℚ p q)
          ( ε)
          ( |p-q|≤ε)
          ( leq-reversed-diff-dist-ℚ p q)))) ,
    ( leq-transpose-left-diff-ℚ
      ( p)
      ( ε)
      ( q)
      ( swap-right-diff-leq-ℚ
        ( p)
        ( q)
        ( ε)
        ( transitive-leq-ℚ
          ( p -ℚ q)
          ( rational-dist-ℚ p q)
          ( ε)
          ( |p-q|≤ε)
          ( leq-diff-dist-ℚ p q))))

leq-dist-iff-neighborhood-leq-ℚ :
  (ε : ℚ⁺) (p q : ) 
  leq-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) 
  neighborhood-leq-ℚ ε p q
pr1 (leq-dist-iff-neighborhood-leq-ℚ ε p q) = neighborhood-leq-leq-dist-ℚ ε p q
pr2 (leq-dist-iff-neighborhood-leq-ℚ ε p q) = leq-dist-neighborhood-leq-ℚ ε p q

Relationship to the metric space of rational numbers with open neighborhoods

abstract
  le-dist-neighborhood-le-ℚ :
    (ε : ℚ⁺) (p q : ) 
    neighborhood-le-ℚ ε p q 
    le-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε)
  le-dist-neighborhood-le-ℚ ε⁺@(ε , _) p q (H , K) =
    le-dist-le-diff-ℚ
      ( p)
      ( q)
      ( ε)
      ( swap-right-diff-le-ℚ p ε q (le-transpose-right-add-ℚ p q ε K))
      ( swap-right-diff-le-ℚ q ε p (le-transpose-right-add-ℚ q p ε H))

  neighborhood-le-le-dist-ℚ :
    (ε : ℚ⁺) (p q : ) 
    le-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) 
    neighborhood-le-ℚ ε p q
  neighborhood-le-le-dist-ℚ ε⁺@(ε , _) p q |p-q|<ε =
    ( le-transpose-left-diff-ℚ
      ( q)
      ( ε)
      ( p)
      ( swap-right-diff-le-ℚ
        ( q)
        ( p)
        ( ε)
        ( concatenate-leq-le-ℚ
          ( q -ℚ p)
          ( rational-dist-ℚ p q)
          ( ε)
          ( leq-reversed-diff-dist-ℚ p q)
          ( |p-q|<ε)))) ,
    ( le-transpose-left-diff-ℚ
      ( p)
      ( ε)
      ( q)
      ( swap-right-diff-le-ℚ
        ( p)
        ( q)
        ( ε)
        ( concatenate-leq-le-ℚ
          ( p -ℚ q)
          ( rational-dist-ℚ p q)
          ( ε)
          ( leq-diff-dist-ℚ p q)
          ( |p-q|<ε))))

le-dist-iff-neighborhood-le-ℚ :
  (ε : ℚ⁺) (p q : ) 
  le-ℚ (rational-dist-ℚ p q) (rational-ℚ⁺ ε) 
  neighborhood-le-ℚ ε p q
pr1 (le-dist-iff-neighborhood-le-ℚ ε p q) = neighborhood-le-le-dist-ℚ ε p q
pr2 (le-dist-iff-neighborhood-le-ℚ ε p q) = le-dist-neighborhood-le-ℚ ε p q

The distance between two rational numbers is the difference of their maximum and minimum

abstract
  eq-dist-diff-leq-ℚ : (p q : )  leq-ℚ p q  rational-dist-ℚ p q  q -ℚ p
  eq-dist-diff-leq-ℚ p q p≤q =
    equational-reasoning
      rational-dist-ℚ p q
       rational-dist-ℚ q p by ap rational-ℚ⁰⁺ (commutative-dist-ℚ p q)
       q -ℚ p
        by
          rational-abs-zero-leq-ℚ
            ( q -ℚ p)
            ( backward-implication (iff-translate-diff-leq-zero-ℚ p q) p≤q)

  eq-dist-diff-max-min-ℚ :
    (p q : )  rational-dist-ℚ p q  max-ℚ p q -ℚ min-ℚ p q
  eq-dist-diff-max-min-ℚ p q =
    rec-coproduct
      ( λ p≤q 
        equational-reasoning
          rational-dist-ℚ p q
           q -ℚ p by eq-dist-diff-leq-ℚ p q p≤q
           max-ℚ p q -ℚ min-ℚ p q
            by
              inv
                ( ap-diff-ℚ
                  ( left-leq-right-max-ℚ p q p≤q)
                  ( left-leq-right-min-ℚ p q p≤q)))
      ( λ q≤p 
        equational-reasoning
          rational-dist-ℚ p q
           rational-dist-ℚ q p by ap rational-ℚ⁰⁺ (commutative-dist-ℚ p q)
           p -ℚ q by eq-dist-diff-leq-ℚ q p q≤p
           max-ℚ p q -ℚ min-ℚ p q
            by
              inv
                ( ap-diff-ℚ
                  ( right-leq-left-max-ℚ p q q≤p)
                  ( right-leq-left-min-ℚ p q q≤p)))
      ( linear-leq-ℚ p q)

Recent changes