Martin Escardo 4th May 2022.
\begin{code}
{-# OPTIONS --safe --without-K --lossy-unification #-}
open import UF.Univalence
module Ordinals.ToppedAdditionProperties
(ua : Univalence)
where
open import UF.Equiv
open import UF.FunExt
open import UF.Subsingletons
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 Notation.CanonicalMap
open import Ordinals.Arithmetic fe
open import Ordinals.Equivalence
open import Ordinals.Maps
open import Ordinals.ToppedArithmetic fe
open import Ordinals.ToppedType fe
open import Ordinals.Type
open import Ordinals.Underlying
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β (ua _) fe' _ _ (alternative-plusβ Οβ Οβ)
\end{code}