Martin Escardo, 18 January 2021.
\begin{code}
{-# OPTIONS --without-K --exact-split --safe --auto-inline --experimental-lossy-unification #-}
open import UF.Univalence
module Ordinals.Arithmetic-Properties
(ua : Univalence)
where
open import UF.Base
open import UF.Embeddings
open import UF.Equiv
open import UF.EquivalenceExamples
open import UF.ExcludedMiddle
open import UF.FunExt
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import UF.UA-FunExt
private
fe : FunExt
fe = Univalence-gives-FunExt ua
fe' : Fun-Ext
fe' {π€} {π₯} = fe π€ π₯
pe : PropExt
pe = Univalence-gives-PropExt ua
open import MLTT.Spartan
open import MLTT.Plus-Properties
open import Notation.CanonicalMap
open import Ordinals.Arithmetic fe
open import Ordinals.Notions
open import Ordinals.OrdinalOfOrdinals ua
open import Ordinals.Type
open import Ordinals.Underlying
πβ-left-neutral : (Ξ± : Ordinal π€) β πβ +β Ξ± οΌ Ξ±
πβ-left-neutral {π€} Ξ± = eqtoidβ (πβ +β Ξ±) Ξ± h
where
f : π + β¨ Ξ± β© β β¨ Ξ± β©
f = β π-lneutral β
f-preserves-order : (x y : π + β¨ Ξ± β©) β x βΊβ¨ πβ +β Ξ± β© y β f x βΊβ¨ Ξ± β© f y
f-preserves-order (inr x) (inr y) l = l
f-reflects-order : (x y : π + β¨ Ξ± β©) β f x βΊβ¨ Ξ± β© f y β x βΊβ¨ πβ +β Ξ± β© y
f-reflects-order (inr x) (inr y) l = l
h : (πβ +β Ξ±) ββ Ξ±
h = f , order-preserving-reflecting-equivs-are-order-equivs (πβ +β Ξ±) Ξ± f
(ββ-is-equiv π-lneutral) f-preserves-order f-reflects-order
πβ-right-neutral : (Ξ± : Ordinal π€) β Ξ± +β πβ οΌ Ξ±
πβ-right-neutral Ξ± = eqtoidβ (Ξ± +β πβ) Ξ± h
where
f : β¨ Ξ± β© + π β β¨ Ξ± β©
f = β π-rneutral' β
f-preserves-order : is-order-preserving (Ξ± +β πβ) Ξ± f
f-preserves-order (inl x) (inl y) l = l
f-reflects-order : is-order-reflecting (Ξ± +β πβ) Ξ± f
f-reflects-order (inl x) (inl y) l = l
h : (Ξ± +β πβ) ββ Ξ±
h = f , order-preserving-reflecting-equivs-are-order-equivs (Ξ± +β πβ) Ξ± f
(ββ-is-equiv π-rneutral') f-preserves-order f-reflects-order
+β-assoc : (Ξ± Ξ² Ξ³ : Ordinal π€) β (Ξ± +β Ξ²) +β Ξ³ οΌ Ξ± +β (Ξ² +β Ξ³)
+β-assoc Ξ± Ξ² Ξ³ = eqtoidβ ((Ξ± +β Ξ²) +β Ξ³) (Ξ± +β (Ξ² +β Ξ³)) h
where
f : β¨ (Ξ± +β Ξ²) +β Ξ³ β© β β¨ Ξ± +β (Ξ² +β Ξ³) β©
f = β +assoc β
f-preserves-order : is-order-preserving ((Ξ± +β Ξ²) +β Ξ³) (Ξ± +β (Ξ² +β Ξ³)) f
f-preserves-order (inl (inl x)) (inl (inl y)) l = l
f-preserves-order (inl (inl x)) (inl (inr y)) l = l
f-preserves-order (inl (inr x)) (inl (inr y)) l = l
f-preserves-order (inl (inl x)) (inr y) l = l
f-preserves-order (inl (inr x)) (inr y) l = l
f-preserves-order (inr x) (inr y) l = l
f-reflects-order : is-order-reflecting ((Ξ± +β Ξ²) +β Ξ³) (Ξ± +β (Ξ² +β Ξ³)) f
f-reflects-order (inl (inl x)) (inl (inl y)) l = l
f-reflects-order (inl (inl x)) (inl (inr y)) l = l
f-reflects-order (inl (inr x)) (inl (inr y)) l = l
f-reflects-order (inl (inl x)) (inr y) l = l
f-reflects-order (inl (inr x)) (inr y) l = l
f-reflects-order (inr x) (inl (inl y)) l = l
f-reflects-order (inr x) (inl (inr y)) l = l
f-reflects-order (inr x) (inr y) l = l
h : ((Ξ± +β Ξ²) +β Ξ³) ββ (Ξ± +β (Ξ² +β Ξ³))
h = f , order-preserving-reflecting-equivs-are-order-equivs
((Ξ± +β Ξ²) +β Ξ³) (Ξ± +β (Ξ² +β Ξ³))
f (ββ-is-equiv +assoc) f-preserves-order f-reflects-order
+β-β-left : {Ξ± Ξ² : Ordinal π€} (a : β¨ Ξ± β©)
β (Ξ± β a) οΌ ((Ξ± +β Ξ²) β inl a)
+β-β-left {π€} {Ξ±} {Ξ²} a = h
where
Ξ³ = Ξ± β a
Ξ΄ = (Ξ± +β Ξ²) β inl a
f : β¨ Ξ³ β© β β¨ Ξ΄ β©
f (x , l) = inl x , l
g : β¨ Ξ΄ β© β β¨ Ξ³ β©
g (inl x , l) = x , l
Ξ· : g β f βΌ id
Ξ· u = refl
Ξ΅ : f β g βΌ id
Ξ΅ (inl x , l) = refl
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , Ξ· , Ξ΅)
f-is-order-preserving : is-order-preserving Ξ³ Ξ΄ f
f-is-order-preserving (x , _) (x' , _) l = l
g-is-order-preserving : is-order-preserving Ξ΄ Ξ³ g
g-is-order-preserving (inl x , _) (inl x' , _) l = l
h : Ξ³ οΌ Ξ΄
h = eqtoidβ Ξ³ Ξ΄ (f , f-is-order-preserving , f-is-equiv , g-is-order-preserving)
+β-β-right : {Ξ± Ξ² : Ordinal π€} (b : β¨ Ξ² β©)
β (Ξ± +β (Ξ² β b)) οΌ ((Ξ± +β Ξ²) β inr b)
+β-β-right {π€} {Ξ±} {Ξ²} b = h
where
Ξ³ = Ξ± +β (Ξ² β b)
Ξ΄ = (Ξ± +β Ξ²) β inr b
f : β¨ Ξ³ β© β β¨ Ξ΄ β©
f (inl a) = inl a , β
f (inr (y , l)) = inr y , l
g : β¨ Ξ΄ β© β β¨ Ξ³ β©
g (inl a , β) = inl a
g (inr y , l) = inr (y , l)
Ξ· : g β f βΌ id
Ξ· (inl a) = refl
Ξ· (inr (y , l)) = refl
Ξ΅ : f β g βΌ id
Ξ΅ (inl a , β) = refl
Ξ΅ (inr y , l) = refl
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , Ξ· , Ξ΅)
f-is-order-preserving : is-order-preserving Ξ³ Ξ΄ f
f-is-order-preserving (inl _) (inl _) l = l
f-is-order-preserving (inl _) (inr _) l = l
f-is-order-preserving (inr _) (inr _) l = l
g-is-order-preserving : is-order-preserving Ξ΄ Ξ³ g
g-is-order-preserving (inl _ , _) (inl _ , _) l = l
g-is-order-preserving (inl _ , _) (inr _ , _) l = l
g-is-order-preserving (inr _ , _) (inr _ , _) l = l
h : Ξ³ οΌ Ξ΄
h = eqtoidβ Ξ³ Ξ΄ (f , f-is-order-preserving , f-is-equiv , g-is-order-preserving)
\end{code}
Added 7 November 2022 by Tom de Jong.
A rather special case of the above is that adding π and then taking the initial
segment capped at inr β is the same thing as the original ordinal.
It is indeed a special case of the above because (π β β) οΌ πβ and πβ is right
neutral, but we give a direct proof instead.
\begin{code}
+β-πβ-β-right : (Ξ± : Ordinal π€) β (Ξ± +β πβ) β inr β οΌ Ξ±
+β-πβ-β-right Ξ± = eqtoidβ ((Ξ± +β πβ) β inr β) Ξ± h
where
f : β¨ (Ξ± +β πβ) β inr β β© β β¨ Ξ± β©
f (inl x , l) = x
g : β¨ Ξ± β© β β¨ (Ξ± +β πβ) β inr β β©
g x = (inl x , β)
f-order-preserving : is-order-preserving ((Ξ± +β πβ) β inr β) Ξ± f
f-order-preserving (inl x , _) (inl y , _) l = l
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , Ξ· , Ξ΅)
where
Ξ· : g β f βΌ id
Ξ· (inl _ , _) = refl
Ξ΅ : f β g βΌ id
Ξ΅ _ = refl
g-order-preserving : is-order-preserving Ξ± ((Ξ± +β πβ) β inr β) g
g-order-preserving x y l = l
h : ((Ξ± +β πβ) β inr β) ββ Ξ±
h = f , f-order-preserving , f-is-equiv , g-order-preserving
\end{code}
End of addition.
\begin{code}
+β-β²-left : {Ξ± Ξ² : Ordinal π€} (a : β¨ Ξ± β©)
β (Ξ± β a) β² (Ξ± +β Ξ²)
+β-β²-left {π€} {Ξ±} {Ξ²} a = inl a , +β-β-left a
+β-β²-right : {Ξ± Ξ² : Ordinal π€} (b : β¨ Ξ² β©)
β (Ξ± +β (Ξ² β b)) β² (Ξ± +β Ξ²)
+β-β²-right {π€} {Ξ±} {Ξ²} b = inr b , +β-β-right {π€} {Ξ±} {Ξ²} b
+β-increasing-on-right : {Ξ± Ξ² Ξ³ : Ordinal π€}
β Ξ² β² Ξ³
β (Ξ± +β Ξ²) β² (Ξ± +β Ξ³)
+β-increasing-on-right {π€} {Ξ±} {Ξ²} {Ξ³} (c , p) = inr c , q
where
q = (Ξ± +β Ξ²) οΌβ¨ ap (Ξ± +β_) p β©
(Ξ± +β (Ξ³ β c)) οΌβ¨ +β-β-right c β©
((Ξ± +β Ξ³) β inr c) β
+β-right-monotone : (Ξ± Ξ² Ξ³ : Ordinal π€)
β Ξ² βΌ Ξ³
β (Ξ± +β Ξ²) βΌ (Ξ± +β Ξ³)
+β-right-monotone Ξ± Ξ² Ξ³ m = to-βΌ Ο
where
l : (a : β¨ Ξ± β©) β ((Ξ± +β Ξ²) β inl a) β² (Ξ± +β Ξ³)
l a = o
where
n : (Ξ± β a) β² (Ξ± +β Ξ³)
n = +β-β²-left a
o : ((Ξ± +β Ξ²) β inl a) β² (Ξ± +β Ξ³)
o = transport (_β² (Ξ± +β Ξ³)) (+β-β-left a) n
r : (b : β¨ Ξ² β©) β ((Ξ± +β Ξ²) β inr b) β² (Ξ± +β Ξ³)
r b = s
where
o : (Ξ² β b) β² Ξ³
o = from-βΌ m b
p : (Ξ± +β (Ξ² β b)) β² (Ξ± +β Ξ³)
p = +β-increasing-on-right o
q : Ξ± +β (Ξ² β b) οΌ (Ξ± +β Ξ²) β inr b
q = +β-β-right b
s : ((Ξ± +β Ξ²) β inr b) β² (Ξ± +β Ξ³)
s = transport (_β² (Ξ± +β Ξ³)) q p
Ο : (x : β¨ Ξ± +β Ξ² β©) β ((Ξ± +β Ξ²) β x) β² (Ξ± +β Ξ³)
Ο = dep-cases l r
\end{code}
TODO. Find better names for the following lemmas.
\begin{code}
lemmaβ : {Ξ± Ξ² : Ordinal π€}
β Ξ± βΌ (Ξ± +β Ξ²)
lemmaβ {π€} {Ξ±} {Ξ²} = to-βΌ Ο
where
Ο : (a : β¨ Ξ± β©) β Ξ£ z κ β¨ Ξ± +β Ξ² β© , (Ξ± β a) οΌ ((Ξ± +β Ξ²) β z)
Ο a = inl a , (+β-β-left a)
lemmaβ : {Ξ± Ξ² : Ordinal π€}
(a : β¨ Ξ± β©)
β (Ξ± +β Ξ²) β (Ξ± β a)
lemmaβ {π€} {Ξ±} {Ξ²} a p = irrefl (OO π€) (Ξ± +β Ξ²) m
where
l : (Ξ± +β Ξ²) β² Ξ±
l = (a , p)
m : (Ξ± +β Ξ²) β² (Ξ± +β Ξ²)
m = lemmaβ (Ξ± +β Ξ²) l
lemmaβ : {Ξ± Ξ² : Ordinal π€} (a : β¨ Ξ± β©)
β Ξ± οΌ Ξ²
β Ξ£ b κ β¨ Ξ² β© , (Ξ± β a) οΌ (Ξ² β b)
lemmaβ a refl = a , refl
lemmaβ : {Ξ± Ξ² Ξ³ : Ordinal π€} (b : β¨ Ξ² β©) (z : β¨ Ξ± +β Ξ³ β©)
β ((Ξ± +β Ξ²) β inr b) οΌ ((Ξ± +β Ξ³) β z)
β Ξ£ c κ β¨ Ξ³ β© , z οΌ inr c
lemmaβ {π€} {Ξ±} {Ξ²} {Ξ³} b (inl a) p = π-elim (lemmaβ a q)
where
q : (Ξ± +β (Ξ² β b)) οΌ (Ξ± β a)
q = +β-β-right b β p β (+β-β-left a)β»ΒΉ
lemmaβ b (inr c) p = c , refl
+β-left-cancellable : (Ξ± Ξ² Ξ³ : Ordinal π€)
β (Ξ± +β Ξ²) οΌ (Ξ± +β Ξ³)
β Ξ² οΌ Ξ³
+β-left-cancellable {π€} Ξ± = g
where
P : Ordinal π€ β π€ βΊ Μ
P Ξ² = β Ξ³ β (Ξ± +β Ξ²) οΌ (Ξ± +β Ξ³) β Ξ² οΌ Ξ³
Ο : β Ξ²
β (β b β P (Ξ² β b))
β P Ξ²
Ο Ξ² f Ξ³ p = Extensionality (OO π€) Ξ² Ξ³ (to-βΌ u) (to-βΌ v)
where
u : (b : β¨ Ξ² β©) β (Ξ² β b) β² Ξ³
u b = c , t
where
z : β¨ Ξ± +β Ξ³ β©
z = prβ (lemmaβ (inr b) p)
r : ((Ξ± +β Ξ²) β inr b) οΌ ((Ξ± +β Ξ³) β z)
r = prβ (lemmaβ (inr b) p)
c : β¨ Ξ³ β©
c = prβ (lemmaβ b z r)
s : z οΌ inr c
s = prβ (lemmaβ b z r)
q = (Ξ± +β (Ξ² β b)) οΌβ¨ +β-β-right b β©
((Ξ± +β Ξ²) β inr b) οΌβ¨ r β©
((Ξ± +β Ξ³) β z) οΌβ¨ ap ((Ξ± +β Ξ³) β_) s β©
((Ξ± +β Ξ³) β inr c) οΌβ¨ (+β-β-right c)β»ΒΉ β©
(Ξ± +β (Ξ³ β c)) β
t : (Ξ² β b) οΌ (Ξ³ β c)
t = f b (Ξ³ β c) q
v : (c : β¨ Ξ³ β©) β (Ξ³ β c) β² Ξ²
v c = b , (t β»ΒΉ)
where
z : β¨ Ξ± +β Ξ² β©
z = prβ (lemmaβ (inr c) (p β»ΒΉ))
r : ((Ξ± +β Ξ³) β inr c) οΌ ((Ξ± +β Ξ²) β z)
r = prβ (lemmaβ (inr c) (p β»ΒΉ))
b : β¨ Ξ² β©
b = prβ (lemmaβ c z r)
s : z οΌ inr b
s = prβ (lemmaβ c z r)
q = (Ξ± +β (Ξ³ β c)) οΌβ¨ +β-β-right c β©
((Ξ± +β Ξ³) β inr c) οΌβ¨ r β©
((Ξ± +β Ξ²) β z) οΌβ¨ ap ((Ξ± +β Ξ²) β_) s β©
((Ξ± +β Ξ²) β inr b) οΌβ¨ (+β-β-right b)β»ΒΉ β©
(Ξ± +β (Ξ² β b)) β
t : (Ξ² β b) οΌ (Ξ³ β c)
t = f b (Ξ³ β c) (q β»ΒΉ)
g : (Ξ² : Ordinal π€) β P Ξ²
g = transfinite-induction-on-OO P Ο
left-+β-is-embedding : (Ξ± : Ordinal π€) β is-embedding (Ξ± +β_)
left-+β-is-embedding Ξ± = lc-maps-into-sets-are-embeddings (Ξ± +β_)
(Ξ» {Ξ²} {Ξ³} β +β-left-cancellable Ξ± Ξ² Ξ³)
the-type-of-ordinals-is-a-set
\end{code}
This implies that the function Ξ± +β_ reflects the _β²_ ordering:
\begin{code}
+β-left-reflects-β² : (Ξ± Ξ² Ξ³ : Ordinal π€)
β (Ξ± +β Ξ²) β² (Ξ± +β Ξ³)
β Ξ² β² Ξ³
+β-left-reflects-β² Ξ± Ξ² Ξ³ (inl a , p) = π-elim (lemmaβ a q)
where
q : (Ξ± +β Ξ²) οΌ (Ξ± β a)
q = p β (+β-β-left a)β»ΒΉ
+β-left-reflects-β² Ξ± Ξ² Ξ³ (inr c , p) = l
where
q : (Ξ± +β Ξ²) οΌ (Ξ± +β (Ξ³ β c))
q = p β (+β-β-right c)β»ΒΉ
r : Ξ² οΌ (Ξ³ β c)
r = +β-left-cancellable Ξ± Ξ² (Ξ³ β c) q
l : Ξ² β² Ξ³
l = c , r
\end{code}
And in turn this implies that the function Ξ± +β_ reflects the _βΌ_
partial ordering:
\begin{code}
+β-left-reflects-βΌ : (Ξ± Ξ² Ξ³ : Ordinal π€)
β (Ξ± +β Ξ²) βΌ (Ξ± +β Ξ³)
β Ξ² βΌ Ξ³
+β-left-reflects-βΌ {π€} Ξ± Ξ² Ξ³ l = to-βΌ (Ο Ξ² l)
where
Ο : (Ξ² : Ordinal π€)
β (Ξ± +β Ξ²) βΌ (Ξ± +β Ξ³)
β (b : β¨ Ξ² β©) β (Ξ² β b) β² Ξ³
Ο Ξ² l b = o
where
m : (Ξ± +β (Ξ² β b)) β² (Ξ± +β Ξ²)
m = +β-β²-right b
n : (Ξ± +β (Ξ² β b)) β² (Ξ± +β Ξ³)
n = l (Ξ± +β (Ξ² β b)) m
o : (Ξ² β b) β² Ξ³
o = +β-left-reflects-β² Ξ± (Ξ² β b) Ξ³ n
\end{code}
Classically, if Ξ± βΌ Ξ² then there is (a necessarily unique) Ξ³ with Ξ± +β
Ξ³ οΌ Ξ². But this not necessarily the case constructively. For that
purpose, we first characterize the order of subsingleton ordinals.
\begin{code}
module _ {π€ : Universe}
(P Q : π€ Μ )
(P-is-prop : is-prop P)
(Q-is-prop : is-prop Q)
where
private
p q : Ordinal π€
p = prop-ordinal P P-is-prop
q = prop-ordinal Q Q-is-prop
factβ : p β² q β Β¬ P Γ Q
factβ (y , r) = u , y
where
s : P οΌ (Q Γ π)
s = ap β¨_β© r
u : Β¬ P
u p = π-elim (prβ (β idtoeq P (Q Γ π) s β p))
factβ-converse : Β¬ P Γ Q β p β² q
factβ-converse (u , y) = (y , g)
where
r : P οΌ Q Γ π
r = univalence-gives-propext (ua π€)
P-is-prop
Γ-π-is-prop
(Ξ» p β π-elim (u p))
(Ξ» (q , z) β π-elim z)
g : p οΌ (q β y)
g = to-Ξ£-οΌ (r ,
to-Ξ£-οΌ (dfunext fe' (Ξ» (y , z) β π-elim z) ,
being-well-order-is-prop (underlying-order (q β y)) fe _ _))
factβ : p βΌ q β (P β Q)
factβ l x = prβ (from-βΌ {π€} {p} {q} l x)
factβ-converse : (P β Q) β p βΌ q
factβ-converse f = to-βΌ {π€} {p} {q} Ο
where
r : P Γ π οΌ Q Γ π
r = univalence-gives-propext (ua π€)
Γ-π-is-prop
Γ-π-is-prop
(Ξ» (p , z) β π-elim z)
(Ξ» (q , z) β π-elim z)
Ο : (x : β¨ p β©) β (p β x) β² q
Ο x = f x , s
where
s : ((P Γ π) , (Ξ» x x' β π) , _) οΌ ((Q Γ π) , (Ξ» y y' β π) , _)
s = to-Ξ£-οΌ (r ,
to-Ξ£-οΌ (dfunext fe' (Ξ» z β π-elim (prβ z)) ,
being-well-order-is-prop (underlying-order (q β f x)) fe _ _))
\end{code}
The existence of ordinal subtraction implies excluded middle.
\begin{code}
existence-of-subtraction : (π€ : Universe) β π€ βΊ Μ
existence-of-subtraction π€ = (Ξ± Ξ² : Ordinal π€) β Ξ± βΌ Ξ² β Ξ£ Ξ³ κ Ordinal π€ , Ξ± +β Ξ³ οΌ Ξ²
existence-of-subtraction-is-prop : is-prop (existence-of-subtraction π€)
existence-of-subtraction-is-prop = Ξ β-is-prop fe'
(Ξ» Ξ± Ξ² l β left-+β-is-embedding Ξ± Ξ²)
ordinal-subtraction-gives-excluded-middle : existence-of-subtraction π€ β EM π€
ordinal-subtraction-gives-excluded-middle {π€} Ο P P-is-prop = g
where
Ξ± = prop-ordinal P P-is-prop
Ξ² = prop-ordinal π π-is-prop
Ο = Ο Ξ± Ξ² (factβ-converse {π€} P π P-is-prop π-is-prop (Ξ» _ β β))
Ξ³ : Ordinal π€
Ξ³ = prβ Ο
r : Ξ± +β Ξ³ οΌ Ξ²
r = prβ Ο
s : P + β¨ Ξ³ β© οΌ π
s = ap β¨_β© r
t : P + β¨ Ξ³ β©
t = idtofun π (P + β¨ Ξ³ β©) (s β»ΒΉ) β
f : β¨ Ξ³ β© β Β¬ P
f c p = z
where
A : π€ Μ β π€ Μ
A X = Ξ£ x κ X , Ξ£ y κ X , x β y
u : A (P + β¨ Ξ³ β©)
u = inl p , inr c , +disjoint
v : Β¬ A π
v (x , y , d) = d (π-is-prop x y)
w : A (P + β¨ Ξ³ β©) β A π
w = transport A s
z : π
z = v (w u)
g : P + Β¬ P
g = Cases t inl (Ξ» c β inr (f c))
\end{code}
TODO. Another example where subtraction doesn't necessarily exist is
the situation (Ο +β πβ) βΌ βββ, discussed in the module
OrdinalOfOrdinals. The types Ο +β πβ and βββ are equal if and only if
LPO holds. Without assuming LPO, the image of the inclusion (Ο +β πβ)
β βββ, has empty complement, and so there is nothing that can be added
to (Ο +β πβ) to get βββ, unless LPO holds.
\begin{code}
open import UF.Retracts
retract-Ξ©-of-Ordinal : retract (Ξ© π€) of (Ordinal π€)
retract-Ξ©-of-Ordinal {π€} = r , s , Ξ·
where
s : Ξ© π€ β Ordinal π€
s (P , i) = prop-ordinal P i
r : Ordinal π€ β Ξ© π€
r Ξ± = has-least Ξ± , having-least-is-prop fe' Ξ±
Ξ· : r β s βΌ id
Ξ· (P , i) = to-subtype-οΌ (Ξ» _ β being-prop-is-prop fe') t
where
f : P β has-least (prop-ordinal P i)
f p = p , (Ξ» x u β id)
g : has-least (prop-ordinal P i) β P
g (p , _) = p
t : has-least (prop-ordinal P i) οΌ P
t = pe π€ (having-least-is-prop fe' (prop-ordinal P i)) i g f
\end{code}
Added 29 March 2022.
It is not the case in general that Ξ² βΌ Ξ± +β Ξ². We work with the
equivalent order _β΄_.
\begin{code}
module _ {π€ : Universe} where
open import Ordinals.OrdinalOfTruthValues fe π€ (pe π€)
open import TypeTopology.DiscreteAndSeparated
open import UF.Miscelanea
β΄-add-taboo : Ξ©β β΄ (πβ +β Ξ©β) β WEM π€
β΄-add-taboo (f , s) = V
where
I : is-least (πβ +β Ξ©β) (inl β)
I (inl β) u l = l
I (inr x) (inl β) l = π-elim l
I (inr x) (inr y) l = π-elim l
II : f β₯Ξ© οΌ inl β
II = simulations-preserve-least Ξ©β (πβ +β Ξ©β) β₯Ξ© (inl β) f s β₯-is-least I
III : is-isolated (f β₯Ξ©)
III = transportβ»ΒΉ is-isolated II (inl-is-isolated β (π-is-discrete β))
IV : is-isolated β₯Ξ©
IV = lc-maps-reflect-isolatedness f (simulations-are-lc Ξ©β (πβ +β Ξ©β) f s) β₯Ξ© III
V : β P β is-prop P β Β¬ P + ¬¬ P
V P i = Cases (IV (P , i))
(Ξ» (e : β₯Ξ© οΌ (P , i))
β inl (equal-π-is-empty (ap prβ (e β»ΒΉ))))
(Ξ» (Ξ½ : β₯Ξ© β (P , i))
β inr (contrapositive
(Ξ» (u : Β¬ P)
β to-subtype-οΌ (Ξ» _ β being-prop-is-prop fe')
(empty-types-are-οΌ-π fe' (pe π€) u)β»ΒΉ) Ξ½))
\end{code}
Added 4th April 2022.
\begin{code}
πβ-least-β΄ : (Ξ± : Ordinal π€) β πβ {π€} β΄ Ξ±
πβ-least-β΄ Ξ± = unique-from-π , (Ξ» x y l β π-elim x) , (Ξ» x y l β π-elim x)
πβ-least : (Ξ± : Ordinal π€) β πβ {π€} βΌ Ξ±
πβ-least Ξ± = β΄-gives-βΌ πβ Ξ± (πβ-least-β΄ Ξ±)
\end{code}
Added 5th April 2022.
Successor reflects order:
\begin{code}
succβ-reflects-β΄ : (Ξ± : Ordinal π€) (Ξ² : Ordinal π₯) β (Ξ± +β πβ) β΄ (Ξ² +β πβ) β Ξ± β΄ Ξ²
succβ-reflects-β΄ Ξ± Ξ² (f , i , p) = g , j , q
where
k : (x : β¨ Ξ± β©) (t : β¨ Ξ² β© + π) β f (inl x) οΌ t β Ξ£ y κ β¨ Ξ² β© , f (inl x) οΌ inl y
k x (inl y) e = y , e
k x (inr β) e = π-elim (III (f (inr β)) II)
where
I : f (inl x) βΊβ¨ Ξ² +β πβ β© (f (inr β))
I = p (inl x) (inr β) β
II : inr β βΊβ¨ Ξ² +β πβ β© (f (inr β))
II = transport (Ξ» - β - βΊβ¨ Ξ² +β πβ β© (f (inr β))) e I
III : (t : β¨ Ξ² β© + π) β Β¬ (inr β βΊβ¨ Ξ² +β πβ β© t)
III (inl y) l = π-elim l
III (inr β) l = π-elim l
h : (x : β¨ Ξ± β©) β Ξ£ y κ β¨ Ξ² β© , f (inl x) οΌ inl y
h x = k x (f (inl x)) refl
g : β¨ Ξ± β© β β¨ Ξ² β©
g x = prβ (h x)
Ο : (x : β¨ Ξ± β©) β f (inl x) οΌ inl (g x)
Ο x = prβ (h x)
j : is-initial-segment Ξ± Ξ² g
j x y l = II I
where
m : inl y βΊβ¨ Ξ² +β πβ β© f (inl x)
m = transportβ»ΒΉ (Ξ» - β inl y βΊβ¨ Ξ² +β πβ β© -) (Ο x) l
I : Ξ£ z κ β¨ Ξ± +β πβ β© , (z βΊβ¨ Ξ± +β πβ β© inl x) Γ (f z οΌ inl y)
I = i (inl x) (inl y) m
II : type-of I β Ξ£ x' κ β¨ Ξ± β© , (x' βΊβ¨ Ξ± β© x) Γ (g x' οΌ y)
II (inl x' , n , e) = x' , n , inl-lc (inl (g x') οΌβ¨ (Ο x')β»ΒΉ β©
f (inl x') οΌβ¨ e β©
inl y β)
q : is-order-preserving Ξ± Ξ² g
q x x' l = transportβ (Ξ» y y' β y βΊβ¨ Ξ² +β πβ β© y') (Ο x) (Ο x') I
where
I : f (inl x) βΊβ¨ Ξ² +β πβ β© f (inl x')
I = p (inl x) (inl x') l
succβ-reflects-βΌ : (Ξ± Ξ² : Ordinal π€) β (Ξ± +β πβ) βΌ (Ξ² +β πβ) β Ξ± βΌ Ξ²
succβ-reflects-βΌ Ξ± Ξ² l = β΄-gives-βΌ Ξ± Ξ²
(succβ-reflects-β΄ Ξ± Ξ²
(βΌ-gives-β΄ (Ξ± +β πβ) (Ξ² +β πβ) l))
succβ-preserves-βΎ : (Ξ± Ξ² : Ordinal π€) β Ξ± βΎ Ξ² β (Ξ± +β πβ) βΎ (Ξ² +β πβ)
succβ-preserves-βΎ Ξ± Ξ² = contrapositive (succβ-reflects-βΌ Ξ² Ξ±)
\end{code}
TODO. Actually (Ξ± +β πβ) β΄ (Ξ² +β πβ) is equivalent to
Ξ± ββ Ξ² or Ξ² ββ Ξ± +β πβ + Ξ³ for some (necessarily unique) Ξ³.
This condition in turn implies Ξ± β΄ Ξ² (and is equivalent to Ξ± β΄ Ξ² under
excluded middle).
However, the successor function does not preserve _β΄_ in general:
\begin{code}
succ-not-necessarily-monotone : ((Ξ± Ξ² : Ordinal π€)
β Ξ± β΄ Ξ²
β (Ξ± +β πβ) β΄ (Ξ² +β πβ))
β WEM π€
succ-not-necessarily-monotone {π€} Ο P isp = II I
where
Ξ± : Ordinal π€
Ξ± = prop-ordinal P isp
I : (Ξ± +β πβ) β΄ πβ
I = Ο Ξ± πβ l
where
l : Ξ± β΄ πβ
l = unique-to-π ,
(Ξ» x y (l : y βΊβ¨ πβ β© β) β π-elim l) ,
(Ξ» x y l β l)
II : type-of I β Β¬ P + ¬¬ P
II (f , f-is-initial , f-is-order-preserving) = III (f (inr β)) refl
where
III : (y : β¨ πβ β©) β f (inr β) οΌ y β Β¬ P + ¬¬ P
III (inl β) e = inl VII
where
IV : (p : P) β f (inl p) βΊβ¨ πβ β© f (inr β)
IV p = f-is-order-preserving (inl p) (inr β) β
V : (p : P) β f (inl p) βΊβ¨ πβ β© inl β
V p = transport (Ξ» - β f (inl p) βΊβ¨ πβ β© -) e (IV p)
VI : (z : β¨ πβ β©) β Β¬ (z βΊβ¨ πβ β© inl β)
VI (inl β) l = π-elim l
VI (inr β) l = π-elim l
VII : Β¬ P
VII p = VI (f (inl p)) (V p)
III (inr β) e = inr IX
where
VIII : Ξ£ x' κ β¨ Ξ± +β πβ β© , (x' βΊβ¨ Ξ± +β πβ β© inr β) Γ (f x' οΌ inl β)
VIII = f-is-initial (inr β) (inl β) (transportβ»ΒΉ (Ξ» - β inl β βΊβ¨ πβ β© -) e β)
IX : ¬¬ P
IX u = XI
where
X : β x' β Β¬ (x' βΊβ¨ Ξ± +β πβ β© inr β)
X (inl p) l = u p
X (inr β) l = π-elim l
XI : π
XI = X (prβ VIII) (prβ (prβ VIII))
\end{code}
TODO. Also the implication Ξ± β² Ξ² β (Ξ± +β πβ) β² (Ξ² +β πβ) fails in general.
\begin{code}
succ-monotone : EM (π€ βΊ) β (Ξ± Ξ² : Ordinal π€) β Ξ± β΄ Ξ² β (Ξ± +β πβ) β΄ (Ξ² +β πβ)
succ-monotone em Ξ± Ξ² l = II I
where
I : ((Ξ± +β πβ) β² (Ξ² +β πβ)) + ((Ξ± +β πβ) οΌ (Ξ² +β πβ)) + ((Ξ² +β πβ) β² (Ξ± +β πβ))
I = trichotomy _β²_ fe' em β²-is-well-order (Ξ± +β πβ) (Ξ² +β πβ)
II : type-of I β (Ξ± +β πβ) β΄ (Ξ² +β πβ)
II (inl m) = β²-gives-β΄ _ _ m
II (inr (inl e)) = transport ((Ξ± +β πβ) β΄_) e (β΄-refl (Ξ± +β πβ))
II (inr (inr m)) = transport ((Ξ± +β πβ) β΄_) VI (β΄-refl (Ξ± +β πβ))
where
III : (Ξ² +β πβ) β΄ (Ξ± +β πβ)
III = β²-gives-β΄ _ _ m
IV : Ξ² β΄ Ξ±
IV = succβ-reflects-β΄ Ξ² Ξ± III
V : Ξ± οΌ Ξ²
V = β΄-antisym _ _ l IV
VI : (Ξ± +β πβ) οΌ (Ξ² +β πβ)
VI = ap (_+β πβ) V
\end{code}
TODO. EM π€ is sufficient, because we can work with the resized order _β²β»_.
Added 21st April 2022.
We say that an ordinal is a limit ordinal if it is the least upper
bound of its predecessors:
\begin{code}
is-limit-ordinalβΊ : Ordinal π€ β π€ βΊ Μ
is-limit-ordinalβΊ {π€} Ξ± = (Ξ² : Ordinal π€)
β ((Ξ³ : Ordinal π€) β Ξ³ β² Ξ± β Ξ³ β΄ Ξ²)
β Ξ± β΄ Ξ²
\end{code}
We give an equivalent definition below.
Recall from another module [say which one] that the existence
propositional truncations and the set-replacement property are
together equivalent to the existence of small quotients. With them we
can construct suprema of families of ordinals.
\begin{code}
open import UF.PropTrunc
open import UF.Size
module _ (pt : propositional-truncations-exist)
(sr : Set-Replacement pt)
where
open import Ordinals.OrdinalOfOrdinalsSuprema ua
open suprema pt sr
\end{code}
Recall that, by definition, Ξ³ β² Ξ± iff Ξ³ is of the form Ξ± β x for some
x : β¨ Ξ± β©. We define the "floor" of an ordinal to be the supremum of
its predecessors:
\begin{code}
β_β : Ordinal π€ β Ordinal π€
β Ξ± β = sup (Ξ± β_)
ββ-lower-bound : (Ξ± : Ordinal π€) β β Ξ± β β΄ Ξ±
ββ-lower-bound Ξ± = sup-is-lower-bound-of-upper-bounds _ Ξ± (segment-β΄ Ξ±)
is-limit-ordinal : Ordinal π€ β π€ Μ
is-limit-ordinal Ξ± = Ξ± β΄ β Ξ± β
is-limit-ordinal-fact : (Ξ± : Ordinal π€)
β is-limit-ordinal Ξ±
β Ξ± οΌ β Ξ± β
is-limit-ordinal-fact Ξ± = (Ξ» β β β΄-antisym _ _ β (ββ-lower-bound Ξ±)) ,
(Ξ» p β transport (Ξ± β΄_) p (β΄-refl Ξ±))
successor-lemma-left : (Ξ± : Ordinal π€) (x : β¨ Ξ± β©) β ((Ξ± +β πβ) β inl x) β΄ Ξ±
successor-lemma-left Ξ± x = III
where
I : (Ξ± β x) β΄ Ξ±
I = segment-β΄ Ξ± x
II : (Ξ± β x) οΌ ((Ξ± +β πβ) β inl x)
II = +β-β-left x
III : ((Ξ± +β πβ) β inl x) β΄ Ξ±
III = transport (_β΄ Ξ±) II I
successor-lemma-right : (Ξ± : Ordinal π€) β (Ξ± +β πβ) β inr β οΌ Ξ±
successor-lemma-right Ξ± = III
where
I : (πβ β β) β΄ πβ
I = (Ξ» x β π-elim (prβ x)) , (Ξ» x β π-elim (prβ x)) , (Ξ» x β π-elim (prβ x))
II : (πβ β β) οΌ πβ
II = β΄-antisym _ _ I (πβ-least-β΄ (πβ β β))
III : (Ξ± +β πβ) β inr β οΌ Ξ±
III = (Ξ± +β πβ) β inr β οΌβ¨ (+β-β-right β)β»ΒΉ β©
Ξ± +β (πβ β β) οΌβ¨ ap (Ξ± +β_) II β©
Ξ± +β πβ οΌβ¨ πβ-right-neutral Ξ± β©
Ξ± β
ββ-of-successor : (Ξ± : Ordinal π€)
β β Ξ± +β πβ β β΄ Ξ±
ββ-of-successor Ξ± = sup-is-lower-bound-of-upper-bounds _ Ξ± h
where
h : (x : β¨ Ξ± +β πβ β©) β ((Ξ± +β πβ) β x) β΄ Ξ±
h (inl x) = successor-lemma-left Ξ± x
h (inr β) = transportβ»ΒΉ (_β΄ Ξ±) (successor-lemma-right Ξ±) (β΄-refl Ξ±)
ββ-of-successor' : (Ξ± : Ordinal π€)
β β Ξ± +β πβ β οΌ Ξ±
ββ-of-successor' Ξ± = III
where
I : ((Ξ± +β πβ) β inr β) β΄ β Ξ± +β πβ β
I = sup-is-upper-bound _ (inr β)
II : Ξ± β΄ β Ξ± +β πβ β
II = transport (_β΄ β Ξ± +β πβ β) (successor-lemma-right Ξ±) I
III : β Ξ± +β πβ β οΌ Ξ±
III = β΄-antisym _ _ (ββ-of-successor Ξ±) II
successor-increasing : (Ξ± : Ordinal π€) β Ξ± β² (Ξ± +β πβ)
successor-increasing Ξ± = inr β , ((successor-lemma-right Ξ±)β»ΒΉ)
successors-are-not-limit-ordinals : (Ξ± : Ordinal π€)
β Β¬ is-limit-ordinal (Ξ± +β πβ)
successors-are-not-limit-ordinals Ξ± le = irrefl (OO _) Ξ± II
where
I : (Ξ± +β πβ) β΄ Ξ±
I = β΄-trans (Ξ± +β πβ) β Ξ± +β πβ β Ξ± le (ββ-of-successor Ξ±)
II : Ξ± β² Ξ±
II = β΄-gives-βΌ _ _ I Ξ± (successor-increasing Ξ±)
\end{code}
TODO (easy). Show that is-limit-ordinalβΊ Ξ± is logically equivalent to
is-limit-ordinal Ξ±.
\begin{code}
ββ-monotone : (Ξ± Ξ² : Ordinal π€) β Ξ± β΄ Ξ² β β Ξ± β β΄ β Ξ² β
ββ-monotone Ξ± Ξ² le = V
where
I : (y : β¨ Ξ² β©) β (Ξ² β y) β΄ β Ξ² β
I = sup-is-upper-bound (Ξ² β_)
II : (x : β¨ Ξ± β©) β (Ξ± β x) β² Ξ²
II x = β΄-gives-βΌ _ _ le (Ξ± β x) (x , refl)
III : (x : β¨ Ξ± β©) β Ξ£ y κ β¨ Ξ² β© , (Ξ± β x) οΌ (Ξ² β y)
III = II
IV : (x : β¨ Ξ± β©) β (Ξ± β x) β΄ β Ξ² β
IV x = transportβ»ΒΉ (_β΄ β Ξ² β) (prβ (III x)) (I (prβ (III x)))
V : sup (Ξ± β_) β΄ β Ξ² β
V = sup-is-lower-bound-of-upper-bounds (Ξ± β_) β Ξ² β IV
\end{code}
We now give an example of an ordinal which is not a limit ordinal and
also is not a successor ordinal unless LPO holds:
\begin{code}
open import Notation.CanonicalMap
open import CoNaturals.GenericConvergentSequence
open import Notation.Order
open import Naturals.Order
ββ-of-ββ : β βββ β οΌ Ο
ββ-of-ββ = c
where
a : β βββ β β΄ Ο
a = sup-is-lower-bound-of-upper-bounds (βββ β_) Ο I
where
I : (u : β¨ βββ β©) β (βββ β u) β΄ Ο
I u = βΌ-gives-β΄ (βββ β u) Ο II
where
II : (Ξ± : Ordinal π€β) β Ξ± β² (βββ β u) β Ξ± β² Ο
II .((βββ β u) β (ΞΉ n , n , refl , p)) ((.(ΞΉ n) , n , refl , p) , refl) = XI
where
III : ΞΉ n βΊ u
III = n , refl , p
IV : ((βββ β u) β (ΞΉ n , n , refl , p)) οΌ βββ β ΞΉ n
IV = iterated-β βββ u (ΞΉ n) III
V : (βββ β ΞΉ n) ββ (Ο β n)
V = f , fop , qinvs-are-equivs f (g , gf , fg) , gop
where
f : β¨ βββ β ΞΉ n β© β β¨ Ο β n β©
f (.(ΞΉ k) , k , refl , q) = k , β-gives-< _ _ q
g : β¨ Ο β n β© β β¨ βββ β ΞΉ n β©
g (k , l) = (ΞΉ k , k , refl , <-gives-β _ _ l)
fg : f β g βΌ id
fg (k , l) = to-subtype-οΌ (Ξ» k β <-is-prop-valued k n) refl
gf : g β f βΌ id
gf (.(ΞΉ k) , k , refl , q) = to-subtype-οΌ (Ξ» u β βΊ-prop-valued fe' u (ΞΉ n)) refl
fop : is-order-preserving (βββ β ΞΉ n) (Ο β n) f
fop (.(ΞΉ k) , k , refl , q) (.(ΞΉ k') , k' , refl , q') (m , r , cc) = VIII
where
VI : k οΌ m
VI = β-to-ββ-lc r
VII : m < k'
VII = β-gives-< _ _ cc
VIII : k < k'
VIII = transportβ»ΒΉ (_< k') VI VII
gop : is-order-preserving (Ο β n) (βββ β ΞΉ n) g
gop (k , l) (k' , l') β = k , refl , <-gives-β _ _ β
IX : βββ β ΞΉ n οΌ Ο β n
IX = eqtoidβ _ _ V
X : (βββ β (ΞΉ n)) β² Ο
X = n , IX
XI : ((βββ β u) β (ΞΉ n , n , refl , p)) β² Ο
XI = transportβ»ΒΉ (_β² Ο) IV X
b : Ο β΄ β βββ β
b = transport (_β΄ β βββ β) (ββ-of-successor' Ο) I
where
I : β Ο +β πβ β β΄ β βββ β
I = ββ-monotone (Ο +β πβ) βββ ββ-in-Ord.fact
c : β βββ β οΌ Ο
c = β΄-antisym _ _ a b
ββ-is-not-limit : Β¬ is-limit-ordinal βββ
ββ-is-not-limit β = III II
where
I = βββ οΌβ¨ lr-implication (is-limit-ordinal-fact βββ) β β©
β βββ β οΌβ¨ ββ-of-ββ β©
Ο β
II : βββ ββ Ο
II = idtoeqβ _ _ I
III : Β¬ (βββ ββ Ο)
III (f , e) = irrefl Ο (f β) VII
where
IV : is-largest Ο (f β)
IV = order-equivs-preserve-largest βββ Ο f e β
(Ξ» u t l β βΊβΌ-gives-βΊ t u β l (β-largest u))
V : f β βΊβ¨ Ο β© succ (f β)
V = <-succ (f β)
VI : succ (f β) βΌβ¨ Ο β© f β
VI = IV (succ (f β))
VII : f β βΊβ¨ Ο β© f β
VII = VI (f β) V
open import Taboos.LPO fe
ββ-successor-gives-LPO : (Ξ£ Ξ± κ Ordinal π€β , (βββ οΌ (Ξ± +β πβ))) β LPO
ββ-successor-gives-LPO (Ξ± , p) = IV
where
I = Ξ± οΌβ¨ (ββ-of-successor' Ξ±)β»ΒΉ β©
β Ξ± +β πβ β οΌβ¨ ap β_β (p β»ΒΉ) β©
β βββ β οΌβ¨ ββ-of-ββ β©
Ο β
II : βββ οΌ (Ο +β πβ)
II = transport (Ξ» - β βββ οΌ (- +β πβ)) I p
III : βββ β΄ (Ο +β πβ)
III = transport (βββ β΄_) II (β΄-refl βββ)
IV : LPO
IV = ββ-in-Ord.converse-fails-constructively III
open PropositionalTruncation pt
ββ-successor-gives-LPO' : (β Ξ± κ Ordinal π€β , (βββ οΌ (Ξ± +β πβ))) β LPO
ββ-successor-gives-LPO' = β₯β₯-rec LPO-is-prop ββ-successor-gives-LPO
LPO-gives-ββ-successor : LPO β (Ξ£ Ξ± κ Ordinal π€β , (βββ οΌ (Ξ± +β πβ)))
LPO-gives-ββ-successor lpo = Ο , ββ-in-Ord.corollaryβ lpo
\end{code}
Therefore, constructively, it is not necessarily the case that every
ordinal is either a successor or a limit.
Added 4th May 2022.
\begin{code}
open import Ordinals.ToppedType fe
open import Ordinals.ToppedArithmetic fe
alternative-plusβ : (Οβ Οβ : Ordinalα΅ π€)
β [ Οβ +α΅ Οβ ] ββ ([ Οβ ] +β [ Οβ ])
alternative-plusβ Οβ Οβ = e
where
Ο
= cases (Ξ» β β Οβ) (Ξ» β β Οβ)
f : β¨ β πα΅ Ο
β© β β¨ [ Οβ ] +β [ Οβ ] β©
f (inl β , x) = inl x
f (inr β , y) = inr y
g : β¨ [ Οβ ] +β [ Οβ ] β© β β¨ β πα΅ Ο
β©
g (inl x) = (inl β , x)
g (inr y) = (inr β , y)
Ξ· : g β f βΌ id
Ξ· (inl β , x) = refl
Ξ· (inr β , y) = refl
Ξ΅ : f β g βΌ id
Ξ΅ (inl x) = refl
Ξ΅ (inr y) = refl
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , Ξ· , Ξ΅)
f-is-op : is-order-preserving [ β πα΅ Ο
] ([ Οβ ] +β [ Οβ ]) f
f-is-op (inl β , _) (inl β , _) (inr (refl , l)) = l
f-is-op (inl β , _) (inr β , _) (inl β) = β
f-is-op (inr β , _) (inl β , _) (inl l) = l
f-is-op (inr β , _) (inr β , _) (inr (refl , l)) = l
g-is-op : is-order-preserving ([ Οβ ] +β [ Οβ ]) [ β πα΅ Ο
] g
g-is-op (inl _) (inl _) l = inr (refl , l)
g-is-op (inl _) (inr _) β = inl β
g-is-op (inr _) (inl _) ()
g-is-op (inr _) (inr _) l = inr (refl , l)
e : [ β πα΅ Ο
] ββ ([ Οβ ] +β [ Οβ ])
e = f , f-is-op , f-is-equiv , g-is-op
alternative-plus : (Οβ Οβ : Ordinalα΅ π€)
β [ Οβ +α΅ Οβ ] οΌ ([ Οβ ] +β [ Οβ ])
alternative-plus Οβ Οβ = eqtoidβ _ _ (alternative-plusβ Οβ Οβ)
\end{code}