add displacement to Definition

This commit is contained in:
rhiannon morris 2023-08-28 19:59:36 +02:00
parent 6dcd3332c1
commit 6f9d31aa0a
5 changed files with 19 additions and 10 deletions

View file

@ -22,7 +22,7 @@ computeElimType defs ctx e {ne} =
F {x, u, loc} => do
let Just def = lookup x defs
| Nothing => throw $ NotInScope loc x
pure $ displace u def.type
pure $ def.typeAt u
B {i, _} =>
pure $ ctx.tctx !! i

View file

@ -193,8 +193,8 @@ mutual
||| 7. a closure
public export
isRedexE : RedexTest Elim
isRedexE defs (F {x, _}) {d, n} =
isJust $ lookupElim x defs {d, n}
isRedexE defs (F {x, u, _}) {d, n} =
isJust $ lookupElim x u defs {d, n}
isRedexE _ (B {}) = False
isRedexE defs (App {fun, _}) =
isRedexE defs fun || isLamHead fun

View file

@ -16,8 +16,8 @@ export covering CanWhnf Elim Interface.isRedexE
covering
CanWhnf Elim Interface.isRedexE where
whnf defs ctx (F x u loc) with (lookupElim x defs) proof eq
_ | Just y = whnf defs ctx $ setLoc loc $ displace u y
whnf defs ctx (F x u loc) with (lookupElim x u defs) proof eq
_ | Just y = whnf defs ctx $ setLoc loc y
_ | Nothing = pure $ Element (F x u loc) $ rewrite eq in Ah
whnf _ _ (B i loc) = pure $ nred $ B i loc