Negation of lower and upper Dedekind real numbers

Content created by Louis Wasserman.

Created on 2025-02-16.
Last modified on 2025-02-16.

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

module real-numbers.negation-lower-upper-dedekind-real-numbers where
Imports
open import elementary-number-theory.rational-numbers
open import elementary-number-theory.strict-inequality-rational-numbers

open import foundation.cartesian-product-types
open import foundation.conjunction
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.existential-quantification
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.powersets
open import foundation.retractions
open import foundation.sections
open import foundation.subtypes
open import foundation.transport-along-identifications
open import foundation.universe-levels

open import logic.functoriality-existential-quantification

open import real-numbers.inequality-lower-dedekind-real-numbers
open import real-numbers.inequality-upper-dedekind-real-numbers
open import real-numbers.lower-dedekind-real-numbers
open import real-numbers.rational-lower-dedekind-real-numbers
open import real-numbers.rational-upper-dedekind-real-numbers
open import real-numbers.upper-dedekind-real-numbers

Idea

The negation of a lower Dedekind real number is an upper Dedekind real number whose cut contains negations of elements in the lower cut, and vice versa.

Definitions

The negation of a lower Dedekind real, as an upper Dedekind real

module _
  {l : Level} (x : lower-ℝ l)
  where

  cut-neg-lower-ℝ : subtype l 
  cut-neg-lower-ℝ p = cut-lower-ℝ x (neg-ℚ p)

  is-in-cut-neg-lower-ℝ :   UU l
  is-in-cut-neg-lower-ℝ = is-in-subtype cut-neg-lower-ℝ

  abstract
    is-inhabited-cut-neg-lower-ℝ : exists  cut-neg-lower-ℝ
    is-inhabited-cut-neg-lower-ℝ =
      map-exists
        ( is-in-cut-neg-lower-ℝ)
        ( neg-ℚ)
        ( λ p  tr (is-in-cut-lower-ℝ x) (inv (neg-neg-ℚ p)))
        ( is-inhabited-cut-lower-ℝ x)

    is-rounded-cut-neg-lower-ℝ :
      (q : ) 
      is-in-cut-neg-lower-ℝ q 
      exists   p  le-ℚ-Prop p q  cut-neg-lower-ℝ p)
    pr1 (is-rounded-cut-neg-lower-ℝ q) -q<x =
      map-exists
         p  le-ℚ p q × is-in-cut-neg-lower-ℝ p)
        ( neg-ℚ)
        ( λ p (-q<p , p<x) 
          tr (le-ℚ (neg-ℚ p)) (neg-neg-ℚ q) (neg-le-ℚ (neg-ℚ q) p -q<p) ,
          tr (is-in-cut-lower-ℝ x) (inv (neg-neg-ℚ p)) p<x)
        ( forward-implication (is-rounded-cut-lower-ℝ x (neg-ℚ q)) -q<x)
    pr2 (is-rounded-cut-neg-lower-ℝ q) =
      elim-exists
        ( cut-neg-lower-ℝ q)
        ( λ p (p<q , -q<x) 
          backward-implication
            ( is-rounded-cut-lower-ℝ x (neg-ℚ q))
            ( intro-exists (neg-ℚ p) (neg-le-ℚ p q p<q , -q<x)))

  neg-lower-ℝ : upper-ℝ l
  pr1 neg-lower-ℝ = cut-neg-lower-ℝ
  pr1 (pr2 neg-lower-ℝ) = is-inhabited-cut-neg-lower-ℝ
  pr2 (pr2 neg-lower-ℝ) = is-rounded-cut-neg-lower-ℝ

The negation of an upper Dedekind real, as a lower Dedekind real

module _
  {l : Level} (x : upper-ℝ l)
  where

  cut-neg-upper-ℝ : subtype l 
  cut-neg-upper-ℝ q = cut-upper-ℝ x (neg-ℚ q)

  is-in-cut-neg-upper-ℝ :   UU l
  is-in-cut-neg-upper-ℝ = is-in-subtype cut-neg-upper-ℝ

  abstract
    is-inhabited-cut-neg-upper-ℝ : exists  cut-neg-upper-ℝ
    is-inhabited-cut-neg-upper-ℝ =
      map-exists
        ( is-in-cut-neg-upper-ℝ)
        ( neg-ℚ)
        ( λ p  tr (is-in-cut-upper-ℝ x) (inv (neg-neg-ℚ p)))
        ( is-inhabited-cut-upper-ℝ x)

    is-rounded-cut-neg-upper-ℝ :
      (q : ) 
      is-in-cut-neg-upper-ℝ q 
      exists   r  le-ℚ-Prop q r  cut-neg-upper-ℝ r)
    pr1 (is-rounded-cut-neg-upper-ℝ q) x<-q =
      map-exists
        ( λ r  le-ℚ q r × is-in-cut-neg-upper-ℝ r)
        ( neg-ℚ)
        ( λ p (p<-q , x<p) 
          tr
            ( λ x  le-ℚ x (neg-ℚ p))
            ( neg-neg-ℚ q)
            ( neg-le-ℚ p (neg-ℚ q) p<-q) ,
          tr (is-in-cut-upper-ℝ x) (inv (neg-neg-ℚ p)) x<p)
        ( forward-implication (is-rounded-cut-upper-ℝ x (neg-ℚ q)) x<-q)
    pr2 (is-rounded-cut-neg-upper-ℝ q) =
      elim-exists
        ( cut-neg-upper-ℝ q)
        ( λ r (q<r , x<-r) 
          backward-implication
            ( is-rounded-cut-upper-ℝ x (neg-ℚ q))
            ( intro-exists (neg-ℚ r) (neg-le-ℚ q r q<r , x<-r)))

  neg-upper-ℝ : lower-ℝ l
  pr1 neg-upper-ℝ = cut-neg-upper-ℝ
  pr1 (pr2 neg-upper-ℝ) = is-inhabited-cut-neg-upper-ℝ
  pr2 (pr2 neg-upper-ℝ) = is-rounded-cut-neg-upper-ℝ

