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