src/Pure/General/integer.ML
changeset 33002 f3f02f36a3e2
parent 29606 fedb8be05f24
child 33029 2fefe039edf1
--- a/src/Pure/General/integer.ML	Mon Oct 19 16:47:21 2009 +0200
+++ b/src/Pure/General/integer.ML	Mon Oct 19 21:54:57 2009 +0200
@@ -1,13 +1,16 @@
 (*  Title:      Pure/General/integer.ML
     Author:     Florian Haftmann, TU Muenchen
 
-Unbounded integers.
+Auxiliary operations on (unbounded) integers.
 *)
 
 signature INTEGER =
 sig
+  val add: int -> int -> int
+  val mult: int -> int -> int
+  val sum: int list -> int
+  val prod: int list -> int
   val sign: int -> order
-  val sum: int list -> int
   val div_mod: int -> int -> int * int
   val square: int -> int
   val pow: int -> int -> int (* exponent -> base -> result *)
@@ -20,9 +23,13 @@
 structure Integer : INTEGER =
 struct
 
-fun sign x = int_ord (x, 0);
+fun add x y = x + y;
+fun mult x y = x * y;
 
-fun sum xs = fold (curry op +) xs 0;
+fun sum xs = fold add xs 0;
+fun prod xs = fold mult xs 1;
+
+fun sign x = int_ord (x, 0);
 
 fun div_mod x y = IntInf.divMod (x, y);