|
module check-level where |
|
|
|
open import Agda.Primitive using (_β_) |
|
renaming (Level to π; lzero to 0α΄Έ; lsuc to _+1α΄Έ) |
|
|
|
-- |
|
-- naked function types |
|
-- |
|
module _ where |
|
|
|
-- context length = 0 |
|
TPβ : β ββ β Set (ββ +1α΄Έ) |
|
TPβ ββ = Set ββ |
|
idβ : β {ββ} β TPβ ββ β TPβ ββ |
|
idβ Pβ = Pβ |
|
TPβ' : β ββ β idβ (TPβ (ββ +1α΄Έ)) |
|
TPβ' ββ = TPβ ββ |
|
|
|
-- context length = 1 |
|
TPβ : β {ββ} ββ β (Pβ : TPβ ββ) β Set (ββ β (ββ +1α΄Έ)) |
|
TPβ ββ Pβ = (pβ : Pβ) β Set ββ |
|
idβ : β {ββ ββ} β {Pβ : TPβ ββ} β TPβ ββ Pβ β TPβ ββ Pβ |
|
idβ Pβ = Pβ |
|
TPβ' : β {ββ} ββ β idβ (TPβ (ββ β (ββ +1α΄Έ))) (TPβ ββ) |
|
TPβ' ββ = TPβ ββ |
|
|
|
-- context length = 2 |
|
TPβ : β {ββ ββ} ββ β {Pβ : TPβ ββ} β (Pβ : TPβ ββ Pβ) β Set (ββ β ββ β (ββ +1α΄Έ)) |
|
TPβ ββ {Pβ} Pβ = {pβ : Pβ} β (pβ : Pβ pβ) β Set ββ |
|
idβ : β {ββ ββ ββ} β {Pβ : TPβ ββ} β {Pβ : TPβ ββ Pβ} β TPβ ββ Pβ β TPβ ββ Pβ |
|
idβ Pβ = Pβ |
|
TPβ' : β {ββ ββ} ββ β idβ {Pβ = TPβ _} (TPβ (ββ β ββ β (ββ +1α΄Έ))) (TPβ {ββ} ββ) |
|
TPβ' ββ = TPβ ββ |
|
|
|
-- |
|
-- nominal record types |
|
-- |
|
module _ where |
|
-- record identity wrapper |
|
record Id {β} (It : Set β) : Set β where |
|
constructor β |
|
field β : It |
|
open Id |
|
|
|
-- context length = 0 |
|
WPβ : β ββ β TPβ (ββ +1α΄Έ) |
|
WPβ ββ = Id (TPβ ββ) |
|
RPβ : β ββ β WPβ (ββ +1α΄Έ) |
|
RPβ ββ = β (WPβ ββ) |
|
_$β : β {ββ} β WPβ ββ β TPβ ββ |
|
_$β = β |
|
RPβ' : β ββ β (RPβ (ββ +1α΄Έ)) $β |
|
RPβ' ββ = RPβ ββ |
|
|
|
-- context length = 1 |
|
WPβ : β {ββ} ββ β TPβ (ββ β (ββ +1α΄Έ)) (WPβ ββ) |
|
WPβ ββ wPβ = Id (TPβ ββ (β wPβ)) |
|
RPβ : β {ββ} ββ β WPβ (ββ β (ββ +1α΄Έ)) (RPβ ββ) |
|
RPβ ββ = β (WPβ ββ) |
|
_$β_ : β {ββ ββ} β {wPβ : WPβ ββ} β WPβ ββ wPβ β TPβ ββ (β wPβ) |
|
_$β_ = β |
|
RPβ' : β {ββ} ββ β RPβ (ββ β (ββ +1α΄Έ)) $β RPβ ββ |
|
RPβ' ββ = RPβ ββ |
|
|
|
-- context length = 2 |
|
WPβ : β {ββ ββ} ββ β TPβ (ββ β ββ β (ββ +1α΄Έ)) (WPβ {ββ} ββ) |
|
WPβ ββ wPβ = Id (TPβ ββ (β wPβ)) |
|
RPβ : β {ββ ββ} ββ β WPβ (ββ β ββ β (ββ +1α΄Έ)) (RPβ {ββ} ββ) |
|
RPβ ββ = β (WPβ ββ) |
|
_$β_ : β {ββ ββ ββ} β {wPβ : WPβ ββ} β {wPβ : WPβ ββ wPβ} β WPβ ββ wPβ β TPβ ββ (β wPβ) |
|
_$β_ = β |
|
RPβ' : β {ββ ββ} ββ β RPβ (ββ β ββ β (ββ +1α΄Έ)) $β RPβ {ββ} ββ |
|
RPβ' ββ = RPβ ββ |
|
-- |