start of equality type stuff

This commit is contained in:
rhiannon morris 2023-01-21 02:34:28 +01:00
parent 8acc3aeadf
commit f097e1c091
13 changed files with 608 additions and 261 deletions

View file

@ -33,6 +33,13 @@ mutual
Lam _ body1 == Lam _ body2 = body1 == body2
Lam {} == _ = False
Eq _ ty1 l1 r1 == Eq _ ty2 l2 r2 =
ty1 == ty2 && l1 == l2 && r1 == r2
Eq {} == _ = False
DLam _ body1 == DLam _ body2 = body1 == body2
DLam {} == _ = False
E e == E f = e == f
E _ == _ = False
@ -62,6 +69,9 @@ mutual
(tm1 :# ty1) == (tm2 :# ty2) = tm1 == tm2 && ty1 == ty2
(_ :# _) == _ = False
(fun1 :% dim1) == (fun2 :% dim2) = fun1 == fun2 && dim1 == dim2
(_ :% _) == _ = False
CloE el1 th1 == CloE el2 th2 =
case eqSubst th1 th2 of
Just Refl => el1 == el2 && th1 == th2
@ -81,6 +91,13 @@ mutual
TUsed _ == TUnused _ = False
TUnused _ == TUsed _ = False
export covering
Eq q => Eq (DScopeTerm q d n) where
DUsed s == DUsed t = s == t
DUnused s == DUnused t = s == t
DUsed _ == DUnused _ = False
DUnused _ == DUsed _ = False
export covering
PrettyHL q => Show (Term q d n) where
showPrec d t = showParens (d /= Open) $ prettyStr True t

View file

@ -16,6 +16,9 @@ ToInfo (Error Three) where
toInfo (ExpectedPi t) =
[("type", "ExpectedPi"),
("got", prettyStr True t)]
toInfo (ExpectedEq t) =
[("type", "ExpectedEq"),
("got", prettyStr True t)]
toInfo (BadUniverse k l) =
[("type", "BadUniverse"),
("low", show k),
@ -34,6 +37,10 @@ ToInfo (Error Three) where
[("type", "ClashQ"),
("left", prettyStr True pi),
("right", prettyStr True rh)]
toInfo (ClashD p q) =
[("type", "ClashD"),
("left", prettyStr True p),
("right", prettyStr True q)]
0 M : Type -> Type
@ -127,6 +134,16 @@ tests = "equality & subtyping" :- [
subT tm1 tm2
],
"eq type" :- [
testEq "(★₀ = ★₀ : ★₁) ≡ (★₀ = ★₀ : ★₁)" $
let tm = Eq0 (TYPE 1) (TYPE 0) (TYPE 0) in
equalT tm tm,
testEq "A ≔ ★₁ ⊢ (★₀ = ★₀ : ★₁) ≡ (★₀ = ★₀ : A)"
{globals = fromList [("A", mkDef zero (TYPE 2) (TYPE 1))]} $
equalT (Eq0 (TYPE 1) (TYPE 0) (TYPE 0))
(Eq0 (FT "A") (TYPE 0) (TYPE 0))
],
"lambda" :- [
testEq "λ x ⇒ [x] ≡ λ x ⇒ [x]" $
equalT (Lam "x" $ TUsed $ BVT 0) (Lam "x" $ TUsed $ BVT 0),