From: Georg Bauhaus on
Ada Gem #80, posted on the AdaCore's own Webnews Bulletin
Board (:-), is about how to call overloaded functions like
Shift_Left in a language that disallows overloading: SPARK.
The solution is to declare SPARK functions to rename the
overloaded Ada functions.

Is there a more general solution involving a small change
to Ada's type system and permitting AS-IF overriding instead?
Like this:
Make the scalar types' operations explicit in some interface.
Then use overriding, not overloading, together with
convention Intrinsic (so that the compiler can omit the
usual dispatching circuitry). Am I making sense?