let inter d1 d2 =
  match d1, d2 with
    | Real, _ -> d2
    | _, Real -> d1
    | IntInt -> Int
    | NonintNonint -> Nonint
    | IntNonint -> raise Empty
    | NonintInt -> raise Empty