Fredrik Nordvall Forsberg, 13 November 2023. In collaboration with Tom de Jong, Nicolai Kraus and Chuangjie Xu. Minor updates 9 and 11 September 2024. 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 private fe : FunExt fe = Univalence-gives-FunExt ua fe' : Fun-Ext fe' {π€} {π₯} = fe π€ π₯ open import MLTT.Spartan open import Ordinals.Arithmetic fe open import Ordinals.Equivalence open import Ordinals.Maps open import Ordinals.OrdinalOfOrdinals ua open import Ordinals.Type open import Ordinals.Underlying open import Ordinals.AdditionProperties ua Γβ-πβ-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 π₯) β Ξ² β΄ Ξ³ β (Ξ± Γβ Ξ²) β΄ (Ξ± Γβ Ξ³) Γβ-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} To prove that multiplication is left cancellable, we require the following technical lemma: if Ξ± > π, then every simulation from Ξ± Γβ Ξ² to Ξ± Γβ Ξ³ decomposes as the identity on the first component and a function Ξ² β Ξ³ on the second component, viz. one that is independent of the first component. \begin{code} 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} 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 {π€} Ξ± Ξ² Ξ³ (aβ , aβ-least) = transfinite-induction-on-OO P II Ξ² Ξ³ where P : Ordinal π€ β π€ βΊ Μ P Ξ² = (Ξ³ : Ordinal π€) β (Ξ± Γβ Ξ²) οΌ (Ξ± Γβ Ξ³) β Ξ² οΌ Ξ³ I : (Ξ² Ξ³ : Ordinal π€) β (Ξ± Γβ Ξ²) οΌ (Ξ± Γβ Ξ³) β (b : β¨ Ξ² β©) β Ξ£ c κ β¨ Ξ³ β© , (Ξ± Γβ (Ξ² β b) οΌ Ξ± Γβ (Ξ³ β c)) I Ξ² Ξ³ e b = c , eq where π : (Ξ± Γβ Ξ²) β΄ (Ξ± Γβ Ξ³) π = ββ-to-β΄ (Ξ± Γβ Ξ²) (Ξ±Β Γβ Ξ³) (idtoeqβ _ _ e) f : β¨ Ξ± Γβ Ξ² β© β β¨ Ξ± Γβ Ξ³ β© f = [ Ξ± Γβ Ξ² , Ξ± Γβ Ξ³ ]β¨ π β© c : β¨ Ξ³ β© c = prβ (f (aβ , b)) eq = Ξ± Γβ (Ξ² β b) οΌβ¨ πβ-right-neutral (Ξ± Γβ (Ξ² β b)) β»ΒΉ β© (Ξ± Γβ (Ξ² β b)) +β πβ οΌβ¨ ap ((Ξ± Γβ (Ξ² β b)) +β_) aβ-least β© (Ξ± Γβ (Ξ² β b)) +β (Ξ± β aβ) οΌβ¨ Γβ-β Ξ± Ξ² β»ΒΉ β© (Ξ± Γβ Ξ²) β (aβ , b) οΌβ¨ eqβ β© (Ξ± Γβ Ξ³) β (aβ' , c) οΌβ¨ eqβ β© (Ξ± Γβ Ξ³) β (aβ , c) οΌβ¨ Γβ-β Ξ± Ξ³ β© (Ξ± Γβ (Ξ³ β c)) +β (Ξ± β aβ) οΌβ¨ ap ((Ξ± Γβ (Ξ³ β c)) +β_) (aβ-least β»ΒΉ) β© (Ξ± Γβ (Ξ³ β c)) +β πβ οΌβ¨ πβ-right-neutral (Ξ± Γβ (Ξ³ β c)) β© Ξ± Γβ (Ξ³ β c) β where aβ' : β¨ Ξ± β© aβ' = prβ (f (aβ , b)) eqβ = simulations-preserve-β (Ξ± Γβ Ξ²) (Ξ± Γβ Ξ³) π (aβ , b) eqβ = ap ((Ξ± Γβ Ξ³) β_) (simulation-product-decomposition Ξ± Ξ² Ξ³ (aβ , aβ-least) π aβ b) II : (Ξ² : Ordinal π€) β ((b : β¨ Ξ² β©) β P (Ξ² β b)) β P Ξ² II Ξ² IH Ξ³ e = Extensionality (OO π€) Ξ² Ξ³ (to-βΌ III) (to-βΌ IV) where III : (b : β¨ Ξ² β©) β (Ξ² β b) β² Ξ³ III b = let (c , eq) = I Ξ² Ξ³ e b in (c , IH b (Ξ³ β c) eq) IV : (c : β¨ Ξ³ β©) β (Ξ³ β c) β² Ξ² IV c = let (b , eq) = I Ξ³ Ξ² (e β»ΒΉ) c in (b , (IH b (Ξ³ β c) (eq β»ΒΉ) β»ΒΉ)) \end{code} Finally, 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 even though they are not constructively sufficient to define it. \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} The above should be contrasted to the situation for addition where we do not know how to prove such a result since only *inhabited* suprema are preserved by addition.