 denote the same set of values; but this would not be so
   for a range over numeric.
  </p><p>
   A discrete range type should have a <em class="firstterm">canonicalization</em>
   function that is aware of the desired step size for the element type.
   The canonicalization function is charged with converting equivalent values
   of the range type to have identical representations, in particular
   consistently inclusive or exclusive bounds.
   If a canonicalization function is not specified, then ranges w