let rec export_tau fmt = function
| Integer -> pp_print_string fmt "int"
| Real -> pp_print_string fmt "real"
| Boolean -> pp_print_string fmt "bool"
| Pointer -> pp_print_string fmt "pointer"
| Record _ -> pp_print_string fmt "data farray"
| Array arr ->
Format.fprintf fmt "%a farray"
export_tau (Datalib.Tau.tau_of_logic_ctype arr.Ctypes.arr_element)
| Set te ->
Format.fprintf fmt "%a set" export_tau te
| ADT(s,[]) -> pp_print_string fmt s
| ADT(s,[t]) -> Format.fprintf fmt "%a %s" export_tau t s
| ADT(s,t::ts) ->
Format.fprintf fmt "@[(%a" export_tau t ;
List.iter (fun t -> Format.fprintf fmt ",@,%a" export_tau t) ts ;
Format.fprintf fmt ") %s@]" s