signature Integer = sig (* * Types *) eqtype int; (* * Binary Operations *) val + : int * int -> int and - : int * int -> int and * : int * int -> int and div : int * int -> int and mod : int * int -> int (* * Unary Operations *) and ~ : int -> int and abs : int -> int and real : int -> real and floor : real -> int (* * Predicates *) and < : int * int -> bool and <= : int * int -> bool and >= : int * int -> bool and > : int * int -> bool end; structure Integer : Integer = struct type int = int (* * Binary Operations *) val op + = op + : int * int -> int and op - = op - : int * int -> int and op * = op * : int * int -> int and op div = op div : int * int -> int and op mod = op mod : int * int -> int (* * Unary Operations *) and ~ = ~ : int -> int and abs = abs : int -> int and real = real : int -> real and floor = floor: real -> int (* * Predicates *) and op < = op < : int * int -> bool and op <= = op <= : int * int -> bool and op > = op > : int * int -> bool and op >= = op >= : int * int -> bool end;