let rec export_tau fmt = function
| Integer -> pp_print_string fmt "Z"
| Real -> pp_print_string fmt "R"
| Boolean -> pp_print_string fmt "bool"
| Pointer t -> export_tau fmt t
| Record c ->
let rname = String.capitalize c.Cil_types.cname in
Format.fprintf fmt "%s" rname
| Array arr ->
Format.fprintf fmt "(array %a)"
export_tau (L.tau_of_ctype_logic arr.Ctypes.arr_element)
| Set te ->
Format.fprintf fmt "(set %a)" export_tau te
| ADT(s,[]) -> pp_print_string fmt s
| ADT("farray",[t]) -> Format.fprintf fmt "(array %a)" export_tau t
| ADT(s,[t]) -> Format.fprintf fmt "(%s %a)" s export_tau t
| ADT(s,t::ts) ->
Format.fprintf fmt "@ (%s " s;
Format.fprintf fmt "@ %a " export_tau t ;
List.iter (fun t -> Format.fprintf fmt "@ %a" export_tau t) ts;
Format.fprintf fmt ")"