module T = Term module C = Common type lvl = Lvl of int type closure = C of env * T.term and closure2 = C2 of env * T.term (* 2 variables missing *) and env = value list and value = Type | T0 | T1 | T1vl | TNat | Suc of value | Zero | TBool | True | False | Pi of value * closure | Lam of closure | Sg of value * closure | Pair of value * value | Stuck of stuck * value (* second arg is type *) and stuck = Var of lvl | Meta of C.meta | Ind0 of closure * stuck | IndN of closure * value * closure2 * stuck | IndB of closure * value * value * stuck | App of stuck * value * value (* fn; val; type of fn *) | Fst of stuck | Snd of stuck