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}