new representation for scopes
This commit is contained in:
parent
c75f1514ba
commit
0e481a8098
14 changed files with 376 additions and 364 deletions
|
@ -36,8 +36,8 @@ inj act = do
|
|||
|
||||
reflTy : IsQty q => Term q d n
|
||||
reflTy =
|
||||
Pi zero "A" (TYPE 0) $ TUsed $
|
||||
Pi one "x" (BVT 0) $ TUsed $
|
||||
Pi zero (TYPE 0) $ S ["A"] $ Y $
|
||||
Pi one (BVT 0) $ S ["x"] $ Y $
|
||||
Eq0 (BVT 1) (BVT 0) (BVT 0)
|
||||
|
||||
reflDef : IsQty q => Term q d n
|
||||
|
@ -56,8 +56,8 @@ defGlobals = fromList
|
|||
("f", mkAbstract Any $ Arr One (FT "A") (FT "A")),
|
||||
("g", mkAbstract Any $ Arr One (FT "A") (FT "B")),
|
||||
("f2", mkAbstract Any $ Arr One (FT "A") $ Arr One (FT "A") (FT "A")),
|
||||
("p", mkAbstract Any $ Pi One "x" (FT "A") $ TUsed $ E $ F "P" :@ BVT 0),
|
||||
("q", mkAbstract Any $ Pi One "x" (FT "A") $ TUsed $ E $ F "P" :@ BVT 0),
|
||||
("p", mkAbstract Any $ Pi One (FT "A") $ S ["x"] $ Y $ E $ F "P" :@ BVT 0),
|
||||
("q", mkAbstract Any $ Pi One (FT "A") $ S ["x"] $ Y $ E $ F "P" :@ BVT 0),
|
||||
("refl", mkDef Any reflTy reflDef)]
|
||||
|
||||
parameters (label : String) (act : Lazy (M ()))
|
||||
|
@ -139,7 +139,7 @@ tests = "typechecker" :- [
|
|||
check_ (ctx [<]) szero (Arr One (FT "C") (FT "D")) (TYPE 0),
|
||||
testTC "0 · (1·x : A) → P x ⇐ ★₀" $
|
||||
check_ (ctx [<]) szero
|
||||
(Pi One "x" (FT "A") $ TUsed $ E $ F "P" :@ BVT 0)
|
||||
(Pi One (FT "A") $ S ["x"] $ Y $ E $ F "P" :@ BVT 0)
|
||||
(TYPE 0),
|
||||
testTCFail "0 · A ⊸ P ⇍ ★₀" $
|
||||
check_ (ctx [<]) szero (Arr One (FT "A") $ FT "P") (TYPE 0),
|
||||
|
@ -207,21 +207,20 @@ tests = "typechecker" :- [
|
|||
|
||||
"equalities" :- [
|
||||
testTC "1 · (λᴰ i ⇒ a) ⇐ a ≡ a" $
|
||||
check_ (ctx [<]) sone (DLam "i" $ DUnused $ FT "a")
|
||||
check_ (ctx [<]) sone (DLam $ S ["i"] $ N $ FT "a")
|
||||
(Eq0 (FT "A") (FT "a") (FT "a")),
|
||||
testTC "0 · (λ p q ⇒ λᴰ i ⇒ p) ⇐ (ω·p q : a ≡ a') → p ≡ q" $
|
||||
check_ (ctx [<]) szero
|
||||
(Lam "p" $ TUsed $ Lam "q" $ TUnused $
|
||||
DLam "i" $ DUnused $ BVT 0)
|
||||
(Pi Any "p" (Eq0 (FT "A") (FT "a") (FT "a")) $ TUsed $
|
||||
Pi Any "q" (Eq0 (FT "A") (FT "a") (FT "a")) $ TUsed $
|
||||
(Lam $ S ["p"] $ Y $ Lam $ S ["q"] $ N $ DLam $ S ["i"] $ N $ BVT 0)
|
||||
(Pi Any (Eq0 (FT "A") (FT "a") (FT "a")) $ S ["p"] $ Y $
|
||||
Pi Any (Eq0 (FT "A") (FT "a") (FT "a")) $ S ["q"] $ Y $
|
||||
Eq0 (Eq0 (FT "A") (FT "a") (FT "a")) (BVT 1) (BVT 0)),
|
||||
testTC "0 · (λ p q ⇒ λᴰ i ⇒ q) ⇐ (ω·p q : a ≡ a') → p ≡ q" $
|
||||
check_ (ctx [<]) szero
|
||||
(Lam "p" $ TUnused $ Lam "q" $ TUsed $
|
||||
DLam "i" $ DUnused $ BVT 0)
|
||||
(Pi Any "p" (Eq0 (FT "A") (FT "a") (FT "a")) $ TUsed $
|
||||
Pi Any "q" (Eq0 (FT "A") (FT "a") (FT "a")) $ TUsed $
|
||||
(Lam $ S ["p"] $ N $ Lam $ S ["q"] $ Y $
|
||||
DLam $ S ["i"] $ N $ BVT 0)
|
||||
(Pi Any (Eq0 (FT "A") (FT "a") (FT "a")) $ S ["p"] $ Y $
|
||||
Pi Any (Eq0 (FT "A") (FT "a") (FT "a")) $ S ["q"] $ Y $
|
||||
Eq0 (Eq0 (FT "A") (FT "a") (FT "a")) (BVT 1) (BVT 0))
|
||||
],
|
||||
|
||||
|
@ -233,11 +232,11 @@ tests = "typechecker" :- [
|
|||
testTC "cong" $
|
||||
check_ (ctx [<]) sone
|
||||
(["x", "y", "xy"] :\\ ["i"] :\\% E (F "p" :@ E (BV 0 :% BV 0)))
|
||||
(Pi Zero "x" (FT "A") $ TUsed $
|
||||
Pi Zero "y" (FT "A") $ TUsed $
|
||||
Pi One "xy" (Eq0 (FT "A") (BVT 1) (BVT 0)) $ TUsed $
|
||||
Eq "i" (DUsed $ E $ F "P" :@ E (BV 0 :% BV 0))
|
||||
(E $ F "p" :@ BVT 2) (E $ F "p" :@ BVT 1)),
|
||||
(Pi Zero (FT "A") $ S ["x"] $ Y $
|
||||
Pi Zero (FT "A") $ S ["y"] $ Y $
|
||||
Pi One (Eq0 (FT "A") (BVT 1) (BVT 0)) $ S ["xy"] $ Y $
|
||||
Eq (S ["i"] $ Y $ E $ F "P" :@ E (BV 0 :% BV 0))
|
||||
(E $ F "p" :@ BVT 2) (E $ F "p" :@ BVT 1)),
|
||||
note "0·A : Type, 0·P : ω·A → Type,",
|
||||
note "ω·p q : (1·x : A) → P x",
|
||||
note "⊢",
|
||||
|
@ -246,11 +245,12 @@ tests = "typechecker" :- [
|
|||
testTC "funext" $
|
||||
check_ (ctx [<]) sone
|
||||
(["eq"] :\\ ["i"] :\\% ["x"] :\\ E (BV 1 :@ BVT 0 :% BV 0))
|
||||
(Pi One "eq"
|
||||
(Pi One "x" (FT "A") $ TUsed $
|
||||
(Pi One
|
||||
(Pi One (FT "A") $ S ["x"] $ Y $
|
||||
Eq0 (E $ F "P" :@ BVT 0)
|
||||
(E $ F "p" :@ BVT 0) (E $ F "q" :@ BVT 0)) $ TUsed $
|
||||
Eq0 (Pi Any "x" (FT "A") $ TUsed $ E $ F "P" :@ BVT 0)
|
||||
(FT "p") (FT "q"))
|
||||
(E $ F "p" :@ BVT 0) (E $ F "q" :@ BVT 0)) $
|
||||
S ["eq"] $ Y $
|
||||
Eq0 (Pi Any (FT "A") $ S ["x"] $ Y $ E $ F "P" :@ BVT 0)
|
||||
(FT "p") (FT "q"))
|
||||
]
|
||||
]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue