@@ -14,11 +14,11 @@ using (G : Vect Ty n)
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 -> Type where
16-- data HasType : (i : Fin n) -> Vect Ty n -> Ty -> Type where
17−-- stop : HasType fO (t :: G) t
17+-- stop : HasType fZ (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 : (i:Fin n) -> Env G -> interpTy (lookup i G)
20 lookup : (i:Fin n) -> Env G -> interpTy (lookup i G)
21− lookup fO (x :: xs) = x
21+ lookup fZ (x :: xs) = x
22 lookup (fS i) (x :: xs) = lookup i xs
22 lookup (fS i) (x :: xs) = lookup i xs
24 data Expr : Vect Ty n -> Ty -> Type where
24 data Expr : Vect Ty n -> Ty -> Type where
@@ -41,32 +41,32 @@ using (G : Vect Ty n)
41 interp env (Bind v f) = interp env (f (interp env v))
41 interp env (Bind v f) = interp env (f (interp env v))
43 eId : Expr G (TyFun TyInt TyInt)
43 eId : Expr G (TyFun TyInt TyInt)
44− eId = Lam (Var fO)
44+ eId = Lam (Var fZ)
46 eTEST : Expr G (TyFun TyInt (TyFun TyInt TyInt))
46 eTEST : Expr G (TyFun TyInt (TyFun TyInt TyInt))
47− eTEST = Lam (Lam (Var (fS fO)))
47+ eTEST = Lam (Lam (Var (fS fZ)))
49 eAdd : Expr G (TyFun TyInt (TyFun TyInt TyInt))
49 eAdd : Expr G (TyFun TyInt (TyFun TyInt TyInt))
50− eAdd = Lam (Lam (Op prim__addInt (Var fO) (Var (fS fO))))
50+ eAdd = Lam (Lam (Op prim__addInt (Var fZ) (Var (fS fZ))))
52-- eDouble : Expr G (TyFun TyInt TyInt)
52-- eDouble : Expr G (TyFun TyInt TyInt)
53−-- eDouble = Lam (App (App (Lam (Lam (Op' (+) (Var fO) (Var (fS fO))))) (Var fO)) (Var fO))
53+-- eDouble = Lam (App (App (Lam (Lam (Op' (+) (Var fZ) (Var (fS fZ))))) (Var fZ)) (Var fZ))
55 eDouble : Expr G (TyFun TyInt TyInt)
55 eDouble : Expr G (TyFun TyInt TyInt)
56− eDouble = Lam (App (App eAdd (Var fO)) (Var fO))
56+ eDouble = Lam (App (App eAdd (Var fZ)) (Var fZ))
58 app : |(f : Expr G (TyFun a t)) -> Expr G a -> Expr G t
58 app : |(f : Expr G (TyFun a t)) -> Expr G a -> Expr G t
59 app = \f, a => App f a
59 app = \f, a => App f a
61 eFac : Expr G (TyFun TyInt TyInt)
61 eFac : Expr G (TyFun TyInt TyInt)
62− eFac = Lam (If (Op (==) (Var fO) (Val 0))
62+ eFac = Lam (If (Op (==) (Var fZ) (Val 0))
63− (Val 1) (Op (*) (app eFac (Op (-) (Var fO) (Val 1))) (Var fO)))
63+ (Val 1) (Op (*) (app eFac (Op (-) (Var fZ) (Val 1))) (Var fZ)))
65 -- Exercise elaborator: Complicated way of doing \x y => x*4 + y*2
65 -- Exercise elaborator: Complicated way of doing \x y => x*4 + y*2
67 eProg : Expr G (TyFun TyInt (TyFun TyInt TyInt))
67 eProg : Expr G (TyFun TyInt (TyFun TyInt TyInt))
68− eProg = Lam (Lam (Bind (App eDouble (Var (fS fO)))
68+ eProg = Lam (Lam (Bind (App eDouble (Var (fS fZ)))
69− (\x => Bind (App eDouble (Var fO))
69+ (\x => Bind (App eDouble (Var fZ))
70 (\y => Bind (App eDouble (Val x))
70 (\y => Bind (App eDouble (Val x))
71 (\z => App (App eAdd (Val y)) (Val z))))))
71 (\z => App (App eAdd (Val y)) (Val z))))))