fix equality types

This commit is contained in:
rhiannon morris 2023-04-01 16:02:02 +02:00
parent 15f6f4c8a4
commit 924fd991f9
2 changed files with 23 additions and 2 deletions

View file

@ -257,9 +257,9 @@ parameters {auto _ : IsQty q}
Y t' => checkTypeC (extendDim t.name ctx) t' u Y t' => checkTypeC (extendDim t.name ctx) t' u
N t' => checkTypeC ctx t' u N t' => checkTypeC ctx t' u
-- if Ψ | Γ ⊢₀ l ⇐ A0 -- if Ψ | Γ ⊢₀ l ⇐ A0
check0 ctx t.zero l check0 ctx l t.zero
-- if Ψ | Γ ⊢₀ r ⇐ A1 -- if Ψ | Γ ⊢₀ r ⇐ A1
check0 ctx t.one r check0 ctx r t.one
-- then Ψ | Γ ⊢₀ Eq [i ⇒ A] l r ⇐ Type -- then Ψ | Γ ⊢₀ Eq [i ⇒ A] l r ⇐ Type
checkType' ctx t@(DLam {}) u = checkType' ctx t@(DLam {}) u =

View file

@ -370,6 +370,27 @@ tests = "typechecker" :- [
singleton "ff" (Tag "tt")) singleton "ff" (Tag "tt"))
], ],
"equality types" :- [
testTC "0 · = : ★₀ ⇐ ★₁" $
check_ empty szero (Eq0 (TYPE 0) Nat Nat) (TYPE 1),
testTC "0 · = : ★₀ ⇐ ★₂" $
check_ empty szero (Eq0 (TYPE 0) Nat Nat) (TYPE 2),
testTC "0 · = : ★₁ ⇐ ★₂" $
check_ empty szero (Eq0 (TYPE 1) Nat Nat) (TYPE 2),
testTCFail "0 · = : ★₁ ⇍ ★₁" $
check_ empty szero (Eq0 (TYPE 1) Nat Nat) (TYPE 1),
testTC "ab : A ≡ B : ★₀, x : A, y : B ⊢ Eq [i ⇒ ab i] x y ⇐ ★₀" $
check_ (ctx [< ("ab", Eq0 (TYPE 0) (FT "A") (FT "B")),
("x", FT "A"), ("y", FT "B")]) szero
(Eq (SY [< "i"] $ E $ BV 2 :% BV 0) (BVT 1) (BVT 0))
(TYPE 0),
testTCFail "ab : A ≡ B : ★₀, x : A, y : B ⊢ Eq [i ⇒ ab i] y x ⇍ ★₀" $
check_ (ctx [< ("ab", Eq0 (TYPE 0) (FT "A") (FT "B")),
("x", FT "A"), ("y", FT "B")]) szero
(Eq (SY [< "i"] $ E $ BV 2 :% BV 0) (BVT 0) (BVT 1))
(TYPE 0)
],
"equalities" :- [ "equalities" :- [
testTC "1 · (δ i ⇒ a) ⇐ a ≡ a" $ testTC "1 · (δ i ⇒ a) ⇐ a ≡ a" $
check_ empty sone (DLam $ SN $ FT "a") check_ empty sone (DLam $ SN $ FT "a")