See Ordinals.Arithmetic for the definition of the unique ordinal structure on a
proposition. We prove additional properties here that require several imports.
\begin{code}
{-# OPTIONS --safe --without-K #-}
open import UF.Univalence
module Ordinals.Propositions (ua : Univalence) where
open import UF.FunExt
open import UF.UA-FunExt
private
fe : FunExt
fe = Univalence-gives-FunExt ua
fe' : Fun-Ext
fe' = Univalence-gives-Fun-Ext ua
open import MLTT.Spartan
open import Ordinals.Arithmetic fe
open import Ordinals.Equivalence
open import Ordinals.OrdinalOfOrdinals ua
open import Ordinals.Type
open import UF.Equiv
open import UF.Subsingletons
prop-ordinal-β΄ : {P : π€ Μ } {Q : π₯ Μ } (i : is-prop P) (j : is-prop Q)
β (P β Q) β prop-ordinal P i β΄ prop-ordinal Q j
prop-ordinal-β΄ _ _ f = f , (Ξ» _ _ β π-elim) , (Ξ» _ _ β π-elim)
prop-ordinal-ββ : {P : π€ Μ } {Q : π₯ Μ } (i : is-prop P) (j : is-prop Q)
β (P β Q) β (Q β P) β prop-ordinal P i ββ prop-ordinal Q j
prop-ordinal-ββ {π€} {π₯} {P} {Q} i j f g =
bisimilarity-gives-ordinal-equiv
(prop-ordinal P i) (prop-ordinal Q j)
(prop-ordinal-β΄ i j f)
(prop-ordinal-β΄ j i g)
prop-ordinal-οΌ : {P Q : π€ Μ } (i : is-prop P) (j : is-prop Q)
β (P β Q) β (Q β P) β prop-ordinal P i οΌ prop-ordinal Q j
prop-ordinal-οΌ {π€} {P} {Q} i j f g =
eqtoidβ (ua π€) fe'
(prop-ordinal P i) (prop-ordinal Q j) (prop-ordinal-ββ i j f g)
prop-ordinal-β-ββ : {P : π€ Μ } (i : is-prop P) (p : P)
β (prop-ordinal P i β p) ββ πβ {π₯}
prop-ordinal-β-ββ {π€} {P} i p =
prop-ordinal-ββ
(Ξ» (x , l) (y , k) β π-elim l)
π-is-prop
(Ξ» (x , l) β π-elim l)
π-elim
prop-ordinal-β : {P : π€ Μ } (i : is-prop P) (p : P)
β (prop-ordinal P i β p) οΌ πβ
prop-ordinal-β i p =
eqtoidβ (ua _) fe' (prop-ordinal _ i β p) πβ (prop-ordinal-β-ββ i p)
prop-ordinal-least : {P : π€ Μ } (i : is-prop P) (p : P)
β is-least (prop-ordinal P i) p
prop-ordinal-least i p p' p'' l = π-elim l
πβ-β : {x : π {π€}} β πβ β x οΌ πβ
πβ-β {π€} {x} = prop-ordinal-β π-is-prop x
πβ-β-ββ : {x : π {π€}} β (πβ β x) ββ πβ {π₯}
πβ-β-ββ {π€} {π₯} {x} = prop-ordinal-β-ββ π-is-prop x
only-one-πβ-β΄ : πβ {π€} β΄ πβ {π₯}
only-one-πβ-β΄ = prop-ordinal-β΄ π-is-prop π-is-prop (Ξ» _ β β)
only-one-πβ : πβ {π€} ββ πβ {π₯}
only-one-πβ =
bisimilarity-gives-ordinal-equiv πβ πβ only-one-πβ-β΄ only-one-πβ-β΄
only-one-πβ-β΄ : πβ {π€} β΄ πβ {π₯}
only-one-πβ-β΄ = prop-ordinal-β΄ π-is-prop π-is-prop π-elim
only-one-πβ : πβ {π€} ββ πβ {π₯}
only-one-πβ =
bisimilarity-gives-ordinal-equiv πβ πβ only-one-πβ-β΄ only-one-πβ-β΄
πβ-β΄-shift : (Ξ± : Ordinal π¦) β πβ {π€} β΄ Ξ± β πβ {π₯} β΄ Ξ±
πβ-β΄-shift Ξ± = β΄-trans πβ πβ Ξ± only-one-πβ-β΄
πβ-β²β»-πβ : πβ {π€} β²β» πβ {π₯}
πβ-β²β»-πβ = β , ββ-sym (πβ β β) πβ (prop-ordinal-β-ββ π-is-prop β)
πβ-β²-πβ : πβ {π€} β² πβ {π€}
πβ-β²-πβ = β β²-is-equivalent-to-β²β» πβ πβ ββ»ΒΉ πβ-β²β»-πβ
holds-gives-equal-πβ : {P : π€ Μ } (i : is-prop P) β P β prop-ordinal P i οΌ πβ
holds-gives-equal-πβ i p = prop-ordinal-οΌ i π-is-prop (Ξ» _ β β) (Ξ» _ β p)
\end{code}