The negation of lower and upper Dedekind reals are mutual inverses

abstract
  is-retraction-neg-upper-ℝ :
    (l : Level)  is-retraction (neg-lower-ℝ {l}) (neg-upper-ℝ {l})
  is-retraction-neg-upper-ℝ l x =
    eq-eq-cut-lower-ℝ
      ( neg-upper-ℝ (neg-lower-ℝ x))
      ( x)
      ( antisymmetric-sim-subtype
        ( cut-neg-upper-ℝ (neg-lower-ℝ x))
        ( cut-lower-ℝ x)
        (  p  tr (is-in-cut-lower-ℝ x) (neg-neg-ℚ p)) ,
           p  tr (is-in-cut-lower-ℝ x) (inv (neg-neg-ℚ p)))))

  is-section-neg-upper-ℝ :
    (l : Level)  is-section (neg-lower-ℝ {l}) (neg-upper-ℝ {l})
  is-section-neg-upper-ℝ l x =
    eq-eq-cut-upper-ℝ
      ( neg-lower-ℝ (neg-upper-ℝ x))
      ( x)
      ( antisymmetric-sim-subtype
        ( cut-neg-lower-ℝ (neg-upper-ℝ x))
        ( cut-upper-ℝ x)
        (  p  tr (is-in-cut-upper-ℝ x) (neg-neg-ℚ p)) ,
           p  tr (is-in-cut-upper-ℝ x) (inv (neg-neg-ℚ p)))))

  is-equiv-neg-lower-ℝ : (l : Level)  is-equiv (neg-lower-ℝ {l})
  pr1 (pr1 (is-equiv-neg-lower-ℝ l)) = neg-upper-ℝ
  pr1 (pr2 (is-equiv-neg-lower-ℝ l)) = neg-upper-ℝ
  pr2 (pr1 (is-equiv-neg-lower-ℝ l)) = is-section-neg-upper-ℝ l
  pr2 (pr2 (is-equiv-neg-lower-ℝ l)) = is-retraction-neg-upper-ℝ l

  is-equiv-neg-upper-ℝ : (l : Level)  is-equiv (neg-upper-ℝ {l})
  pr1 (pr1 (is-equiv-neg-upper-ℝ l)) = neg-lower-ℝ
  pr1 (pr2 (is-equiv-neg-upper-ℝ l)) = neg-lower-ℝ
  pr2 (pr1 (is-equiv-neg-upper-ℝ l)) = is-retraction-neg-upper-ℝ l
  pr2 (pr2 (is-equiv-neg-upper-ℝ l)) = is-section-neg-upper-ℝ l

The negation of a rational projected to a lower real is the projection of its negation as an upper real

neg-lower-real-ℚ :
  (q : )  neg-lower-ℝ (lower-real-ℚ q)  upper-real-ℚ (neg-ℚ q)
neg-lower-real-ℚ q =
  eq-eq-cut-upper-ℝ
    ( neg-lower-ℝ (lower-real-ℚ q))
    ( upper-real-ℚ (neg-ℚ q))
    ( antisymmetric-sim-subtype
      ( cut-neg-lower-ℝ (lower-real-ℚ q))
      ( cut-upper-real-ℚ (neg-ℚ q))
      (  p -p<q 
          tr (le-ℚ (neg-ℚ q)) (neg-neg-ℚ p) (neg-le-ℚ (neg-ℚ p) q -p<q)) ,
         p -q<p 
          tr (le-ℚ (neg-ℚ p)) (neg-neg-ℚ q) (neg-le-ℚ (neg-ℚ q) p -q<p))))

The negation of a rational projected to an upper real is the projection of its negation as a lower real

neg-upper-real-ℚ :
  (q : )  neg-upper-ℝ (upper-real-ℚ q)  lower-real-ℚ (neg-ℚ q)
neg-upper-real-ℚ q =
  eq-eq-cut-lower-ℝ
    ( neg-upper-ℝ (upper-real-ℚ q))
    ( lower-real-ℚ (neg-ℚ q))
    ( antisymmetric-sim-subtype
      ( cut-neg-upper-ℝ (upper-real-ℚ q))
      ( cut-lower-real-ℚ (neg-ℚ q))
      (  p q<-p 
          tr
            ( λ r  le-ℚ r (neg-ℚ q))
            ( neg-neg-ℚ p)
            ( neg-le-ℚ q (neg-ℚ p) q<-p)) ,
         p p<-q 
          tr
            ( λ r  le-ℚ r (neg-ℚ p))
            ( neg-neg-ℚ q)
            ( neg-le-ℚ p (neg-ℚ q) p<-q))))

Recent changes