let interp_boolean ~contains_zero ~contains_non_zero =
    match contains_zero, contains_non_zero with
    | truetrue -> zero_or_one
    | truefalse -> singleton_zero
    | falsetrue -> singleton_one
    | falsefalse -> bottom