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}