let rec pp_print_type ppf t = pp_print_type_node ppf (Type.node_of_type t) and pp_print_type_node ppf = function | Type.Bool -> Format.pp_print_string ppf "bool" | Type.Int -> Format.pp_print_string ppf "int" | Type.IntRange (i, j, _) -> Format.fprintf ppf "(subrange %a %a)" Numeral.pp_print_numeral i Numeral.pp_print_numeral j | Type.Real -> Format.pp_print_string ppf "real" | Type.Abstr s -> Format.pp_print_string ppf s (* | BV i -> Format.fprintf ppf "(bitvector %d)" i *) | Type.Array (te, ti) -> Format.fprintf ppf "(-> %a %a)" pp_print_type ti pp_print_type te