Fredrik Nordvall Forsberg, 13 November 2023.
In collaboration with Tom de Jong, Nicolai Kraus and Chuangjie Xu.
Minor updates 9 and 11 September, 1 November 2024 and 15 July 2025.
We prove several properties of ordinal multiplication, including that it
preserves suprema of ordinals and that it enjoys a left-cancellation property.
\begin{code}
{-# OPTIONS --safe --without-K --lossy-unification #-}
open import UF.Univalence
module Ordinals.MultiplicationProperties
(ua : Univalence)
where
open import UF.Base
open import UF.Equiv
open import UF.FunExt
open import UF.Subsingletons
open import UF.Subsingletons-FunExt
open import UF.UA-FunExt
open import UF.ClassicalLogic
private
fe : FunExt
fe = Univalence-gives-FunExt ua
fe' : Fun-Ext
fe' {π€} {π₯} = fe π€ π₯
open import MLTT.Spartan
open import MLTT.Plus-Properties
open import Ordinals.AdditionProperties ua
open import Ordinals.Arithmetic fe
open import Ordinals.Equivalence
open import Ordinals.Maps
open import Ordinals.OrdinalOfOrdinals ua
open import Ordinals.Propositions ua
open import Ordinals.Type
open import Ordinals.Underlying
Γβ-πβ-right : (Ξ± : Ordinal π€) β Ξ± Γβ πβ {π₯} οΌ πβ
Γβ-πβ-right Ξ± = β΄-antisym _ _
(to-β΄ (Ξ± Γβ πβ) πβ (Ξ» (a , b) β π-elim b))
(πβ-least-β΄ (Ξ± Γβ πβ))
Γβ-πβ-left : (Ξ± : Ordinal π€) β πβ {π₯} Γβ Ξ± οΌ πβ
Γβ-πβ-left Ξ± = β΄-antisym _ _
(to-β΄ (πβ Γβ Ξ±) πβ (Ξ» (b , a) β π-elim b))
(πβ-least-β΄ (πβ Γβ Ξ±))
πβ-left-neutral-Γβ : (Ξ± : Ordinal π€) β πβ {π€} Γβ Ξ± οΌ Ξ±
πβ-left-neutral-Γβ {π€} Ξ± = eqtoidβ (ua _) fe' _ _
(f , f-order-preserving ,
f-is-equiv , g-order-preserving)
where
f : π Γ β¨ Ξ± β© β β¨ Ξ± β©
f = prβ
g : β¨ Ξ± β© β π Γ β¨ Ξ± β©
g = ( β ,_)
f-order-preserving : is-order-preserving (πβ {π€} Γβ Ξ±) Ξ± f
f-order-preserving x y (inl p) = p
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , (Ξ» _ β refl) , (Ξ» _ β refl))
g-order-preserving : is-order-preserving Ξ± (πβ {π€} Γβ Ξ±) g
g-order-preserving x y p = inl p
πβ-right-neutral-Γβ : (Ξ± : Ordinal π€) β Ξ± Γβ πβ {π€} οΌ Ξ±
πβ-right-neutral-Γβ {π€} Ξ± = eqtoidβ (ua _) fe' _ _
(f , f-order-preserving ,
f-is-equiv , g-order-preserving)
where
f : β¨ Ξ± β© Γ π β β¨ Ξ± β©
f = prβ
g : β¨ Ξ± β© β β¨ Ξ± β© Γ π
g = (_, β )
f-order-preserving : is-order-preserving (Ξ± Γβ πβ {π€}) Ξ± f
f-order-preserving x y (inr (refl , p)) = p
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , (Ξ» _ β refl) , (Ξ» _ β refl))
g-order-preserving : is-order-preserving Ξ± (Ξ± Γβ πβ {π€}) g
g-order-preserving x y p = inr (refl , p)
\end{code}
Because we use --lossy-unification to speed up typechecking we have to
explicitly mention the universes in the lemma below; using them as variables (as
usual) results in a unification error.
\begin{code}
Γβ-assoc : {π€ π₯ π¦ : Universe}
(Ξ± : Ordinal π€) (Ξ² : Ordinal π₯) (Ξ³ : Ordinal π¦)
β (Ξ± Γβ Ξ²) Γβ Ξ³ οΌ Ξ± Γβ (Ξ² Γβ Ξ³)
Γβ-assoc Ξ± Ξ² Ξ³ =
eqtoidβ (ua _) fe' ((Ξ± Γβ Ξ²) Γβ Ξ³) (Ξ± Γβ (Ξ² Γβ Ξ³))
(f , order-preserving-reflecting-equivs-are-order-equivs
((Ξ± Γβ Ξ²) Γβ Ξ³) (Ξ± Γβ (Ξ² Γβ Ξ³))
f f-equiv f-preserves-order f-reflects-order)
where
f : β¨ (Ξ± Γβ Ξ²) Γβ Ξ³ β© β β¨ Ξ± Γβ (Ξ² Γβ Ξ³) β©
f ((a , b) , c) = (a , (b , c))
g : β¨ Ξ± Γβ (Ξ² Γβ Ξ³) β© β β¨ (Ξ± Γβ Ξ²) Γβ Ξ³ β©
g (a , (b , c)) = ((a , b) , c)
f-equiv : is-equiv f
f-equiv = qinvs-are-equivs f (g , (Ξ» x β refl) , (Ξ» x β refl))
f-preserves-order : is-order-preserving ((Ξ± Γβ Ξ²) Γβ Ξ³) (Ξ± Γβ (Ξ² Γβ Ξ³)) f
f-preserves-order _ _ (inl p) = inl (inl p)
f-preserves-order _ _ (inr (r , inl p)) = inl (inr (r , p))
f-preserves-order _ _ (inr (r , inr (u , q))) = inr (to-Γ-οΌ u r , q)
f-reflects-order : is-order-reflecting ((Ξ± Γβ Ξ²) Γβ Ξ³) (Ξ± Γβ (Ξ² Γβ Ξ³)) f
f-reflects-order _ _ (inl (inl p)) = inl p
f-reflects-order _ _ (inl (inr (r , q))) = inr (r , (inl q))
f-reflects-order _ _ (inr (refl , q)) = inr (refl , (inr (refl , q)))
\end{code}
The lemma below is as general as possible in terms of universe parameters
because addition requires its arguments to come from the same universe, at least
at present.
\begin{code}
Γβ-distributes-+β-right : (Ξ± : Ordinal π€) (Ξ² Ξ³ : Ordinal π₯)
β Ξ± Γβ (Ξ² +β Ξ³) οΌ (Ξ± Γβ Ξ²) +β (Ξ± Γβ Ξ³)
Γβ-distributes-+β-right Ξ± Ξ² Ξ³ = eqtoidβ (ua _) fe' _ _
(f , f-order-preserving ,
f-is-equiv , g-order-preserving)
where
f : β¨ Ξ± Γβ (Ξ² +β Ξ³) β© β β¨ (Ξ± Γβ Ξ²) +β (Ξ± Γβ Ξ³) β©
f (a , inl b) = inl (a , b)
f (a , inr c) = inr (a , c)
g : β¨ (Ξ± Γβ Ξ²) +β (Ξ± Γβ Ξ³) β© β β¨ Ξ± Γβ (Ξ² +β Ξ³) β©
g (inl (a , b)) = a , inl b
g (inr (a , c)) = a , inr c
f-order-preserving : is-order-preserving _ _ f
f-order-preserving (a , inl b) (a' , inl b') (inl p) = inl p
f-order-preserving (a , inl b) (a' , inr c') (inl p) = β
f-order-preserving (a , inr c) (a' , inr c') (inl p) = inl p
f-order-preserving (a , inl b) (a' , inl .b) (inr (refl , q)) = inr (refl , q)
f-order-preserving (a , inr c) (a' , inr .c) (inr (refl , q)) = inr (refl , q)
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , Ξ· , Ξ΅)
where
Ξ· : g β f βΌ id
Ξ· (a , inl b) = refl
Ξ· (a , inr c) = refl
Ξ΅ : f β g βΌ id
Ξ΅ (inl (a , b)) = refl
Ξ΅ (inr (a , c)) = refl
g-order-preserving : is-order-preserving _ _ g
g-order-preserving (inl (a , b)) (inl (a' , b')) (inl p) = inl p
g-order-preserving (inl (a , b)) (inl (a' , .b)) (inr (refl , q)) =
inr (refl , q)
g-order-preserving (inl (a , b)) (inr (a' , c')) p = inl β
g-order-preserving (inr (a , c)) (inr (a' , c')) (inl p) = inl p
g-order-preserving (inr (a , c)) (inr (a' , c')) (inr (refl , q)) =
inr (refl , q)
\end{code}
The following characterizes the initial segments of a product and is rather
useful when working with simulations between products.
\begin{code}
Γβ-β : (Ξ± Ξ² : Ordinal π€)
β {a : β¨ Ξ± β©} {b : β¨ Ξ² β©}
β (Ξ± Γβ Ξ²) β (a , b) οΌ (Ξ± Γβ (Ξ² β b)) +β (Ξ± β a)
Γβ-β Ξ± Ξ² {a} {b} = eqtoidβ (ua _) fe' _ _ (f , f-order-preserving ,
f-is-equiv , g-order-preserving)
where
f : β¨ (Ξ± Γβ Ξ²) β (a , b) β© β β¨ (Ξ± Γβ (Ξ² β b)) +β (Ξ± β a) β©
f ((x , y) , inl p) = inl (x , (y , p))
f ((x , y) , inr (r , q)) = inr (x , q)
g : β¨ (Ξ± Γβ (Ξ² β b)) +β (Ξ± β a) β© β β¨ (Ξ± Γβ Ξ²) β (a , b) β©
g (inl (x , y , p)) = (x , y) , inl p
g (inr (x , q)) = (x , b) , inr (refl , q)
f-order-preserving : is-order-preserving _ _ f
f-order-preserving ((x , y) , inl p) ((x' , y') , inl p') (inl l) = inl l
f-order-preserving ((x , y) , inl p) ((x' , _) , inl p') (inr (refl , l)) =
inr ((ap (y ,_) (Prop-valuedness Ξ² _ _ p p')) , l)
f-order-preserving ((x , y) , inl p) ((x' , y') , inr (r' , q')) l = β
f-order-preserving ((x , y) , inr (refl , q)) ((x' , y') , inl p') (inl l) =
π-elim (irrefl Ξ² y (Transitivity Ξ² _ _ _ l p'))
f-order-preserving ((x , y) , inr (refl , q))
((x' , _) , inl p') (inr (refl , l)) = π-elim
(irrefl Ξ² y p')
f-order-preserving ((x , y) , inr (refl , q))
((x' , _) , inr (refl , q')) (inl l) = π-elim
(irrefl Ξ² y l)
f-order-preserving ((x , y) , inr (refl , q))
((x' , _) , inr (refl , q')) (inr (_ , l)) = l
f-is-equiv : is-equiv f
f-is-equiv = qinvs-are-equivs f (g , Ξ· , Ξ΅)
where
Ξ· : g β f βΌ id
Ξ· ((x , y) , inl p) = refl
Ξ· ((x , y) , inr (refl , q)) = refl
Ξ΅ : f β g βΌ id
Ξ΅ (inl (x , y)) = refl
Ξ΅ (inr x) = refl
g-order-preserving : is-order-preserving _ _ g
g-order-preserving (inl (x , y , p)) (inl (x' , y' , p')) (inl l) = inl l
g-order-preserving (inl (x , y , p)) (inl (x' , y' , p')) (inr (refl , l)) =
inr (refl , l)
g-order-preserving (inl (x , y , p)) (inr (x' , q')) _ = inl p
g-order-preserving (inr (x , q)) (inr (x' , q')) l = inr (refl , l)
\end{code}
We now prove several useful facts about (bounded) simulations between products.
\begin{code}
Γβ-increasing-on-right : (Ξ± Ξ² Ξ³ : Ordinal π€)
β πβ β² Ξ±
β Ξ² β² Ξ³
β (Ξ± Γβ Ξ²) β² (Ξ± Γβ Ξ³)
Γβ-increasing-on-right Ξ± Ξ² Ξ³ (a , p) (c , q) = (a , c) , I
where
I = Ξ± Γβ Ξ² οΌβ¨ πβ-right-neutral (Ξ± Γβ Ξ²) β»ΒΉ β©
(Ξ± Γβ Ξ²) +β πβ οΌβ¨ apβ (Ξ» -β -β β (Ξ± Γβ -β) +β -β) q p β©
(Ξ± Γβ (Ξ³ β c)) +β (Ξ± β a) οΌβ¨ Γβ-β Ξ± Ξ³ β»ΒΉ β©
(Ξ± Γβ Ξ³) β (a , c) β
Γβ-right-monotone-β΄ : (Ξ± : Ordinal π€) (Ξ² : Ordinal π₯) (Ξ³ : Ordinal π¦)
β Ξ² β΄ Ξ³
β (Ξ± Γβ Ξ²) β΄ (Ξ± Γβ Ξ³)
Γβ-right-monotone-β΄ Ξ± Ξ² Ξ³ (g , sim-g) = f , f-initial-segment ,
f-order-preserving
where
f : β¨ Ξ± Γβ Ξ² β© β β¨ Ξ± Γβ Ξ³ β©
f (a , b) = a , g b
f-initial-segment : is-initial-segment (Ξ± Γβ Ξ²) (Ξ± Γβ Ξ³) f
f-initial-segment (a , b) (a' , c') (inl l) = (a' , b') , inl k , ap (a' ,_) q
where
I : Ξ£ b' κ β¨ Ξ² β© , b' βΊβ¨ Ξ² β© b Γ (g b' οΌ c')
I = simulations-are-initial-segments Ξ² Ξ³ g sim-g b c' l
b' = prβ I
k = prβ (prβ I)
q = prβ (prβ I)
f-initial-segment (a , b) (a' , c') (inr (refl , q)) =
(a' , b) , inr (refl , q) , refl
f-order-preserving : is-order-preserving (Ξ± Γβ Ξ²) (Ξ± Γβ Ξ³) f
f-order-preserving (a , b) (a' , b') (inl p) =
inl (simulations-are-order-preserving Ξ² Ξ³ g sim-g b b' p)
f-order-preserving (a , b) (a' , b') (inr (refl , q)) = inr (refl , q)
Γβ-βΌ-left : (Ξ± : Ordinal π€) (Ξ² : Ordinal π₯)
{a a' : β¨ Ξ± β©} {b : β¨ Ξ² β©}
β a βΌβ¨ Ξ± β© a'
β (a , b) βΌβ¨ Ξ± Γβ Ξ² β© (a' , b)
Γβ-βΌ-left Ξ± Ξ² p (aβ , bβ) (inl r) = inl r
Γβ-βΌ-left Ξ± Ξ² p (aβ , bβ) (inr (eq , r)) = inr (eq , p aβ r)
\end{code}
Multiplication satisfies the expected recursive equations (which
classically define ordinal multiplication): zero is fixed by multiplication
(this is Γβ-πβ-right above), multiplication for successors is repeated addition
and multiplication preserves suprema.
\begin{code}
Γβ-successor : (Ξ± Ξ² : Ordinal π€) β Ξ± Γβ (Ξ² +β πβ) οΌ (Ξ± Γβ Ξ²) +β Ξ±
Γβ-successor Ξ± Ξ² =
Ξ± Γβ (Ξ² +β πβ) οΌβ¨ Γβ-distributes-+β-right Ξ± Ξ² πβ β©
((Ξ± Γβ Ξ²) +β (Ξ± Γβ πβ)) οΌβ¨ ap ((Ξ± Γβ Ξ²) +β_) (πβ-right-neutral-Γβ Ξ±) β©
(Ξ± Γβ Ξ²) +β Ξ± β
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
open PropositionalTruncation pt
Γβ-preserves-suprema : (Ξ± : Ordinal π€) (I : π€ Μ ) (Ξ² : I β Ordinal π€)
β Ξ± Γβ sup Ξ² οΌ sup (Ξ» i β Ξ± Γβ Ξ² i)
Γβ-preserves-suprema {π€} Ξ± I Ξ² = β΄-antisym (Ξ± Γβ sup Ξ²) (sup (Ξ» i β Ξ± Γβ Ξ² i)) β¦
1β¦ β¦
2β¦
where
β¦
2β¦ : sup (Ξ» i β Ξ± Γβ Ξ² i) β΄ (Ξ± Γβ sup Ξ²)
β¦
2β¦ = sup-is-lower-bound-of-upper-bounds (Ξ» i β Ξ± Γβ Ξ² i) (Ξ± Γβ sup Ξ²)
(Ξ» i β Γβ-right-monotone-β΄ Ξ± (Ξ² i) (sup Ξ²) (sup-is-upper-bound Ξ² i))
β¦
1β¦ : (Ξ± Γβ sup Ξ²) β΄ sup (Ξ» i β Ξ± Γβ Ξ² i)
β¦
1β¦ = βΌ-gives-β΄ (Ξ± Γβ sup Ξ²) (sup (Ξ» i β Ξ± Γβ Ξ² i)) β¦
1β¦-I
where
β¦
1β¦-I : (Ξ³ : Ordinal π€) β Ξ³ β² (Ξ± Γβ sup Ξ²) β Ξ³ β² sup (Ξ» i β Ξ± Γβ Ξ² i)
β¦
1β¦-I _ ((a , y) , refl) = β¦
1β¦-III
where
β¦
1β¦-II : (Ξ£ i κ I , Ξ£ b κ β¨ Ξ² i β© , sup Ξ² β y οΌ (Ξ² i) β b)
β ((Ξ± Γβ sup Ξ²) β (a , y)) β² sup (Ξ» j β Ξ± Γβ Ξ² j)
β¦
1β¦-II (i , b , e) = Ο (a , b) , eq
where
Ο : β¨ Ξ± Γβ Ξ² i β© β β¨ sup (Ξ» j β Ξ± Γβ Ξ² j) β©
Ο = [ Ξ± Γβ Ξ² i , sup (Ξ» j β Ξ± Γβ Ξ² j) ]β¨ sup-is-upper-bound _ i β©
eq = (Ξ± Γβ sup Ξ²) β (a , y) οΌβ¨ Γβ-β Ξ± (sup Ξ²) β©
(Ξ± Γβ (sup Ξ² β y)) +β (Ξ± β a) οΌβ¨ eqβ β©
(Ξ± Γβ (Ξ² i β b)) +β (Ξ± β a) οΌβ¨ Γβ-β Ξ± (Ξ² i) β»ΒΉ β©
(Ξ± Γβ Ξ² i) β (a , b) οΌβ¨ eqβ β©
sup (Ξ» j β Ξ± Γβ Ξ² j) β Ο (a , b) β
where
eqβ = ap (Ξ» - β ((Ξ± Γβ -) +β (Ξ± β a))) e
eqβ = (initial-segment-of-sup-at-component
(Ξ» j β Ξ± Γβ Ξ² j) i (a , b)) β»ΒΉ
β¦
1β¦-III : ((Ξ± Γβ sup Ξ²) β (a , y)) β² sup (Ξ» i β Ξ± Γβ Ξ² i)
β¦
1β¦-III = β₯β₯-rec (β²-is-prop-valued _ _) β¦
1β¦-II
(initial-segment-of-sup-is-initial-segment-of-some-component
Ξ² y)
\end{code}
11 September 2024, added by Tom de Jong following a question by Martin Escardo.
The equations for successor and suprema uniquely specify the multiplication
operation and lead to a definition by transfinite recursion.
\begin{code}
private
successor-equation : (Ordinal π€ β Ordinal π€ β Ordinal π€) β π€ βΊ Μ
successor-equation {π€} _β_ =
(Ξ± Ξ² : Ordinal π€) β Ξ± β (Ξ² +β πβ) οΌ (Ξ± β Ξ²) +β Ξ±
suprema-equation : (Ordinal π€ β Ordinal π€ β Ordinal π€) β π€ βΊ Μ
suprema-equation {π€} _β_ =
(Ξ± : Ordinal π€) (I : π€ Μ ) (Ξ² : I β Ordinal π€)
β Ξ± β (sup Ξ²) οΌ sup (Ξ» i β Ξ± β Ξ² i)
recursive-equation : (Ordinal π€ β Ordinal π€ β Ordinal π€) β π€ βΊ Μ
recursive-equation {π€} _β_ =
(Ξ± Ξ² : Ordinal π€) β Ξ± β Ξ² οΌ sup (Ξ» b β (Ξ± β (Ξ² β b)) +β Ξ±)
successor-and-suprema-equations-give-recursive-equation
: (_β_ : Ordinal π€ β Ordinal π€ β Ordinal π€)
β successor-equation _β_
β suprema-equation _β_
β recursive-equation _β_
successor-and-suprema-equations-give-recursive-equation
_β_ β-succ β-sup Ξ± Ξ² = Ξ± β Ξ² οΌβ¨ I β©
(Ξ± β sup (Ξ» b β (Ξ² β b) +β πβ)) οΌβ¨ II β©
sup (Ξ» b β Ξ± β ((Ξ² β b) +β πβ)) οΌβ¨ III β©
sup (Ξ» b β (Ξ± β (Ξ² β b)) +β Ξ±) β
where
I = ap (Ξ± β_) (supremum-of-successors-of-initial-segments pt sr Ξ²)
II = β-sup Ξ± β¨ Ξ² β© (Ξ» b β (Ξ² β b) +β πβ)
III = ap sup (dfunext fe' (Ξ» b β β-succ Ξ± (Ξ² β b)))
Γβ-recursive-equation : recursive-equation {π€} _Γβ_
Γβ-recursive-equation =
successor-and-suprema-equations-give-recursive-equation
_Γβ_ Γβ-successor Γβ-preserves-suprema
Γβ-is-uniquely-specified'
: (_β_ : Ordinal π€ β Ordinal π€ β Ordinal π€)
β recursive-equation _β_
β (Ξ± Ξ² : Ordinal π€) β Ξ± β Ξ² οΌ Ξ± Γβ Ξ²
Γβ-is-uniquely-specified' {π€} _β_ β-rec Ξ± =
transfinite-induction-on-OO (Ξ» - β (Ξ± β -) οΌ (Ξ± Γβ -)) I
where
I : (Ξ² : Ordinal π€)
β ((b : β¨ Ξ² β©) β (Ξ± β (Ξ² β b)) οΌ (Ξ± Γβ (Ξ² β b)))
β (Ξ± β Ξ²) οΌ (Ξ± Γβ Ξ²)
I Ξ² IH = Ξ± β Ξ² οΌβ¨ II β©
sup (Ξ» b β (Ξ± β (Ξ² β b)) +β Ξ±) οΌβ¨ III β©
sup (Ξ» b β (Ξ± Γβ (Ξ² β b)) +β Ξ±) οΌβ¨ IV β©
Ξ± Γβ Ξ² β
where
II = β-rec Ξ± Ξ²
III = ap sup (dfunext fe' (Ξ» b β ap (_+β Ξ±) (IH b)))
IV = Γβ-recursive-equation Ξ± Ξ² β»ΒΉ
Γβ-is-uniquely-specified
: β! _β_ κ (Ordinal π€ β Ordinal π€ β Ordinal π€) ,
(successor-equation _β_) Γ (suprema-equation _β_)
Γβ-is-uniquely-specified {π€} =
(_Γβ_ , (Γβ-successor , Γβ-preserves-suprema)) ,
(Ξ» (_β_ , β-succ , β-sup) β
to-subtype-οΌ
(Ξ» F β Γ-is-prop (Ξ β-is-prop fe'
(Ξ» _ _ β underlying-type-is-set fe (OO π€)))
(Ξ β-is-prop fe'
(Ξ» _ _ _ β underlying-type-is-set fe (OO π€))))
(dfunext fe'
(Ξ» Ξ± β dfunext fe'
(Ξ» Ξ² β
(Γβ-is-uniquely-specified' _β_
(successor-and-suprema-equations-give-recursive-equation
_β_ β-succ β-sup)
Ξ± Ξ²) β»ΒΉ))))
\end{code}
Added 17 September 2024 by Fredrik Nordvall Forsberg:
Multiplication being monotone in the left argument is a constructive taboo.
Addition 22 November 2024: monotonicity in the left argument is
equivalent to Excluded Middle.
\begin{code}
Γβ-minimal : (Ξ± : Ordinal π€) (Ξ² : Ordinal π₯) (aβ : β¨ Ξ± β©) (bβ : β¨ Ξ² β©)
β is-least Ξ± aβ β is-least Ξ² bβ β is-minimal (Ξ± Γβ Ξ²) (aβ , bβ)
Γβ-minimal Ξ± Ξ² aβ bβ aβ-least bβ-least (a , b) (inl l)
= irrefl Ξ² b (bβ-least b b l)
Γβ-minimal Ξ± Ξ² aβ bβ aβ-least bβ-least (a , b) (inr (refl , l))
= irrefl Ξ± a (aβ-least a a l)
Γβ-least : (Ξ± : Ordinal π€) (Ξ² : Ordinal π₯) (aβ : β¨ Ξ± β©) (bβ : β¨ Ξ² β©)
β is-least Ξ± aβ β is-least Ξ² bβ β is-least (Ξ± Γβ Ξ²) (aβ , bβ)
Γβ-least Ξ± Ξ² aβ bβ aβ-least bβ-least =
minimal-is-least (Ξ± Γβ Ξ²) (aβ , bβ) (Γβ-minimal Ξ± Ξ² aβ bβ aβ-least bβ-least)
Γβ-left-monotonicity-implies-EM
: ((Ξ± Ξ² : Ordinal π€) (Ξ³ : Ordinal π₯) β Ξ± β΄ Ξ² β Ξ± Γβ Ξ³ β΄ Ξ² Γβ Ξ³)
β EM π€
Γβ-left-monotonicity-implies-EM hyp P isprop-P = III (f (β , inr β)) refl
where
Ξ± = πβ
Pβ = prop-ordinal P isprop-P
Ξ² = πβ +β Pβ
Ξ³ = πβ
I : Ξ± β΄ Ξ²
I = βΌ-gives-β΄ Ξ± Ξ²
(transport
(_βΌ Ξ²)
(πβ-right-neutral πβ)
(+β-right-monotone πβ πβ Pβ
(πβ-least Pβ)))
II : (Ξ± Γβ Ξ³) β΄ (Ξ² Γβ Ξ³)
II = hyp Ξ± Ξ² Ξ³ I
f = prβ II
f-sim = prβ II
f-preserves-least : f (β , inl β) οΌ (inl β , inl β)
f-preserves-least = simulations-preserve-least (Ξ± Γβ Ξ³) (Ξ² Γβ Ξ³)
(β , inl β)
(inl β , inl β)
f f-sim
(Γβ-least Ξ± Ξ³ β (inl β)
β-least
(left-preserves-least πβ πβ β β-least))
(Γβ-least Ξ² Ξ³ (inl β) (inl β)
(left-preserves-least πβ Pβ β β-least)
(left-preserves-least πβ πβ β β-least))
where
β-least : is-least (πβ {π€}) β
β-least β β = π-elim
III : (x : β¨ Ξ² Γβ Ξ³ β©) β f (β , inr β) οΌ x β P + Β¬ P
III (inl β , inl β) r = π-elim (+disjoint' IIIβ)
where
IIIβ = f (β , inr β) οΌβ¨ r β©
(inl β , inl β) οΌβ¨ f-preserves-least β»ΒΉ β©
f (β , inl β) β
IIIβ : inr β οΌ inl β
IIIβ = ap prβ (simulations-are-lc _ _ f f-sim IIIβ)
III (inl β , inr β) r = inr (Ξ» p β π-elim (+disjoint (IIIβ p)))
where
IIIβ : (p : P)
β Ξ£ x κ β¨ πβ Γβ πβ β© ,
(x βΊβ¨ πβ Γβ πβ β© (β , inr β)) Γ (f x οΌ (inr p , inl β))
IIIβ p = simulations-are-initial-segments (Ξ± Γβ Ξ³) (Ξ² Γβ Ξ³) f f-sim
(β , inr β) (inr p , inl β)
(transportβ»ΒΉ (Ξ» - β (inr p , inl β) βΊβ¨ Ξ² Γβ Ξ³ β© - ) r (inl β))
IIIβ : (p : P)
β Ξ£ x κ β¨ πβ Γβ πβ β© ,
(x βΊβ¨ πβ Γβ πβ β© (β , inr β)) Γ (f x οΌ (inr p , inl β))
β f (β , inl β) οΌ (inr p , inl β)
IIIβ p ((β , inl β) , l , q) = q
IIIβ p ((β , inr β) , l , q) = π-elim (irrefl (πβ Γβ πβ) (β , inr β) l)
IIIβ
: (p : P) β (inl β , inl β) οΌ (inr p , inl β)
IIIβ
p = (inl β , inl β) οΌβ¨ f-preserves-least β»ΒΉ β©
f (β , inl β) οΌβ¨ IIIβ p (IIIβ p) β©
(inr p , inl β) β
IIIβ : (p : P) β inl β οΌ inr p
IIIβ p = ap prβ (IIIβ
p)
III (inr p , c) r = inl p
EM-implies-Γβ-left-monotonicity
: EM (π€ β π₯)
β (Ξ± Ξ² : Ordinal π€) (Ξ³ : Ordinal π₯) β Ξ± β΄ Ξ² β (Ξ± Γβ Ξ³) β΄ (Ξ² Γβ Ξ³)
EM-implies-Γβ-left-monotonicity em Ξ± Ξ² Ξ³ (g , g-sim)
= βΌ-gives-β΄ (Ξ± Γβ Ξ³) (Ξ² Γβ Ξ³)
(EM-implies-order-preserving-gives-βΌ em (Ξ± Γβ Ξ³)
(Ξ² Γβ Ξ³)
(f , f-order-preserving))
where
f : β¨ Ξ± Γβ Ξ³ β© β β¨ Ξ² Γβ Ξ³ β©
f (a , c) = (g a , c)
f-order-preserving : is-order-preserving (Ξ± Γβ Ξ³) (Ξ² Γβ Ξ³) f
f-order-preserving (a , c) (a' , c') (inl l) = inl l
f-order-preserving (a , c) (a' , c) (inr (refl , l))
= inr (refl , simulations-are-order-preserving Ξ± Ξ² g g-sim a a' l)
EM-implies-induced-β΄-on-Γβ : EM π€
β (Ξ± Ξ² Ξ³ Ξ΄ : Ordinal π€)
β Ξ± β΄ Ξ³ β Ξ² β΄ Ξ΄ β (Ξ± Γβ Ξ²) β΄ (Ξ³ Γβ Ξ΄)
EM-implies-induced-β΄-on-Γβ em Ξ± Ξ² Ξ³ Ξ΄ π π =
β΄-trans (Ξ± Γβ Ξ²) (Ξ± Γβ Ξ΄) (Ξ³ Γβ Ξ΄)
(Γβ-right-monotone-β΄ Ξ± Ξ² Ξ΄ π)
(EM-implies-Γβ-left-monotonicity em Ξ± Ξ³ Ξ΄ π)
\end{code}
To prove that multiplication is left cancellable, we require the following
technical lemma: if Ξ± > π, then every simulation from Ξ± Γβ Ξ² to Ξ± Γβ Ξ³ + Ξ± β aβ
firstly never hits the second summand, and secondly, in the first component, it
decomposes as the identity on the first component and a function Ξ² β Ξ³ on the
second component, viz. one that is independent of the first component. The
inspiration for this lemma is the lemma simulation-product-decomposition below,
which only deals with simulations f : Ξ± Γβ Ξ² β΄ Ξ± Γβ Ξ³ (ie, with Ξ± β aβ = πβ in
the context of the current lemma). However the more general statement seems to
be necessary for proving left cancellability with respect to β΄, rather than
just with respect to οΌ.
\begin{code}
simulation-product-decomposition-generalized
: (Ξ± : Ordinal π€)
β πβ β² Ξ±
β (Ξ² Ξ³ : Ordinal π€)
β (aβ : β¨ Ξ± β©)
β ((f , _) : Ξ± Γβ Ξ² β΄ Ξ± Γβ Ξ³ +β (Ξ± β aβ))
β Ξ£ g κ (β¨ Ξ² β© β β¨ Ξ³ β©) , ((a : β¨ Ξ± β©) (b : β¨ Ξ² β©) β f (a , b) οΌ inl (a , g b))
simulation-product-decomposition-generalized {π€} Ξ± (aβ , aβ-least) = II
where
P : Ordinal π€ β π€ βΊ Μ
P Ξ² = (Ξ³ : Ordinal π€) (aβ : β¨ Ξ± β©)
((f , _) : Ξ± Γβ Ξ² β΄ Ξ± Γβ Ξ³ +β (Ξ± β aβ))
β (b : β¨ Ξ² β©) β Ξ£ c κ β¨ Ξ³ β© , ((a : β¨ Ξ± β©) β f (a , b) οΌ inl (a , c))
Pβ : Ordinal π€ β π€ βΊ Μ
Pβ Ξ² = (aβ : β¨ Ξ± β©) (Ξ³ : Ordinal π€)
((f , _) : Ξ± Γβ Ξ² β΄ Ξ± Γβ Ξ³ +β (Ξ± β aβ))
(b : β¨ Ξ² β©)
(x : β¨ (Ξ± Γβ Ξ³) +β (Ξ± β aβ) β©)
β f (aβ , b) οΌ x
β Ξ£ c κ β¨ Ξ³ β© , f (aβ , b) οΌ inl (aβ , c)
I : (Ξ² Ξ³ : Ordinal π€) (aβ : β¨ Ξ± β©)
((f , _) : Ξ± Γβ Ξ² β΄ (Ξ± Γβ Ξ³) +β (Ξ± β aβ))
(b : β¨ Ξ² β©)
β Ξ± Γβ (Ξ² β b) οΌ Ξ± Γβ Ξ³ +β (Ξ± β aβ) β f (aβ , b)
I Ξ² Ξ³ aβ π@(f , f-sim) b =
Ξ± Γβ (Ξ² β b) οΌβ¨ Iβ β©
Ξ± Γβ (Ξ² β b) +β (Ξ± β aβ) οΌβ¨ Γβ-β Ξ± Ξ² β»ΒΉ β©
Ξ± Γβ Ξ² β (aβ , b) οΌβ¨ Iβ β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β f (aβ , b) β
where
Iβ = πβ-right-neutral
(Ξ± Γβ (Ξ² β b)) β»ΒΉ β ap (Ξ± Γβ (Ξ² β b) +β_)
aβ-least
Iβ = simulations-preserve-β _ _ π (aβ , b)
πβ : (Ξ² : Ordinal π€)
β ((b : β¨ Ξ² β©) β P (Ξ² β b))
β Pβ Ξ²
πβ Ξ² IH aβ Ξ³ π@(f , _) b (inl (a' , c)) e = c , III
where
eq = Ξ± Γβ (Ξ² β b) οΌβ¨ I Ξ² Ξ³ aβ π b β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β f (aβ , b) οΌβ¨ ap ((Ξ± Γβ Ξ³ +β (Ξ± β aβ)) β_) e β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β inl (a' , c) οΌβ¨ +β-β-left (a' , c) β»ΒΉ β©
Ξ± Γβ Ξ³ β (a' , c) οΌβ¨ Γβ-β Ξ± Ξ³ β©
Ξ± Γβ (Ξ³ β c) +β (Ξ± β a') β
π' : Ξ± Γβ (Ξ² β b) β΄ Ξ± Γβ (Ξ³ β c) +β (Ξ± β a')
f' = Idtofunβ eq
π' = f' , Idtofunβ-is-simulation eq
π'β»ΒΉ : Ξ± Γβ (Ξ³ β c) +β (Ξ± β a') β΄ Ξ± Γβ (Ξ² β b)
f'β»ΒΉ = Idtofunβ (eq β»ΒΉ)
π'β»ΒΉ = f'β»ΒΉ , Idtofunβ-is-simulation (eq β»ΒΉ)
II : a' οΌ aβ
II = Extensionality Ξ± a' aβ
(Ξ» x l β π-elim (IIβ x l))
(Ξ» x l β π-elim (transportβ»ΒΉ β¨_β© aβ-least (x , l)))
where
IIβ : (x : β¨ Ξ± β©) β Β¬ (x βΊβ¨ Ξ± β© a')
IIβ x l = +disjoint IIβ
where
y : β¨ Ξ± Γβ (Ξ² β b) β©
y = f'β»ΒΉ (inr (x , l))
yβ = prβ y
yβ = prβ y
z : β¨ Ξ³ β c β©
z = prβ (IH b (Ξ³ β c) a' π' yβ)
IIβ = inl (yβ , z) οΌβ¨ prβ (IH b (Ξ³ β c) a' π' yβ) yβ β»ΒΉ β©
f' (f'β»ΒΉ (inr (x , l))) οΌβ¨ Idtofunβ-retraction eq (inr (x , l)) β©
inr (x , l) β
III = f (aβ , b) οΌβ¨ e β©
inl (a' , c) οΌβ¨ ap (Ξ» - β inl (- , c)) II β©
inl (aβ , c) β
πβ Ξ² _ aβ Ξ³ π@(f , f-sim) b (inr (x , p)) e = π-elim (Ξ½ (aβ , refl))
where
eq-I = Ξ± Γβ (Ξ² β b) οΌβ¨ I Ξ² Ξ³ aβ π b β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β f (aβ , b) οΌβ¨ ap ((Ξ± Γβ Ξ³ +β (Ξ± β aβ)) β_) e β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β inr (x , p) οΌβ¨ +β-β-right (x , p) β»ΒΉ β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ β (x , p)) οΌβ¨ eq-Iβ β©
Ξ± Γβ Ξ³ +β (Ξ± β x) β
where
eq-Iβ = ap ((Ξ± Γβ Ξ³) +β_) (iterated-β Ξ± aβ x p)
eq-II = Ξ± Γβ Ξ³ +β ((Ξ± β x) +β Ξ±) οΌβ¨ +β-assoc (Ξ± Γβ Ξ³) (Ξ± β x) Ξ± β»ΒΉ β©
Ξ± Γβ Ξ³ +β (Ξ± β x) +β Ξ± οΌβ¨ ap (_+β Ξ±) eq-I β»ΒΉ β©
Ξ± Γβ (Ξ² β b) +β Ξ± οΌβ¨ Γβ-successor Ξ± (Ξ² β b) β»ΒΉ β©
Ξ± Γβ ((Ξ² β b) +β πβ) β
ineq-I : Ξ± Γβ Ξ³ +β ((Ξ± β x) +β Ξ±) β΄ Ξ± Γβ Ξ³ +β (Ξ± β aβ)
ineq-I = transportβ»ΒΉ
(Ξ» - β - β΄ Ξ± Γβ Ξ³ +β (Ξ± β aβ))
eq-II
(β΄-trans
(Ξ± Γβ ((Ξ² β b) +β πβ))
(Ξ± Γβ Ξ²)
(Ξ± Γβ Ξ³ +β (Ξ± β aβ))
(Γβ-right-monotone-β΄ Ξ± ((Ξ² β b) +β πβ) Ξ²
(upper-bound-of-successors-of-initial-segments Ξ² b))
π)
ineq-II : (Ξ± β x) +β Ξ± β΄ Ξ± β aβ
ineq-II = +β-left-reflects-β΄ (Ξ± Γβ Ξ³) ((Ξ± β x) +β Ξ±) (Ξ± β aβ) ineq-I
h : β¨ Ξ± β© β β¨ Ξ± β aβ β©
h a = [ (Ξ± β x) +β Ξ± , Ξ± β aβ ]β¨ ineq-II β© (inr a)
h-order-preserving : is-order-preserving Ξ± (Ξ± β aβ) h
h-order-preserving a a' l =
simulations-are-order-preserving
((Ξ± β x) +β Ξ±)
(Ξ± β aβ)
[ (Ξ± β x) +β Ξ± , Ξ± β aβ ]β¨ ineq-II β©
([ (Ξ± β x) +β Ξ± , Ξ± β aβ ]β¨ ineq-II β©-is-simulation)
(inr a) (inr a') l
Ξ½ : Β¬ (Ξ± β aβ β² Ξ±)
Ξ½ = order-preserving-gives-not-β² Ξ± (Ξ± β aβ)
(h , h-order-preserving)
πβ : (Ξ² : Ordinal π€)
β ((b : β¨ Ξ² β©) β P (Ξ² β b))
β P Ξ²
πβ Ξ² IH Ξ³ aβ π@(f , f-sim) b = c , c-satisfies-equation
where
c : β¨ Ξ³ β©
c = prβ (πβ Ξ² IH aβ Ξ³ π b (f (aβ , b)) refl)
c-spec : f (aβ , b) οΌ inl (aβ , c)
c-spec = prβ (πβ Ξ² IH aβ Ξ³ π b (f (aβ , b)) refl)
c-satisfies-equation : (a : β¨ Ξ± β©) β f (a , b) οΌ inl (a , c)
c-satisfies-equation a = β-lc (Ξ± Γβ Ξ³ +β (Ξ± β aβ)) _ _ eq-II
where
eq-I = Ξ± Γβ (Ξ² β b) οΌβ¨ I Ξ² Ξ³ aβ π b β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β f (aβ , b) οΌβ¨ eq-Iβ β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β inl (aβ , c) οΌβ¨ +β-β-left (aβ , c) β»ΒΉ β©
Ξ± Γβ Ξ³ β (aβ , c) οΌβ¨ Γβ-β Ξ± Ξ³ β©
Ξ± Γβ (Ξ³ β c) +β (Ξ± β aβ) οΌβ¨ eq-Iβ β©
Ξ± Γβ (Ξ³ β c) β
where
eq-Iβ = ap (((Ξ± Γβ Ξ³) +β (Ξ± β aβ)) β_) c-spec
eq-Iβ = ap ((Ξ± Γβ (Ξ³ β c)) +β_) aβ-least β»ΒΉ
β πβ-right-neutral (Ξ± Γβ (Ξ³ β c))
eq-II = Ξ± Γβ Ξ³ +β (Ξ± β aβ) β f (a , b) οΌβ¨ eq-IIβ β©
Ξ± Γβ Ξ² β (a , b) οΌβ¨ Γβ-β Ξ± Ξ² β©
Ξ± Γβ (Ξ² β b) +β (Ξ± β a) οΌβ¨ ap (_+β (Ξ± β a)) eq-I β©
Ξ± Γβ (Ξ³ β c) +β (Ξ± β a) οΌβ¨ Γβ-β Ξ± Ξ³ β»ΒΉ β©
Ξ± Γβ Ξ³ β (a , c) οΌβ¨ +β-β-left (a , c) β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β inl (a , c) β
where
eq-IIβ = (simulations-preserve-β _ _ π (a , b)) β»ΒΉ
π : (Ξ² : Ordinal π€) β P Ξ²
π = transfinite-induction-on-OO P πβ
II : (Ξ² Ξ³ : Ordinal π€)
β (aβ : β¨ Ξ± β©)
β ((f , _) : Ξ± Γβ Ξ² β΄ Ξ± Γβ Ξ³ +β (Ξ± β aβ))
β Ξ£ g κ (β¨ Ξ² β© β β¨ Ξ³ β©) ,
((a : β¨ Ξ± β©) (b : β¨ Ξ² β©) β f (a , b) οΌ inl (a , g b))
II Ξ² Ξ³ aβ π = (Ξ» b β prβ (π Ξ² Ξ³ aβ π b)) ,
(Ξ» a b β prβ (π Ξ² Ξ³ aβ π b) a)
Γβ-left-cancellable-β΄-generalized : (Ξ± Ξ² Ξ³ : Ordinal π€) (aβ : β¨ Ξ± β©)
β πβ β² Ξ±
β Ξ± Γβ Ξ² β΄ (Ξ± Γβ Ξ³) +β (Ξ± β aβ)
β Ξ² β΄ Ξ³
Γβ-left-cancellable-β΄-generalized Ξ± Ξ² Ξ³ aβ p@(aβ , aβ-least) π@(f , f-sim) =
(g , g-is-initial-segment , g-is-order-preserving)
where
g : β¨ Ξ² β© β β¨ Ξ³ β©
g = prβ (simulation-product-decomposition-generalized Ξ± p Ξ² Ξ³ aβ π)
g-property : (a : β¨ Ξ± β©) (b : β¨ Ξ² β©) β f (a , b) οΌ inl (a , g b)
g-property = prβ (simulation-product-decomposition-generalized Ξ± p Ξ² Ξ³ aβ π)
g-is-order-preserving : is-order-preserving Ξ² Ξ³ g
g-is-order-preserving b b' l = III II
where
I : f (aβ , b) βΊβ¨ (Ξ± Γβ Ξ³) +β (Ξ± β aβ) β© f (aβ , b')
I = simulations-are-order-preserving _ _ f f-sim (aβ , b) (aβ , b') (inl l)
II : inl (aβ , g b) βΊβ¨ (Ξ± Γβ Ξ³) +β (Ξ± β aβ) β© inl (aβ , g b')
II = transportβ (Ξ» x y β x βΊβ¨ ((Ξ± Γβ Ξ³) +β (Ξ± β aβ))β© y)
(g-property aβ b)
(g-property aβ b')
I
III : (aβ , g b) βΊβ¨ (Ξ± Γβ Ξ³) β© (aβ , g b') β g b βΊβ¨ Ξ³ β© g b'
III (inl p) = p
III (inr (r , q)) = π-elim (irrefl Ξ± aβ q)
g-is-initial-segment : is-initial-segment Ξ² Ξ³ g
g-is-initial-segment b c l = b' , II k , III
where
lβ : inl (aβ , c) βΊβ¨ (Ξ± Γβ Ξ³) +β (Ξ± β aβ) β© inl (aβ , g b)
lβ = inl l
lβ : inl (aβ , c) βΊβ¨ (Ξ± Γβ Ξ³) +β (Ξ± β aβ) β© f (aβ , b)
lβ = transportβ»ΒΉ (Ξ» - β inl (aβ , c) βΊβ¨ ((Ξ± Γβ Ξ³) +β (Ξ± β aβ))β© -)
(g-property aβ b)
lβ
Ο : Ξ£ y κ β¨ Ξ± Γβ Ξ² β© , (y βΊβ¨ Ξ± Γβ Ξ² β© (aβ , b)) Γ (f y οΌ (inl (aβ , c)))
Ο = simulations-are-initial-segments _ _ f f-sim (aβ , b) (inl (aβ , c)) lβ
a' = prβ (prβ Ο)
b' = prβ (prβ Ο)
k = prβ (prβ Ο)
e = prβ (prβ Ο)
II : (a' , b') βΊβ¨ Ξ± Γβ Ξ² β© (aβ , b) β b' βΊβ¨ Ξ² β© b
II (inl p) = p
II (inr (r , q)) = π-elim (Idtofunβ (aβ-least β»ΒΉ) (a' , q))
III : g b' οΌ c
III = ap prβ (inl-lc (inl (a' , g b') οΌβ¨ g-property a' b' β»ΒΉ β©
f (a' , b') οΌβ¨ e β©
inl (aβ , c) β))
Γβ-left-cancellable-β΄ : (Ξ± Ξ² Ξ³ : Ordinal π€)
β πβ β² Ξ±
β (Ξ± Γβ Ξ²) β΄ (Ξ± Γβ Ξ³)
β Ξ² β΄ Ξ³
Γβ-left-cancellable-β΄ Ξ± Ξ² Ξ³ p@(aβ , aβ-least) π =
Γβ-left-cancellable-β΄-generalized Ξ± Ξ² Ξ³ aβ p
(transport (Ξ± Γβ Ξ² β΄_)
(Ξ± Γβ Ξ³ οΌβ¨ πβ-right-neutral (Ξ± Γβ Ξ³) β»ΒΉ β©
Ξ± Γβ Ξ³ +β πβ οΌβ¨ ap ((Ξ± Γβ Ξ³) +β_) aβ-least β©
Ξ± Γβ Ξ³ +β (Ξ± β aβ) β)
π)
\end{code}
The following result states that multiplication for ordinals can be cancelled on
the left. Interestingly, Andrew Swan [Swa18] proved that the corresponding
result for sets is not provable constructively already for Ξ± = π: there are
toposes where the statement
π Γ X β π Γ Y β X β Y
is not true for certain objects X and Y in the topos.
[Swa18] Andrew Swan. On Dividing by Two in Constructive Mathematics
2018. https://arxiv.org/abs/1804.04490
\begin{code}
Γβ-left-cancellable : (Ξ± Ξ² Ξ³ : Ordinal π€)
β πβ β² Ξ±
β (Ξ± Γβ Ξ²) οΌ (Ξ± Γβ Ξ³)
β Ξ² οΌ Ξ³
Γβ-left-cancellable {π€ = π€} Ξ± Ξ² Ξ³ p e = β΄-antisym Ξ² Ξ³ (f Ξ² Ξ³ e) (f Ξ³ Ξ² (e β»ΒΉ))
where
f : (Ξ² Ξ³ : Ordinal π€) β (Ξ± Γβ Ξ²) οΌ (Ξ± Γβ Ξ³) β Ξ² β΄ Ξ³
f Ξ² Ξ³ e = Γβ-left-cancellable-β΄ Ξ± Ξ² Ξ³ p (ββ-to-β΄ (Ξ± Γβ Ξ²) (Ξ± Γβ Ξ³)
(idtoeqβ (Ξ± Γβ Ξ²) (Ξ± Γβ Ξ³) e))
\end{code}
As mentioned above, the generalized decomposition lemma for simulation from a
product was inspired by the following less general lemma for which we give both
an indirect and a direct proof (with more general universe levels).
\begin{code}
simulation-product-decomposition' : (Ξ± Ξ² Ξ³ : Ordinal π€)
((aβ , aβ-least) : πβ β² Ξ±)
((f , _) : (Ξ± Γβ Ξ²) β΄ (Ξ± Γβ Ξ³))
(a : β¨ Ξ± β©) (b : β¨ Ξ² β©)
β f (a , b) οΌ (a , prβ (f (aβ , b)))
simulation-product-decomposition' Ξ± Ξ² Ξ³ (aβ , aβ-least) π@(f , f-sim) a = III
where
π' : Ξ± Γβ Ξ² β΄ Ξ± Γβ Ξ³ +β (Ξ± β a)
π' = β΄-trans (Ξ± Γβ Ξ²) (Ξ± Γβ Ξ³) (Ξ± Γβ Ξ³ +β (Ξ± β a))
π
(+β-left-β΄ (Ξ± Γβ Ξ³) (Ξ± β a))
f' = [ Ξ± Γβ Ξ² , Ξ± Γβ Ξ³ +β (Ξ± β a) ]β¨ π' β©
I : Ξ£ g κ (β¨ Ξ² β© β β¨ Ξ³ β©) ,
((a' : β¨ Ξ± β©) (b : β¨ Ξ² β©) β f' (a' , b) οΌ inl (a' , g b))
I = simulation-product-decomposition-generalized Ξ± (aβ , aβ-least) Ξ² Ξ³ a π'
g = prβ I
g-property = prβ I
II : (b : β¨ Ξ² β©) β g b οΌ prβ (f (aβ , b))
II b = ap prβ (inl-lc (inl (aβ , g b) οΌβ¨ (g-property aβ b) β»ΒΉ β©
f' (aβ , b) οΌβ¨ refl β©
inl (f (aβ , b)) β))
III : (b : β¨ Ξ² β©)
β f (a , b) οΌ a , prβ (f (aβ , b))
III b =
inl-lc (inl (f (a , b)) οΌβ¨ g-property a b β©
inl (a , g b) οΌβ¨ ap (Ξ» - β inl (a , -)) (II b) β©
inl (a , prβ (f (aβ , b))) β)
simulation-product-decomposition
: (Ξ± : Ordinal π€) (Ξ² Ξ³ : Ordinal π₯)
((aβ , aβ-least) : πβ β² Ξ±)
((f , _) : (Ξ± Γβ Ξ²) β΄ (Ξ± Γβ Ξ³))
β (a : β¨ Ξ± β©) (b : β¨ Ξ² β©) β f (a , b) οΌ (a , prβ (f (aβ , b)))
simulation-product-decomposition {π€} {π₯} Ξ± Ξ² Ξ³ (aβ , aβ-least)
(f , sim@(init-seg , order-pres)) a b = I
where
f' : β¨ Ξ± Γβ Ξ² β© β β¨ Ξ± Γβ Ξ³ β©
f' (a , b) = (a , prβ (f (aβ , b)))
P : β¨ Ξ± Γβ Ξ² β© β π€ β π₯ Μ
P (a , b) = (f (a , b)) οΌ f' (a , b)
I : P (a , b)
I = Transfinite-induction (Ξ± Γβ Ξ²) P II (a , b)
where
II : (x : β¨ Ξ± Γβ Ξ² β©)
β ((y : β¨ Ξ± Γβ Ξ² β©) β y βΊβ¨ Ξ± Γβ Ξ² β© x β P y)
β P x
II (a , b) IH = Extensionality (Ξ± Γβ Ξ³) (f (a , b)) (f' (a , b)) III IV
where
III : (u : β¨ Ξ± Γβ Ξ³ β©) β u βΊβ¨ Ξ± Γβ Ξ³ β© f (a , b) β u βΊβ¨ Ξ± Γβ Ξ³ β© f' (a , b)
III (a' , c') p = transport (Ξ» - β - βΊβ¨ Ξ± Γβ Ξ³ β© f' (a , b)) IIIβ (IIIβ p')
where
IIIβ : Ξ£ (a'' , b') κ β¨ Ξ± Γβ Ξ² β© , (a'' , b') βΊβ¨ Ξ± Γβ Ξ² β© (a , b)
Γ (f (a'' , b') οΌ a' , c')
IIIβ = init-seg (a , b) (a' , c') p
a'' = prβ (prβ IIIβ)
b' = prβ (prβ IIIβ)
p' = prβ (prβ IIIβ)
eq : f (a'' , b') οΌ (a' , c')
eq = prβ (prβ IIIβ)
IIIβ : f' (a'' , b') οΌ (a' , c')
IIIβ = IH (a'' , b') p' β»ΒΉ β eq
IIIβ : (a'' , b') βΊβ¨ Ξ± Γβ Ξ² β© (a , b)
β f' (a'' , b') βΊβ¨ Ξ± Γβ Ξ³ β© f' (a , b)
IIIβ (inl q) = h (order-pres (aβ' , b') (aβ , b) (inl q))
where
aβ' : β¨ Ξ± β©
aβ' = prβ (f (aβ , b))
ih : (f (aβ' , b')) οΌ f' (aβ' , b')
ih = IH (aβ' , b') (inl q)
h : f (aβ' , b') βΊβ¨ Ξ± Γβ Ξ³ β© f (aβ , b)
β f' (a'' , b') βΊβ¨ Ξ± Γβ Ξ³ β© f' (a , b)
h (inl r) = inl (transport (Ξ» - β - βΊβ¨ Ξ³ β© prβ (f (aβ , b)))
(ap prβ ih) r)
h (inr (_ , r)) = π-elim (irrefl Ξ± aβ' (transport (Ξ» - β - βΊβ¨ Ξ± β© aβ')
(ap prβ ih) r))
IIIβ (inr (e , q)) = inr (ap (Ξ» - β prβ (f (aβ , -))) e , q)
IV : (u : β¨ Ξ± Γβ Ξ³ β©) β u βΊβ¨ Ξ± Γβ Ξ³ β© f' (a , b) β u βΊβ¨ Ξ± Γβ Ξ³ β© f (a , b)
IV (a' , c') (inl p) = lβ (a' , c') (inl p)
where
lβ : aβ βΌβ¨ Ξ± β© a
lβ x p = π-elim (transport β¨_β© (aβ-least β»ΒΉ) (x , p))
lβ : f (aβ , b) βΌβ¨ Ξ± Γβ Ξ³ β© f (a , b)
lβ = simulations-are-monotone _ _
f sim (aβ , b) (a , b) (Γβ-βΌ-left Ξ± Ξ² lβ)
IV (a' , c') (inr (r , q)) =
transport (Ξ» - β - βΊβ¨ Ξ± Γβ Ξ³ β© f (a , b)) eq
(order-pres (a' , b) (a , b) (inr (refl , q)))
where
eq = f (a' , b) οΌβ¨ IH (a' , b) (inr (refl , q)) β©
f' (a' , b) οΌβ¨ refl β©
(a' , prβ (f (aβ , b))) οΌβ¨ ap (a' ,_) (r β»ΒΉ) β©
(a' , c') β
\end{code}
Using similar techniques, we can also prove that multiplication is
left cancellable with respect to β².
\begin{code}
simulation-product-decomposition-leftover-empty
: (Ξ± Ξ² Ξ³ : Ordinal π€)
β πβ β² Ξ±
β (a : β¨ Ξ± β©)
β (Ξ± Γβ Ξ²) οΌ (Ξ± Γβ Ξ³ +β (Ξ± β a))
β (Ξ± Γβ Ξ²) οΌ (Ξ± Γβ Ξ³)
simulation-product-decomposition-leftover-empty Ξ± Ξ² Ξ³ (aβ , p) a e = II
where
a-least : (x : β¨ Ξ± β©) β Β¬ (x βΊβ¨ Ξ± β© a)
a-least x l = +disjoint (Ξ½ β»ΒΉ)
where
π : Ξ± Γβ Ξ² β΄ Ξ± Γβ Ξ³ +β (Ξ± β a)
f = Idtofunβ e
π = f , Idtofunβ-is-simulation e
πβ»ΒΉ : Ξ± Γβ Ξ³ +β (Ξ± β a) β΄ Ξ± Γβ Ξ²
fβ»ΒΉ = Idtofunβ (e β»ΒΉ)
πβ»ΒΉ = fβ»ΒΉ , Idtofunβ-is-simulation (e β»ΒΉ)
f-decomposition
: Ξ£ g κ (β¨ Ξ² β© β β¨ Ξ³ β©) ,
((a : β¨ Ξ± β©) (b : β¨ Ξ² β©) β f (a , b) οΌ inl (a , g b) )
f-decomposition =
simulation-product-decomposition-generalized Ξ± (aβ , p) Ξ² Ξ³ a π
g = prβ f-decomposition
Ξ½ = (inr (x , l)) οΌβ¨ (Idtofunβ-retraction e (inr (x , l))) β»ΒΉ β©
f (fβ»ΒΉ (inr (x , l))) οΌβ¨ prβ (f-decomposition) x' y' β©
inl (x' , g y') β
where
x' = prβ (fβ»ΒΉ (inr (x , l)))
y' = prβ (fβ»ΒΉ (inr (x , l)))
I : a οΌ aβ
I = Extensionality Ξ± a aβ (Ξ» x l β π-elim (a-least x l))
(Ξ» x l β π-elim (Idtofunβ (p β»ΒΉ) (x , l)))
II = Ξ± Γβ Ξ² οΌβ¨ e β©
Ξ± Γβ Ξ³ +β (Ξ± β a) οΌβ¨ ap ((Ξ± Γβ Ξ³) +β_) (ap (Ξ± β_) I β p β»ΒΉ) β©
Ξ± Γβ Ξ³ +β πβ οΌβ¨ πβ-right-neutral (Ξ± Γβ Ξ³) β©
Ξ± Γβ Ξ³ β
Γβ-left-cancellable-β² : (Ξ± Ξ² Ξ³ : Ordinal π€)
β πβ β² Ξ±
β Ξ± Γβ Ξ² β² Ξ± Γβ Ξ³
β Ξ² β² Ξ³
Γβ-left-cancellable-β² Ξ± Ξ² Ξ³ Ξ±-positive ((a , c) , p) = c , III
where
I : Ξ± Γβ Ξ² οΌ Ξ± Γβ (Ξ³ β c) +β (Ξ± β a)
I = p β Γβ-β Ξ± Ξ³
II : Ξ± Γβ Ξ² οΌ Ξ± Γβ (Ξ³ β c)
II = simulation-product-decomposition-leftover-empty Ξ± Ξ² (Ξ³ β c) Ξ±-positive a I
III : Ξ² οΌ Ξ³ β c
III = Γβ-left-cancellable Ξ± Ξ² (Ξ³ β c) Ξ±-positive II
\end{code}
Added 15 July 2025 by Tom de Jong.
\begin{code}
Γβ-as-large-as-right-factor-implies-EM
: ((Ξ± Ξ² : Ordinal π€) β πβ β² Ξ± β Ξ² β΄ Ξ± Γβ Ξ²) β EM π€
Γβ-as-large-as-right-factor-implies-EM hyp P P-is-prop = IV (f (inr β)) refl
where
Pβ = prop-ordinal P P-is-prop
Ξ± = πβ +β Pβ
Ξ² = πβ
π : Ξ² β΄ Ξ± Γβ Ξ²
π = hyp Ξ± Ξ² (inl β , (πβ-β β»ΒΉ β +β-β-left β))
f = [ Ξ² , Ξ± Γβ Ξ² ]β¨ π β©
f-is-sim : is-simulation Ξ² (Ξ± Γβ Ξ²) f
f-is-sim = [ Ξ² , Ξ± Γβ Ξ² ]β¨ π β©-is-simulation
I : (p : P) β f (inr β) οΌ (inr p , inl β)
I p = β-lc (Ξ± Γβ Ξ²) (f (inr β)) (inr p , inl β) e
where
e = (Ξ± Γβ Ξ²) β f (inr β) οΌβ¨ eβ β©
Ξ² β inr β οΌβ¨ eβ β©
πβ οΌβ¨ eβ β©
Ξ± β inr p οΌβ¨ eβ β©
Ξ± Γβ πβ +β (Ξ± β inr p) οΌβ¨ eβ
β©
Ξ± Γβ (Ξ² β inl β) +β (Ξ± β inr p) οΌβ¨ Γβ-β Ξ± Ξ² β»ΒΉ β©
(Ξ± Γβ Ξ²) β (inr p , inl β) β
where
eβ = (simulations-preserve-β Ξ² (Ξ± Γβ Ξ²) π (inr β)) β»ΒΉ
eβ = +β-β-right β β»ΒΉ β ap (πβ +β_) πβ-β β πβ-right-neutral πβ
eβ = (πβ-right-neutral πβ) β»ΒΉ
β ap (πβ +β_) ((prop-ordinal-β P-is-prop p) β»ΒΉ) β +β-β-right p
eβ = (ap (_+β (Ξ± β inr p)) (Γβ-πβ-right Ξ±)
β πβ-left-neutral (Ξ± β inr p)) β»ΒΉ
eβ
= ap (Ξ» - β Ξ± Γβ - +β (Ξ± β inr p)) (πβ-β β»ΒΉ β +β-β-left β)
II : (x : β¨ Ξ± β©) β f (inr β) οΌ (x , inr β) β Β¬ P
II x e p = +disjoint (ap prβ ((I p) β»ΒΉ β e))
III : f (inr β) β (inl β , inl β)
III h = +disjoint (simulations-are-lc Ξ² (Ξ± Γβ Ξ²) f f-is-sim (e β h β»ΒΉ))
where
e : f (inl β) οΌ (inl β , inl β)
e = simulations-preserve-least
Ξ² (Ξ± Γβ Ξ²) (inl β) (inl β , inl β) f f-is-sim
Ξ²-least
(Γβ-least Ξ± Ξ² (inl β) (inl β) (+β-least πβ Pβ β πβ-least) Ξ²-least)
where
Ξ²-least : is-least Ξ² (inl β)
Ξ²-least = +β-least πβ πβ β πβ-least
IV : (x : β¨ Ξ± Γβ Ξ² β©) β f (inr β) οΌ x β P + Β¬ P
IV (inl β , inl β) e = π-elim (III e)
IV (inr p , inl β) e = inl p
IV (inl β , inr β) e = inr (II (inl β) e)
IV (inr p , inr β) e = inl p
EM-implies-Γβ-as-large-as-right-factor
: EM π€
β (Ξ± Ξ² : Ordinal π€) β πβ β² Ξ± β Ξ² β΄ Ξ± Γβ Ξ²
EM-implies-Γβ-as-large-as-right-factor em Ξ± Ξ² (aβ , _) =
βΌ-gives-β΄ Ξ² (Ξ± Γβ Ξ²)
(EM-implies-order-preserving-gives-βΌ em Ξ² (Ξ± Γβ Ξ²) (f , I))
where
f : β¨ Ξ² β© β β¨ Ξ± Γβ Ξ² β©
f b = (aβ , b)
I : is-order-preserving Ξ² (Ξ± Γβ Ξ²) f
I b b' l = inl l
\end{code}
Added in September 2025 by Fredrik Nordvall Forsberg.
Moved here from ArithmeticReflection by Tom de Jong in October 2025.
Some special cases of multiplication by Ο.
\begin{code}
πβΓβΟ-is-Ο : πβ Γβ Ο οΌ Ο
πβΓβΟ-is-Ο = πβ-left-neutral-Γβ Ο
πβΓβΟ-is-Ο : πβ Γβ Ο οΌ Ο
πβΓβΟ-is-Ο = eqtoidβ (ua _) fe' (πβ Γβ Ο) Ο h
where
open import Naturals.Addition hiding (_+_)
open import Naturals.Division
open import Naturals.Order
open import Naturals.Properties
f : β¨ πβ β© Γ β β β
f (inl β , n) = double n
f (inr β , n) = sdouble n
g' : (n : β) β division-theorem n 1 β β¨ πβ β© Γ β
g' n (k , 0 , p , l) = inl β , k
g' n (k , 1 , p , l) = inr β , k
g : β β β¨ πβ β© Γ β
g n = g' n (division n 1)
f-equiv : is-equiv f
f-equiv = qinvs-are-equivs f (g , (Ξ· , Ο΅))
where
Ξ·' : (x : β¨ πβ β© Γ β)(m : β) β m οΌ f x β (d : division-theorem m 1)
β g' m d οΌ x
Ξ·' (inl β , n) m r (k , 0 , p , l) = ap (inl β ,_) (double-lc Ο)
where
Ο : double k οΌ double n
Ο = double-is-self-addition k β p β»ΒΉ β r
Ξ·' (inr β , n) m r (k , 0 , p , l) = π-elim (double-is-not-sdouble Ο)
where
Ο : double k οΌ sdouble n
Ο = double-is-self-addition k β p β»ΒΉ β r
Ξ·' (inl β , n) m r (k , 1 , p , l) = π-elim (double-is-not-sdouble Ο)
where
Ο : double n οΌ sdouble k
Ο = r β»ΒΉ β p β ap succ (double-is-self-addition k β»ΒΉ)
Ξ·' (inr β , n) m r (k , 1 , p , l) = ap (inr β ,_) (sdouble-lc Ο)
where
Ο : sdouble k οΌ sdouble n
Ο = ap succ (double-is-self-addition k) β p β»ΒΉ β r
Ξ· : (Ξ» x β g (f x)) βΌ id
Ξ· x = Ξ·' x (f x) refl (division (f x) 1)
Ο΅' : (n : β) β (d : division-theorem n 1) β f (g' n d) οΌ n
Ο΅' n (k , 0 , refl , l) = double-is-self-addition k
Ο΅' n (k , 1 , refl , l) = ap succ (double-is-self-addition k)
Ο΅ : (Ξ» n β f (g n)) βΌ id
Ο΅ n = Ο΅' n (division n 1)
f-preserves-order : (x y : β¨ πβ β© Γ β) β x βΊβ¨ πβ Γβ Ο β© y β f x βΊβ¨ Ο β© f y
f-preserves-order (inl β , x) (inl β , y) (inl p) =
transportββ»ΒΉ (Ξ» - β succ - β€β_)
(double-is-self-addition x)
(double-is-self-addition y)
(β€-adding x y (succ x) y (β€-trans x (succ x) y (β€-succ x) p) p)
f-preserves-order (inl β , x) (inr β , y) (inl p) =
transportββ»ΒΉ _β€β_ (double-is-self-addition x) (double-is-self-addition y)
(β€-adding x y x y (β€-trans x (succ x) y (β€-succ x) p)
(β€-trans x (succ x) y (β€-succ x) p))
f-preserves-order (inr β , x) (inl β , y) (inl p) =
transportββ»ΒΉ (Ξ» - β succ - β€β_)
(ap succ (double-is-self-addition x) β succ-left x x β»ΒΉ)
(double-is-self-addition y)
(β€-adding (succ x) y (succ x) y p p)
f-preserves-order (inr β , x) (inr β , y) (inl p) =
transportββ»ΒΉ (Ξ» - β succ - β€β_)
(double-is-self-addition x)
(double-is-self-addition y)
(β€-adding x y (succ x) y (β€-trans x (succ x) y (β€-succ x) p) p)
f-preserves-order (inl β , x) (inr β , x) (inr (refl , _)) = β€-refl _
f-preserves-order (inr β , x) (inl β , x) (inr (refl , q)) = π-elim q
f-preserves-order (inr β , x) (inr β , x) (inr (refl , q)) = π-elim q
f-reflects-order : (x y : β¨ πβ β© Γ β) β f x βΊβ¨ Ο β© f y β x βΊβ¨ πβ Γβ Ο β© y
f-reflects-order (inl β , x) (inl β , y) p = inl (double-reflects-< p)
f-reflects-order (inl β , x) (inr β , y) p = Ο (<-trichotomous x y)
where
Ο : (x <β y) + (x οΌ y) + (y <β x) β (x <β y) + (x οΌ y) Γ π
Ο (inl l) = inl l
Ο (inr (inl e)) = inr (e , β)
Ο (inr (inr g)) =
π-elim (less-than-not-equal y y (<-β€-trans y x y g (double-reflects-β€ p)) refl)
f-reflects-order (inr β , x) (inl β , y) p = inl (double-reflects-β€ p)
f-reflects-order (inr β , x) (inr β , y) p = inl (double-reflects-< p)
h : (πβ Γβ Ο) ββ Ο
h = f , order-preserving-reflecting-equivs-are-order-equivs (πβ Γβ Ο) Ο f
f-equiv f-preserves-order f-reflects-order
\end{code}