Andrew Sneap, April 2021 - January 2022 In this file, I prove that the Reals are arithmetically located. \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan renaming (_+_ to _∔_) open import Notation.Order open import UF.PropTrunc open import UF.FunExt open import UF.Powerset open import UF.Subsingletons open import Rationals.Type open import Rationals.Multiplication open import Rationals.Negation open import Rationals.Order open import Rationals.Positive hiding (_*_) module DedekindReals.Properties (fe : Fun-Ext) (pe : Prop-Ext) (pt : propositional-truncations-exist) where open import DedekindReals.Type fe pe pt open import Rationals.Limits fe pe pt open PropositionalTruncation pt trans→disjoint : (L R : 𝓟 ℚ) → disjoint L R → (q : ℚ) → ¬ (q ∈ L × q ∈ R) trans→disjoint L R d q (q∈L , q∈R) = ℚ<-irrefl q γ where γ : q < q γ = d q q (q∈L , q∈R) disjoint→trans : (L R : 𝓟 ℚ) → located L R → ((q : ℚ) → ¬ (q ∈ L × q ∈ R)) → disjoint L R disjoint→trans L R loc dis p q (p∈L , q∈R) = cases₃ γ₁ γ₂ γ₃ I where I : (p < q) ∔ (p = q) ∔ (q < p) I = ℚ-trichotomous p q γ₁ : p < q → p < q γ₁ = id γ₂ : p = q → p < q γ₂ e = 𝟘-elim (dis p (p∈L , p∈R)) where p∈R : p ∈ R p∈R = transport (_∈ R) (e ⁻¹) q∈R γ₃ : q < p → p < q γ₃ l = 𝟘-elim (∥∥-rec 𝟘-is-prop γ II) where II : (q ∈ L) ∨ (p ∈ R) II = loc q p l γ : ¬ ((q ∈ L) ∔ (p ∈ R)) γ (inl q∈L) = dis q (q∈L , q∈R) γ (inr p∈R) = dis p (p∈L , p∈R) ℝ-arithmetically-located : (x : ℝ) → (ε : ℚ₊) → ∃ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (v - u < ε) ℝ-arithmetically-located x ε₊@(ε , 0<ε) = ∥∥-rec ∃-is-prop γ I where I : ∥ (Σ p ꞉ ℚ , p < x) × (Σ q ꞉ ℚ , x < q) ∥ I = binary-choice (inhabited-from-real-L x) (inhabited-from-real-R x) γ : (Σ p ꞉ ℚ , p < x) × (Σ q ꞉ ℚ , x < q) → ∃ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (v - u < ε) γ ((p , p<x) , (q , x<q)) = γ₁ n p q p<x x<q II l₂ where p<q : p < q p<q = disjoint-from-real x p q (p<x , x<q) l₁ : 0ℚ < q - p l₁ = ℚ<-difference-positive p q p<q II : _ II = trisect p q p<q III : Σ n ꞉ ℕ , (⟨2/3⟩^ n) * (q - p) < ε₊ III = ⟨2/3⟩^n<ε-consequence (ε , 0<ε) (q - p , l₁) n = pr₁ III l₂ = pr₂ III γ₁ : (n : ℕ) → (p q : ℚ) → p < x → x < q → Σ (u , v) ꞉ ℚ × ℚ , (p < u) × (u < v) × (v < q) × (q - u = 2/3 * (q - p)) × (v - p = 2/3 * (q - p)) → (⟨2/3⟩^ n) * (q - p) < ε → ∃ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (v - u < ε) γ₁ 0 p q p<x x<q ((u , v) , p<u , u<v , v<q , e₁ , e₂) l = ∣ (p , q) , (p<x , x<q) , (transport (_< ε) e₃ l) ∣ where e₃ : 1ℚ * (q - p) = q - p e₃ = ℚ-mult-left-id (q - p) γ₁ (succ n) p q p<x x<q ((u , v) , p<u , u<v , v<q , e₁ , e₂) l = ∨-elim ∃-is-prop γ₂ γ₃ IV where IV : (u < x) ∨ (x < v) IV = ℝ-locatedness x u v u<v γ₂ : (u < x) → ∃ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (v - u < ε) γ₂ u<x = γ₁ n u q u<x x<q V (transport (_< ε) α l) where u<q : u < q u<q = disjoint-from-real x u q (u<x , x<q) V : _ V = trisect u q u<q α : (⟨2/3⟩^ succ n) * (q - p) = (⟨2/3⟩^ n) * (q - u) α = (⟨2/3⟩^ succ n) * (q - p) =⟨ ap (_* (q - p)) (⟨2/3⟩-to-mult n) ⟩ (⟨2/3⟩^ n) * 2/3 * (q - p) =⟨ ℚ*-assoc (⟨2/3⟩^ n) 2/3 (q - p) ⟩ (⟨2/3⟩^ n) * (2/3 * (q - p)) =⟨ ap ((⟨2/3⟩^ n) *_) (e₁ ⁻¹) ⟩ (⟨2/3⟩^ n) * (q - u) ∎ γ₃ : (x < v) → ∃ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (v - u < ε) γ₃ x<v = γ₁ n p v p<x x<v V (transport (_< ε) α l) where p<v : p < v p<v = disjoint-from-real x p v (p<x , x<v) V : _ V = trisect p v p<v α : (⟨2/3⟩^ succ n) * (q - p) = (⟨2/3⟩^ n) * (v - p) α = (⟨2/3⟩^ succ n) * (q - p) =⟨ ap (_* (q - p)) (⟨2/3⟩-to-mult n) ⟩ (⟨2/3⟩^ n) * 2/3 * (q - p) =⟨ ℚ*-assoc (⟨2/3⟩^ n) 2/3 (q - p) ⟩ (⟨2/3⟩^ n) * (2/3 * (q - p)) =⟨ ap ((⟨2/3⟩^ n) *_) (e₂ ⁻¹) ⟩ (⟨2/3⟩^ n) * (v - p) ∎ ℝ-arithmetically-located' : (x : ℝ) → ((ε , _) : ℚ₊) → ∃ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (0ℚ < (v - u) < ε) ℝ-arithmetically-located' x (ε , 0<ε) = ∥∥-functor γ₂ γ₁ where γ₁ : ∃ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (v - u < ε) γ₁ = ℝ-arithmetically-located x (ε , 0<ε) γ₂ : Σ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (v - u < ε) → Σ (u , v) ꞉ ℚ × ℚ , (u < x < v) × (0ℚ < (v - u) < ε) γ₂ ((u , v) , u<x<v , l) = (u , v) , u<x<v , l' , l where u<v : u < v u<v = disjoint-from-real x u v u<x<v l' : 0ℚ < v - u l' = ℚ<-difference-positive u v u<v \end{code}