open import Definition.Typed.Restrictions
open import Graded.Modality
module Definition.Untyped.Allowed-literal
{a} {M : Set a}
{š : Modality M}
(R : Type-restrictions š)
where
open Type-restrictions R
open import Definition.Untyped M
open import Definition.Untyped.Properties M
open import Tools.Empty
open import Tools.Function
open import Tools.Nat
open import Tools.Product as Σ
open import Tools.PropositionalEquality
open import Tools.Relation
open import Tools.Sum
private variable
m mā mā n : Nat
X : Set _
ξ : DExt _ _ _
t : Term _
l : Lvl _
opaque
unfolding Allowed-literal
Allowed-literalāLevel-literal : Allowed-literal l ā Level-literal l
Allowed-literalāLevel-literal {l = Ļįµ+ _} _ = Ļįµ+
Allowed-literalāLevel-literal {l = level _} (t-lit , _) = level t-lit
opaque
unfolding Allowed-literalāLevel-literal Level-literalāUniverse-level
Allowed-literalāUniverse-level : Allowed-literal l ā Universe-level
Allowed-literalāUniverse-level {l} =
Level-literalāUniverse-level {l = l} āā
Allowed-literalāLevel-literal
opaque
unfolding Allowed-literalāLevel-literal
Allowed-literalāLevel-literal-irrelevance :
{lā lā : Allowed-literal l} ā
Allowed-literalāLevel-literal lā ā”
Allowed-literalāLevel-literal lā
Allowed-literalāLevel-literal-irrelevance {l = Ļįµ+ _} = refl
Allowed-literalāLevel-literal-irrelevance {l = level _} =
cong level Level-literal-propositional
opaque
unfolding Allowed-literalāUniverse-level
Allowed-literalāUniverse-level-irrelevance :
{lā lā : Allowed-literal l} ā
Allowed-literalāUniverse-level lā ā”
Allowed-literalāUniverse-level lā
Allowed-literalāUniverse-level-irrelevance =
cong Level-literalāUniverse-level
Allowed-literalāLevel-literal-irrelevance
opaque
unfolding Allowed-literal
Allowed-literal-Ļįµ+-ā :
Allowed-literal {n = n} (Ļįµ+ m) ā Omega-plus-allowed
Allowed-literal-Ļįµ+-ā = idā
opaque
Allowed-literal-Ļįµ+-ā-Allowed-literal-Ļįµ+ :
Allowed-literal {n = n} (Ļįµ+ mā) ā Allowed-literal {n = n} (Ļįµ+ mā)
Allowed-literal-Ļįµ+-ā-Allowed-literal-Ļįµ+ {mā} {mā} =
Allowed-literal (Ļįµ+ mā) ā⨠Allowed-literal-Ļįµ+-ā ā©ā
Omega-plus-allowed āĖ⨠Allowed-literal-Ļįµ+-ā ā©ā
Allowed-literal (Ļįµ+ mā) ā”
opaque
unfolding Allowed-literal
Allowed-literal-level-ā :
Allowed-literal (level t) ā (Level-literal t à ¬ Level-allowed)
Allowed-literal-level-ā = idā
opaque
unfolding Allowed-literal Level-literal-1įµ+-ā
Allowed-literal-1įµ+-ā :
Allowed-literal (1įµ+ l) ā Allowed-literal l
Allowed-literal-1įµ+-ā {l = Ļįµ+ _} = idā
Allowed-literal-1įµ+-ā {l = level _} =
Level-literal-1įµ+-ā Ć-cong-ā idā
opaque
unfolding Allowed-literal inline
Allowed-literal-inline :
Allowed-literal l ā Allowed-literal (inline ξ l)
Allowed-literal-inline {l = Ļįµ+ _} = idį¶
Allowed-literal-inline {l = level _} =
Ī£.map Level-literal-inline idį¶
opaque
Allowed-literalāInfinite :
Level-allowed ā Allowed-literal l ā Infinite l
Allowed-literalāInfinite {l = Ļįµ+ _} _ _ = Ļįµ+
Allowed-literalāInfinite {l = level _} okā okā =
ā„-elim (Allowed-literal-level-ā .projā okā .projā okā)
opaque
Level-allowedāAllowed-literalā :
Level-allowed ā Allowed-literal (level t) ā X
Level-allowedāAllowed-literalā okᓸ ok =
case Allowed-literalāInfinite okᓸ ok of Ī» ()
opaque
Allowed-literalā¬Level-allowedāInfinite :
Allowed-literal l ā ¬ Level-allowed ā Infinite l
Allowed-literalā¬Level-allowedāInfinite {l = Ļįµ+ m} _ = injā Ļįµ+
Allowed-literalā¬Level-allowedāInfinite {l = level t} ok =
injā (Allowed-literal-level-ā .projā ok .projā)