Andrew Sneap, March 2021 Updated March 2022 In this file I define order of Dedekind Reals, and prove some key properties. \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan renaming (_+_ to _∔_) open import Notation.CanonicalMap open import Notation.Order open import Rationals.Order open import UF.FunExt open import UF.PropTrunc open import UF.Powerset open import UF.Subsingletons open import UF.Subsingletons-FunExt open import Rationals.Type module DedekindReals.Order (fe : Fun-Ext) (pe : Prop-Ext) (pt : propositional-truncations-exist) where open import DedekindReals.Type fe pe pt open PropositionalTruncation pt _<ℝ_ : ℝ → ℝ → 𝓤₀ ̇ x <ℝ y = ∃ q ꞉ ℚ , (x < q) × (q < y) instance Strict-Order-ℝ-ℝ : Strict-Order ℝ ℝ _<_ {{Strict-Order-ℝ-ℝ}} = _<ℝ_ Strict-Order-Chain-ℝ-ℝ-ℝ : Strict-Order-Chain ℝ ℝ ℝ _<_ _<_ _<_<_ {{Strict-Order-Chain-ℝ-ℝ-ℝ}} p q r = (p < q) × (q < r) <-is-prop : (x y : ℝ) → is-prop (x < y) <-is-prop x y = ∃-is-prop ℝ<-trans : (x y z : ℝ) → x < y → y < z → x < z ℝ<-trans x y z x<y y<z = ∥∥-functor I (binary-choice x<y y<z) where I : (Σ k ꞉ ℚ , x < k < y) × (Σ l ꞉ ℚ , y < l < z) → Σ m ꞉ ℚ , x < m < z I ((k , (x<k , k<y)) , l , (y<l , l<z)) = k , (x<k , k<z) where k<l : k < l k<l = disjoint-from-real y k l (k<y , y<l) k<z : k < z k<z = rounded-left-c (lower-cut-of z) (rounded-from-real-L z) k l k<l l<z _≤ℝ_ : ℝ → ℝ → 𝓤₀ ̇ x ≤ℝ y = (q : ℚ) → q < x → q < y instance Order-ℝ-ℝ : Order ℝ ℝ _≤_ {{Order-ℝ-ℝ}} = _≤ℝ_ ≤-is-prop : (x y : ℝ) → is-prop (x ≤ y) ≤-is-prop ((Lx , Rx) , isCutx) ((Ly , Ry) , isCuty) = Π₂-is-prop fe (λ q _ → ∈-is-prop Ly q) ℝ≤-trans : (x y z : ℝ) → x ≤ y → y ≤ z → x ≤ z ℝ≤-trans ((Lx , Rx) , _) ((Ly , Ry) , _) ((Lz , Rz) , _) f g = λ q qLx → g q (f q qLx) ℝ-archimedean : (x y : ℝ) → x < y → ∃ q ꞉ ℚ , (x < q) × (q < y) ℝ-archimedean x y l = l weak-linearity : (x y z : ℝ) → x < y → (x < z) ∨ (z < y) weak-linearity x y z l = ∥∥-rec ∨-is-prop I l where I : Σ q ꞉ ℚ , q > x × q < y → (x < z) ∨ (z < y) I (q , qRx , qLy) = ∥∥-rec ∨-is-prop II (binary-choice exists-r exists-s) where exists-r : ∃ r ꞉ ℚ , r < q × r > x exists-r = rounded-right-b (upper-cut-of x) (rounded-from-real-R x) q qRx exists-s : ∃ s ꞉ ℚ , q < s < y exists-s = rounded-left-b (lower-cut-of y) (rounded-from-real-L y) q qLy II : (Σ r ꞉ ℚ , r < q × r > x) × (Σ s ꞉ ℚ , q < s < y) → (x < z) ∨ (z < y) II ((r , r<q , rRx) , s , q<s , sLy) = ∥∥-rec ∨-is-prop IV III where III : (r < z) ∨ (z < s) III = ℝ-locatedness z r s (ℚ<-trans r q s r<q q<s) IV : (r < z) ∔ (z < s) → (x < z) ∨ (z < y) IV (inl rLz) = ∣ inl ∣ r , rRx , rLz ∣ ∣ IV (inr sRz) = ∣ inr ∣ s , sRz , sLy ∣ ∣ weak-linearity' : (x y z : ℝ) → x < y → (x < z) ∨ (z < y) weak-linearity' x y z l = do (q , x<q , q<y) ← l (r , r<q , x<r) ← rounded-right-b (upper-cut-of x) (rounded-from-real-R x) q x<q (s , q<s , s<y) ← rounded-left-b (lower-cut-of y) (rounded-from-real-L y) q q<y t ← ℝ-locatedness z r s (ℚ<-trans r q s r<q q<s) Cases t (λ r<z → ∣ inl ∣ r , x<r , r<z ∣ ∣) (λ z<s → ∣ inr ∣ s , z<s , s<y ∣ ∣) _♯_ : (x y : ℝ) → 𝓤₀ ̇ x ♯ y = (x < y) ∨ (y < x) apartness-gives-inequality : (x y : ℝ) → x ♯ y → ¬ (x = y) apartness-gives-inequality x y apart e = ∥∥-rec 𝟘-is-prop I apart where I : ¬ ((x < y) ∔ (y < x)) I (inl l) = ∥∥-rec 𝟘-is-prop III II where II : x < x II = transport (x <_) (e ⁻¹) l III : ¬ (Σ q ꞉ ℚ , (x < q) × (q < x)) III (q , x<q , q<x) = ℚ<-not-itself-from-ℝ q x (q<x , x<q) I (inr r) = ∥∥-rec 𝟘-is-prop III II where II : y < y II = transport (y <_) e r III : ¬ (Σ p ꞉ ℚ , (p > y) × (p < y)) III (p , y<p , p<y) = ℚ<-not-itself-from-ℝ p y (p<y , y<p) ℝ<-≤-trans : (x y z : ℝ) → x < y → y ≤ z → x < z ℝ<-≤-trans x y z x<y y≤z = ∥∥-functor I x<y where I : Σ q ꞉ ℚ , q > x × q < y → Σ q' ꞉ ℚ , q' > x × q' < z I (q , qRx , qLy) = q , qRx , y≤z q qLy ℝ-less-than-or-equal-not-greater : (x y : ℝ) → x ≤ y → ¬ (y < x) ℝ-less-than-or-equal-not-greater x y x≤y y<x = ∥∥-rec 𝟘-is-prop I y<x where I : ¬ (Σ q ꞉ ℚ , y < q < x) I (q , y<q , q<x) = ℚ<-not-itself-from-ℝ q y (x≤y q q<x , y<q) ℝ-less-than-not-greater-or-equal : (x y : ℝ) → x < y → ¬ (y ≤ x) ℝ-less-than-not-greater-or-equal x y l₁ l₂ = ℝ-less-than-or-equal-not-greater y x l₂ l₁ ℝ-not-less-is-greater-or-equal : (x y : ℝ) → ¬ (x < y) → y ≤ x ℝ-not-less-is-greater-or-equal x y nl p pLy = ∥∥-rec (∈-is-prop (lower-cut-of x) p) I (rounded-left-b (lower-cut-of y) (rounded-from-real-L y) p pLy) where I : Σ q ꞉ ℚ , p < q < y → p < x I (q , l , q<y) = ∥∥-rec (∈-is-prop (lower-cut-of x) p) II (ℝ-locatedness x p q l) where II : p < x ∔ q > x → p < x II (inl p<x) = p<x II (inr x<q) = 𝟘-elim (nl ∣ q , (x<q , q<y) ∣) ℝ≤-<-trans : (x y z : ℝ) → x ≤ y → y < z → x < z ℝ≤-<-trans x y z x≤y y<z = ∥∥-functor I y<z where I : Σ q ꞉ ℚ , q > y × q < z → Σ q' ꞉ ℚ , q' > x × q' < z I (q , qRy , qLz) = q , ∥∥-rec (∈-is-prop (upper-cut-of x) q) III II , qLz where II : ∃ k ꞉ ℚ , k < q × k > y II = rounded-right-b (upper-cut-of y) (rounded-from-real-R y) q qRy III : Σ k ꞉ ℚ , k < q × k > y → q > x III (k , k<q , kRy) = ∥∥-rec (∈-is-prop (upper-cut-of x) q) IV (ℝ-locatedness x k q k<q) where IV : k < x ∔ q > x → q > x IV (inl kLx) = 𝟘-elim (ℚ<-irrefl k (disjoint-from-real y k k (x≤y k kLx , kRy))) IV (inr qRx) = qRx <ℝ-irreflexive : (x : ℝ) → x ≮ x <ℝ-irreflexive x l = ∥∥-rec 𝟘-is-prop I l where I : ¬ (Σ k ꞉ ℚ , x < k < x) I (k , x<k , k<x) = ℚ<-not-itself-from-ℝ k x (k<x , x<k) ℝ-zero-less-than-one : 0ℝ < 1ℝ ℝ-zero-less-than-one = ∣ 1/2 , 0<1/2 , 1/2<1 ∣ ℝ-zero-apart-from-one : 0ℝ ♯ 1ℝ ℝ-zero-apart-from-one = ∣ inl ℝ-zero-less-than-one ∣ embedding-preserves-order : (p q : ℚ) → p < q → ι p < ι q embedding-preserves-order p q l = I (use-rationals-density) where use-rationals-density : Σ k ꞉ ℚ , p < k < q use-rationals-density = ℚ-dense p q l I : (Σ k ꞉ ℚ , p < k < q) → ∃ k ꞉ ℚ , p < k < q I (k , p<k , k<q) = ∣ k , p<k , k<q ∣ \end{code} Added by Martin Escardo 24th August 2023, adapted from Various.Dedekind. \begin{code} ≤-ℝ-ℝ-antisym : (x y : ℝ) → x ≤ y → y ≤ x → x = y ≤-ℝ-ℝ-antisym = ℝ-equality-from-left-cut' ♯-is-tight : (x y : ℝ) → ¬ (x ♯ y) → x = y ♯-is-tight x y ν = ≤-ℝ-ℝ-antisym x y III IV where I : x ≮ y I ℓ = ν ∣ inl ℓ ∣ II : y ≮ x II ℓ = ν ∣ inr ℓ ∣ III : x ≤ y III = ℝ-not-less-is-greater-or-equal y x II IV : y ≤ x IV = ℝ-not-less-is-greater-or-equal x y I ℝ-is-¬¬-separated : (x y : ℝ) → ¬¬ (x = y) → x = y ℝ-is-¬¬-separated x y ϕ = ♯-is-tight x y (c ϕ) where c : ¬¬ (x = y) → ¬ (x ♯ y) c = contrapositive (apartness-gives-inequality x y) \end{code}