sig val sum : int list -> int val rev : 'a list -> 'a list val max2 : 'a list -> 'a val all_pairs : 'a list -> ('a * 'a) list end