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
| Type.Array (te, ti) ->
Format.fprintf
ppf
"(-> %a %a)"
pp_print_type ti
pp_print_type te