type var = Ix of int type name = string type icit = Imp | Exp type ast = Var of var | Type | T0 | Ind0 of ast * ast | T1 | T1tr (* Unit eta rule instead of elimination principle *) | TNat | Zero | Suc of ast | IndN of ast * ast * ast * ast | TBool | True | False | IndB of ast * ast * ast * ast (* ordered true, false *) | Pi of icit * ast * ast | Lam of icit * ast | App of icit * ast | Sg of ast * ast | Pair of ast * ast | Fst of ast | Snd of ast | Let of ast * ast * ast (* tr : ty in sc *)