open import Definition.Typed.Restrictions
open import Graded.Modality
open import Graded.Mode
module Definition.Typed.Decidable.Internal.Universe-level
{a} {M : Set a} {π : Modality M}
(TR : Type-restrictions π)
where
open import Definition.Untyped M
open import Definition.Untyped.Sup TR
open import Definition.Typed TR
open import Definition.Typed.Inversion TR
open import Definition.Typed.Properties.Admissible.Level TR
open import Definition.Typed.Properties.Well-formed TR
open import Definition.Typed.Reasoning.Level TR
open import Definition.Typed.Well-formed TR
open import Tools.Function
open import Tools.Nat as N
open import Tools.Product
import Tools.PropositionalEquality as PE
open import Tools.Relation
private variable
n : Nat
Ξ : Cons _ _
data Universe-levelβ» : Set where
0α΅+ Οα΅+ : (m : Nat) β Universe-levelβ»
private variable
β ββ ββ : Universe-levelβ»
opaque
β_ββ» : Universe-levelβ» β Lvl n
β 0α΅+ m ββ» = level (βα΅ m)
β Οα΅+ m ββ» = Οα΅+ m
_ββ»_ : (ββ ββ : Universe-levelβ») β Dec (ββ PE.β‘ ββ)
0α΅+ mβ ββ» 0α΅+ mβ =
Dec-map (PE.cong 0α΅+ , (Ξ» { PE.refl β PE.refl })) (mβ N.β mβ)
0α΅+ _ ββ» Οα΅+ _ = no (Ξ» ())
Οα΅+ _ ββ» 0α΅+ _ = no (Ξ» ())
Οα΅+ mβ ββ» Οα΅+ mβ =
Dec-map (PE.cong Οα΅+ , (Ξ» { PE.refl β PE.refl })) (mβ N.β mβ)
1+β» : Universe-levelβ» β Universe-levelβ»
1+β» (0α΅+ m) = 0α΅+ (1+ m)
1+β» (Οα΅+ m) = Οα΅+ (1+ m)
opaque
unfolding β_ββ» βα΅_
β’β1+β»ββ»β‘ :
Ξ β’ β β ββ» β·Level β
Ξ β’ β 1+β» β ββ» β‘ 1α΅+ β β ββ» β·Level
β’β1+β»ββ»β‘ {β = 0α΅+ _} β’β = refl-β’β‘β·L (β’1α΅+ β’β)
β’β1+β»ββ»β‘ {β = Οα΅+ _} β’β = refl-β’β‘β·L (β’1α΅+ β’β)
infixl 6 _ββ»_
_ββ»_ : (_ _ : Universe-levelβ») β Universe-levelβ»
0α΅+ m ββ» 0α΅+ n = 0α΅+ (m β n)
0α΅+ _ ββ» Οα΅+ n = Οα΅+ n
Οα΅+ m ββ» 0α΅+ _ = Οα΅+ m
Οα΅+ m ββ» Οα΅+ n = Οα΅+ (m β n)
opaque
unfolding β_ββ» _supα΅β_
β’βββ»ββ»β‘ :
Ξ β’ β ββ ββ» β·Level β
Ξ β’ β ββ ββ» β·Level β
Ξ β’ β ββ ββ» ββ ββ» β‘ β ββ ββ» supα΅β β ββ ββ» β·Level
β’βββ»ββ»β‘ {ββ = 0α΅+ mβ} {ββ = 0α΅+ mβ} β’ββ _ =
level (βα΅ (mβ N.β mβ)) β‘Λβ¨ supα΅β-βα΅ (wfLevel β’ββ) β©β’β
level (βα΅ mβ) supα΅β level (βα΅ mβ) β
β’βββ»ββ»β‘ {ββ = 0α΅+ _} {ββ = Οα΅+ mβ} _ β’ββ =
Οα΅+ mβ ββ¨ uncurry β’Οα΅+ (inversion-Οα΅+ β’ββ) β©β’
β’βββ»ββ»β‘ {ββ = Οα΅+ mβ} {ββ = 0α΅+ _} β’ββ _ =
Οα΅+ mβ ββ¨ uncurry β’Οα΅+ (inversion-Οα΅+ β’ββ) β©β’
β’βββ»ββ»β‘ {ββ = Οα΅+ mβ} {ββ = Οα΅+ mβ} β’ββ _ =
Οα΅+ (mβ N.β mβ) ββ¨ uncurry β’Οα΅+ (inversion-Οα΅+ β’ββ) β©β’
opaque
unfolding β_ββ»
β’βββ» :
Ξ β’ β ββ ββ» β·Level β
Ξ β’ β ββ ββ» β·Level β
Ξ β’ β ββ ββ» ββ ββ» β·Level
β’βββ» β’ββ β’ββ = wf-β’β‘β·L (β’βββ»ββ»β‘ β’ββ β’ββ) .projβ
opaque
infix 4 _β€β»_
_β€β»_ : Universe-levelβ» β Universe-levelβ» β Set
ββ β€β» ββ = ββ ββ» ββ PE.β‘ ββ
opaque
unfolding _β€β»_
β€β»-refl : β β€β» β
β€β»-refl {β = 0α΅+ _} = PE.cong 0α΅+ (N.β-idem _)
β€β»-refl {β = Οα΅+ _} = PE.cong Οα΅+ (N.β-idem _)