let rec check_term m t =
if m < 0 then raise Huge ;
match t with
| Tconst _ | Tvar _ | Tdata _ -> pred m
| Tapp(_,ts) -> List.fold_left check_term (pred m) ts
| Tif(a,b,c) -> check_term (check_term (check_term (pred m) a) b) c
| Tlet(_,a,b) -> check_term (check_term (pred m) a) b