module V = Value module T = Term let rec index : V.env -> int -> V.value = fun env i -> match env with | [] -> failwith "Can't happen" | x :: xs -> if i < 1 then x else index xs (i-1) let rec eval : V.env -> t.term -> V.value = fun env tr -> match tr with | Var i -> index env i | Type -> V.Type | T0 -> V.T0 | Ind0 (B b, t) -> failwith "todo" | T1 -> V.T1 | T1tr -> V.T1tr | Ind1 (B b, t1 tr) -> failwith "todo" | TNat -> V.TNat | Zero -> V.Zero | Suc n -> failwith "todo" | IndN (B b, tz, B B ts, n) -> failwith "todo" | TBool -> failwith "todo" | True -> failwith "todo" | False -> failwith "todo" | IndB (B b, tt, tf, b) -> failwith "todo" | Pi (dom, B cod) -> failwith "todo" | Lam (B body) -> failwith "todo" | App (f, x) -> failwith "todo" | Sg (ty, tr) -> failwith "todo" | Pair (x, y) -> failwith "todo" | Fst tr -> failwith "todo" | Snd tr -> failwith "todo"