@@ -11,11 +11,11 @@ using (G : Vect Ty n)
12 data Env : Vect Ty n -> Set where
12 data Env : Vect Ty n -> Set where
13 Nil : Env Nil
13 Nil : Env Nil
14− | (::) : interpTy a -> Env G -> Env (a :: G)
14+ (::) : interpTy a -> Env G -> Env (a :: G)
16 data HasType : (i : Fin n) -> Vect Ty n -> Ty -> Set where
16 data HasType : (i : Fin n) -> Vect Ty n -> Ty -> Set where
17 stop : HasType fO (t :: G) t
17 stop : HasType fO (t :: G) t
18− | pop : HasType k G t -> HasType (fS k) (u :: G) t
18+ pop : HasType k G t -> HasType (fS k) (u :: G) t
20 lookup : HasType i G t -> Env G -> interpTy t
20 lookup : HasType i G t -> Env G -> interpTy t
21 lookup stop (x :: xs) = x
21 lookup stop (x :: xs) = x
@@ -23,13 +23,13 @@ using (G : Vect Ty n)
24 data Expr : Vect Ty n -> Ty -> Set where
24 data Expr : Vect Ty n -> Ty -> Set where
25 Var : HasType i G t -> Expr G t
25 Var : HasType i G t -> Expr G t
26− | Val : (x : Int) -> Expr G TyInt
26+ Val : (x : Int) -> Expr G TyInt
27− | Lam : Expr (a :: G) t -> Expr G (TyFun a t)
27+ Lam : Expr (a :: G) t -> Expr G (TyFun a t)
28− | App : Expr G (TyFun a t) -> Expr G a -> Expr G t
28+ App : Expr G (TyFun a t) -> Expr G a -> Expr G t
29− | Op : (interpTy a -> interpTy b -> interpTy c) -> Expr G a -> Expr G b ->
29+ Op : (interpTy a -> interpTy b -> interpTy c) -> Expr G a -> Expr G b ->
31− | If : Expr G TyBool -> Expr G a -> Expr G a -> Expr G a
31+ If : Expr G TyBool -> Expr G a -> Expr G a -> Expr G a
32− | Bind : Expr G a -> (interpTy a -> Expr G b) -> Expr G b
32+ Bind : Expr G a -> (interpTy a -> Expr G b) -> Expr G b
34 interp : Env G -> {static} Expr G t -> interpTy t
34 interp : Env G -> {static} Expr G t -> interpTy t
35 interp env (Var i) = lookup i env
35 interp env (Var i) = lookup i env