let rec pp_term pp_data fmt t =
let term = pp_term pp_data in
match t with
| Tconst c ->
constant fmt c
| Tvar v ->
pp_var fmt v
| Tdata d ->
fprintf fmt "%a" pp_data d
| Tapp (id, []) ->
fprintf fmt "%s" id
| Tapp (id, tl) ->
fprintf fmt "%s(%a)" id (print_list comma term) tl
| Tif (c,t,e) -> fprintf fmt "if %a then %a else %a" term c term t term e