We record various properties of the abstract and concrete constructions of
ordinal exponentiation using transport and the equivalence proved in
Ordinals.Exponentiation.RelatingConstructions.
\begin{code}
{-# OPTIONS --safe --without-K --exact-split #-}
open import UF.Univalence
open import UF.PropTrunc
open import UF.Size
module Ordinals.Exponentiation.PropertiesViaTransport
(ua : Univalence)
(pt : propositional-truncations-exist)
(sr : Set-Replacement pt)
where
open import UF.FunExt
open import UF.UA-FunExt
private
fe : FunExt
fe = Univalence-gives-FunExt ua
fe' : Fun-Ext
fe' {𝓤} {𝓥} = fe 𝓤 𝓥
open import MLTT.List
open import MLTT.Spartan
open import UF.Base
open import UF.DiscreteAndSeparated
open import Ordinals.Arithmetic fe
open import Ordinals.Notions
open import Ordinals.OrdinalOfOrdinals ua
open import Ordinals.Type
open import Ordinals.Underlying
open import Ordinals.Exponentiation.DecreasingList ua
open import Ordinals.Exponentiation.RelatingConstructions ua pt sr
open import Ordinals.Exponentiation.Specification ua pt sr
open import Ordinals.Exponentiation.Supremum ua pt sr
open import Ordinals.Exponentiation.TrichotomousLeastElement ua
open import DiscreteGraphicMonoids.ListsWithoutRepetitions fe'
using (List-is-discrete)
open import TypeTopology.SigmaDiscreteAndTotallySeparated
using (×-is-discrete)
\end{code}
The exponentiation constructions inherit decidability properties from α and β.
\begin{code}
expᴸ-preserves-discreteness : (α : Ordinal 𝓤) (β : Ordinal 𝓥)
→ is-discrete ⟨ α ⟩
→ is-discrete ⟨ β ⟩
→ is-discrete ⟨ expᴸ[𝟙+ α ] β ⟩
expᴸ-preserves-discreteness α β α-is-disc β-is-disc l@(xs , _) l'@(ys , _) =
III II
where
I : is-discrete (⟨ α ⟩ × ⟨ β ⟩)
I = ×-is-discrete α-is-disc β-is-disc
II : is-decidable (xs = ys)
II = List-is-discrete ⦃ discrete-gives-discrete' I ⦄ xs ys
III : is-decidable (xs = ys) → is-decidable (l = l')
III (inl eq) = inl (to-DecrList₂-= α β eq)
III (inr neq) = inr (λ p → neq (ap (DecrList₂-list α β) p))
exponentiationᴸ-preserves-discreteness : (α : Ordinal 𝓤) (β : Ordinal 𝓥)
(h : has-trichotomous-least-element α)
→ is-discrete ⟨ α ⟩
→ is-discrete ⟨ β ⟩
→ is-discrete ⟨ exponentiationᴸ α h β ⟩
exponentiationᴸ-preserves-discreteness α β h@(⊥ , _) α-is-discrete β-is-discrete =
expᴸ-preserves-discreteness (α ⁺[ h ]) β α⁺-is-discrete β-is-discrete
where
α⁺-is-discrete : is-discrete ⟨ α ⁺[ h ] ⟩
α⁺-is-discrete = subtype-is-discrete
(Prop-valuedness α ⊥)
α-is-discrete
^ₒ-preserves-discreteness-for-base-with-trichotomous-least-element
: (α β : Ordinal 𝓤)
→ has-trichotomous-least-element α
→ is-discrete ⟨ α ⟩
→ is-discrete ⟨ β ⟩
→ is-discrete ⟨ α ^ₒ β ⟩
^ₒ-preserves-discreteness-for-base-with-trichotomous-least-element
α β h α-disc β-disc =
transport (λ - → is-discrete ⟨ - ⟩)
(exponentiation-constructions-agree α β h)
(exponentiationᴸ-preserves-discreteness α β h α-disc β-disc)
expᴸ-preserves-trichotomy : (α : Ordinal 𝓤) (β : Ordinal 𝓥)
→ is-trichotomous α
→ is-trichotomous β
→ is-trichotomous (expᴸ[𝟙+ α ] β)
expᴸ-preserves-trichotomy α β tri-α tri-β l@(xs , _) l'@(ys , _) =
κ (tri xs ys)
where
tri : (xs ys : List ⟨ α ×ₒ β ⟩)
→ (xs ≺⟨List (α ×ₒ β) ⟩ ys) + (xs = ys) + (ys ≺⟨List (α ×ₒ β) ⟩ xs)
tri [] [] = inr (inl refl)
tri [] (x ∷ ys) = inl []-lex
tri (x ∷ xs) [] = inr (inr []-lex)
tri ((a , b) ∷ xs) ((a' , b') ∷ ys) =
ϕ (×ₒ-is-trichotomous α β tri-α tri-β (a , b) (a' , b')) (tri xs ys)
where
ϕ : in-trichotomy (underlying-order (α ×ₒ β)) (a , b) (a' , b')
→ in-trichotomy (lex-for-ordinal (α ×ₒ β)) xs ys
→ in-trichotomy (lex-for-ordinal (α ×ₒ β))
((a , b) ∷ xs)
((a' , b') ∷ ys)
ϕ (inl p) _ = inl (head-lex p)
ϕ (inr (inl r)) (inl ps) = inl (tail-lex r ps)
ϕ (inr (inl r)) (inr (inl rs)) = inr (inl (ap₂ _∷_ r rs))
ϕ (inr (inl r)) (inr (inr qs)) = inr (inr (tail-lex (r ⁻¹) qs))
ϕ (inr (inr q)) _ = inr (inr (head-lex q))
κ : (xs ≺⟨List (α ×ₒ β) ⟩ ys) + (xs = ys) + (ys ≺⟨List (α ×ₒ β) ⟩ xs)
→ (l ≺⟨ expᴸ[𝟙+ α ] β ⟩ l') + (l = l') + (l' ≺⟨ expᴸ[𝟙+ α ] β ⟩ l)
κ (inl p) = inl p
κ (inr (inl e)) = inr (inl (to-DecrList₂-= α β e))
κ (inr (inr q)) = inr (inr q)
private
tri-least : (α : Ordinal 𝓤)
→ has-least α
→ is-trichotomous α
→ has-trichotomous-least-element α
tri-least α (⊥ , ⊥-is-least) t =
⊥ ,
is-trichotomous-and-least-implies-is-trichotomous-least α ⊥ (t ⊥) ⊥-is-least
exponentiationᴸ-preserves-trichotomy
: (α : Ordinal 𝓤) (β : Ordinal 𝓥)
→ (h : has-least α)
→ (t : is-trichotomous α)
→ is-trichotomous β
→ is-trichotomous (exponentiationᴸ α (tri-least α h t) β)
exponentiationᴸ-preserves-trichotomy α β h tri-α tri-β =
expᴸ-preserves-trichotomy (α ⁺[ h' ]) β tri-α⁺ tri-β
where
h' : has-trichotomous-least-element α
h' = tri-least α h tri-α
tri-α⁺ : is-trichotomous (α ⁺[ h' ])
tri-α⁺ (x , p) (y , q) = κ (tri-α x y)
where
κ : in-trichotomy (underlying-order α) x y
→ in-trichotomy (underlying-order (α ⁺[ h' ])) (x , p) (y , q)
κ (inl l) = inl l
κ (inr (inl e)) = inr (inl (to-⁺-= α h' e))
κ (inr (inr k)) = inr (inr k)
^ₒ-preserves-trichotomy : (α β : Ordinal 𝓤)
→ has-least α
→ is-trichotomous α
→ is-trichotomous β
→ is-trichotomous (α ^ₒ β)
^ₒ-preserves-trichotomy
α β (⊥ , p) tri-α tri-β =
transport is-trichotomous
(exponentiation-constructions-agree α β h)
(exponentiationᴸ-preserves-trichotomy α β (⊥ , p) tri-α tri-β)
where
h : has-trichotomous-least-element α
h = ⊥ ,
is-trichotomous-and-least-implies-is-trichotomous-least α ⊥ (tri-α ⊥) p
\end{code}
Since the abstract construction satisfies the ordinal specifications, so does
the concrete construction.
\begin{code}
module _
(α : Ordinal 𝓤)
(h : has-trichotomous-least-element α)
where
exponentiationᴸ-satisfies-zero-specification
: exp-specification-zero α (exponentiationᴸ α h)
exponentiationᴸ-satisfies-zero-specification =
transport⁻¹ (exp-specification-zero α)
(dfunext fe' (λ β → exponentiation-constructions-agree α β h))
(^ₒ-satisfies-zero-specification α)
exponentiationᴸ-satisfies-succ-specification
: exp-specification-succ α (exponentiationᴸ α h)
exponentiationᴸ-satisfies-succ-specification =
transport⁻¹ (exp-specification-succ α)
(dfunext fe' (λ β → exponentiation-constructions-agree α β h))
(^ₒ-satisfies-succ-specification α
(trichotomous-least-element-gives-𝟙ₒ-⊴ α h))
exponentiationᴸ-satisfies-sup-specification
: exp-specification-sup α (exponentiationᴸ α h)
exponentiationᴸ-satisfies-sup-specification =
transport⁻¹ (exp-specification-sup α)
(dfunext fe' (λ β → exponentiation-constructions-agree α β h))
(^ₒ-satisfies-sup-specification α)
\end{code}
Further properties whose direct proofs would require combinatorics of decreasing
lists can also be derived via transport.
\begin{code}
exponentiationᴸ-monotone-in-exponent :
(β γ : Ordinal 𝓤) → β ⊴ γ → exponentiationᴸ α h β ⊴ exponentiationᴸ α h γ
exponentiationᴸ-monotone-in-exponent β γ l =
transport₂ _⊴_
((exponentiation-constructions-agree α β h) ⁻¹)
((exponentiation-constructions-agree α γ h) ⁻¹)
(^ₒ-monotone-in-exponent α β γ l)
𝟙ₒ-neutral-exponentiationᴸ : exponentiationᴸ α h 𝟙ₒ = α
𝟙ₒ-neutral-exponentiationᴸ =
transport⁻¹
(_= α)
(exponentiation-constructions-agree α 𝟙ₒ h)
(𝟙ₒ-neutral-^ₒ α (trichotomous-least-element-gives-𝟙ₒ-⊴ α h))
exponentiationᴸ-by-𝟚ₒ-is-×ₒ : exponentiationᴸ α h 𝟚ₒ = α ×ₒ α
exponentiationᴸ-by-𝟚ₒ-is-×ₒ =
transport⁻¹
(_= α ×ₒ α)
(exponentiation-constructions-agree α 𝟚ₒ h)
(^ₒ-𝟚ₒ-is-×ₒ α (trichotomous-least-element-gives-𝟙ₒ-⊴ α h))
exponentiationᴸ-by-+ₒ
: (β γ : Ordinal 𝓤)
→ exponentiationᴸ α h (β +ₒ γ)
= exponentiationᴸ α h β ×ₒ exponentiationᴸ α h γ
exponentiationᴸ-by-+ₒ β γ =
transport₂
_=_
(exponentiation-constructions-agree α (β +ₒ γ) h ⁻¹)
(ap₂ _×ₒ_
((exponentiation-constructions-agree α β h) ⁻¹)
((exponentiation-constructions-agree α γ h) ⁻¹))
(^ₒ-by-+ₒ α β γ)
module _
(β γ : Ordinal 𝓤)
where
private
h' : has-trichotomous-least-element (exponentiationᴸ α h β)
h' = exponentiationᴸ-has-trichotomous-least-element α h β
exponentiationᴸ-by-×ₒ
: exponentiationᴸ α h (β ×ₒ γ) = exponentiationᴸ (exponentiationᴸ α h β) h' γ
exponentiationᴸ-by-×ₒ =
transport₂
_=_
(exponentiation-constructions-agree α (β ×ₒ γ) h ⁻¹)
((exponentiation-constructions-agree (exponentiationᴸ α h β) γ h'
∙ ap (_^ₒ γ) (exponentiation-constructions-agree α β h)) ⁻¹)
(^ₒ-by-×ₒ α β γ)
exponentiationᴸ-order-preserving-in-exponent
: (β γ : Ordinal 𝓤)
→ 𝟙ₒ ⊲ α
→ β ⊲ γ → exponentiationᴸ α h β ⊲ exponentiationᴸ α h γ
exponentiationᴸ-order-preserving-in-exponent β γ l k =
transport₂
_⊲_
(exponentiation-constructions-agree α β h ⁻¹)
(exponentiation-constructions-agree α γ h ⁻¹)
(^ₒ-order-preserving-in-exponent α β γ l k)
\end{code}