type-case
This commit is contained in:
parent
868550327c
commit
a42e82c355
12 changed files with 334 additions and 93 deletions
|
@ -138,8 +138,8 @@ tests = "pretty printing terms" :- [
|
|||
"case" :- [
|
||||
testPrettyE [<] [<]
|
||||
(CasePair One (F "a") (SN $ TYPE 1) (SN $ TYPE 0))
|
||||
"case1 a return _ ⇒ ★₁ of { (_, _) ⇒ ★₀ }"
|
||||
"case1 a return _ => Type1 of { (_, _) => Type0 }",
|
||||
"case1 a return ★₁ of { (_, _) ⇒ ★₀ }"
|
||||
"case1 a return Type1 of { (_, _) => Type0 }",
|
||||
testPrettyT [<] [<]
|
||||
([< "u"] :\\
|
||||
E (CaseEnum One (F "u")
|
||||
|
@ -152,6 +152,35 @@ tests = "pretty printing terms" :- [
|
|||
"""
|
||||
],
|
||||
|
||||
"type-case" :- [
|
||||
testPrettyE [<] [<]
|
||||
{label = "type-case ℕ ∷ ★₀ return ★₀ of { ⋯ }"}
|
||||
(TypeCase (Nat :# TYPE 0) (TYPE 0) Nat (SN Nat) (SN Nat) Nat
|
||||
(SN Nat) Nat (SN Nat))
|
||||
"""
|
||||
type-case ℕ ∷ ★₀ return ★₀ of {
|
||||
★ ⇒ ℕ;
|
||||
(_ → _) ⇒ ℕ;
|
||||
(_ × _) ⇒ ℕ;
|
||||
{} ⇒ ℕ;
|
||||
Eq _ _ _ _ _ ⇒ ℕ;
|
||||
ℕ ⇒ ℕ;
|
||||
[_] ⇒ ℕ
|
||||
}
|
||||
"""
|
||||
"""
|
||||
type-case Nat :: Type0 return Type0 of {
|
||||
Type => Nat;
|
||||
(_ -> _) => Nat;
|
||||
(_ ** _) => Nat;
|
||||
{} => Nat;
|
||||
Eq _ _ _ _ _ => Nat;
|
||||
Nat => Nat;
|
||||
[_] => Nat
|
||||
}
|
||||
"""
|
||||
],
|
||||
|
||||
"annotations" :- [
|
||||
testPrettyE [<] [<] (FT "a" :# FT "A") "a ∷ A" "a :: A",
|
||||
testPrettyE [<] [<]
|
||||
|
|
|
@ -448,6 +448,14 @@ tests = "typechecker" :- [
|
|||
todo "box values",
|
||||
todo "box elim",
|
||||
|
||||
"type-case" :- [
|
||||
testTC "0 · type-case ℕ ∷ ★₀ return ★₀ of { _ ⇒ ℕ } ⇒ ★₀" $
|
||||
inferAs empty szero
|
||||
(TypeCase (Nat :# TYPE 0) (TYPE 0) Nat (SN Nat) (SN Nat) Nat
|
||||
(SN Nat) Nat (SN Nat))
|
||||
(TYPE 0)
|
||||
],
|
||||
|
||||
"misc" :- [
|
||||
note "0·A : Type, 0·P : A → Type, ω·p : (1·x : A) → P x",
|
||||
note "⊢",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue