let pp fmt = function
    | Unconstrained -> Pretty.string fmt "unconstrained"
    | Real(d) -> Dom.pp fmt d
    | Bitvector(n) -> Format.fprintf fmt "bitvector[%d]" n