I'm not sure this strictness is justified. Theoretically there might be lazy numeric types that we might want to use this with. And anyways, if the user is invoking `ival` or `ival'` to construct an `Interval`, then the code will perform `<=`, which in most cases will force the numbers at that point so they can be compared.