Generics, Lifting
What?
function min(x, y : integer) return integer is
   begin
      if x < y then return x; else return y; end if;
   end min;
function min (x, y : float) return float is
   begin
      if x < y then return x; else return y; end if;
   end min;
function min (x, y : complex) return complex is ...