let pretty_typ typ fmt i =
    let typ =
      match typ with
        Some t -> t
      | None ->
          Cil_types.TArray
            (Cil_types.TInt(Cil_types.IUChar,[]),
             Some (Cil.kinteger64
                     ~loc:(Cil.CurrentLoc.get ())
                     Cil_types.IULongLong
                     (My_bigint.of_int64 922337203685477580L)
                     (* See Cuoq for rational *)),
             Cil.empty_size_cache (),
             [])
    in
    match i with
    | Top -> Format.fprintf fmt "[..]"
    | Set s ->
        if s=[] then Format.fprintf fmt "BottomISet"
        else begin
          let pp_one fmt (b,e)=
            assert (Int.le b e) ;
            ignore (Bit_utils.pretty_bits typ
                      ~use_align:false
                      ~align:Int.zero
                      ~rh_size:Int.one
                      ~start:b ~stop:e fmt) in
          let pp_stmt fmt r = Format.fprintf fmt "%a;@ " pp_one r in
          match s with
            | [] -> Format.pp_print_string fmt "{}"
            | [r] -> pp_one fmt r
            | s ->
                Format.fprintf fmt "@[<hov 1>{" ;
                List.iter (pp_stmt fmt) s ;
                Format.fprintf fmt "}@]" ;
        end