let constant fmt = function
  | ConstInt n ->
     let k = Big_int.big_int_of_string n in
     if Big_int.lt_big_int k Big_int.zero_big_int then
       pp_print_string fmt ("( "^n^" )")
     else pp_print_string fmt n
  | ConstBool b -> pp_print_string fmt (if b then "true" else "false")
  | ConstUnit -> pp_print_string fmt "void"
  | ConstFloat f -> fprintf fmt "%s%%R" (Kreal.convert f)