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