--- a/src/Pure/type.ML	Sat May 20 23:37:03 2006 +0200
+++ b/src/Pure/type.ML	Sat May 20 23:37:04 2006 +0200
@@ -55,6 +55,7 @@
   val typ_match: tsig -> typ * typ -> tyenv -> tyenv
   val typ_instance: tsig -> typ * typ -> bool
   val raw_match: typ * typ -> tyenv -> tyenv
+  val raw_matches: typ list * typ list -> tyenv -> tyenv
   val raw_instance: typ * typ -> bool
   exception TUNIFY
   val unify: tsig -> typ * typ -> tyenv * int -> tyenv * int
@@ -340,7 +341,8 @@
       if x = y then subs else raise TYPE_MATCH
   | raw_match _ _ = raise TYPE_MATCH
 and raw_matches (T :: Ts, U :: Us) subs = raw_matches (Ts, Us) (raw_match (T, U) subs)
-  | raw_matches _ subs = subs;
+  | raw_matches ([], []) subs = subs
+  | raw_matches _ _ = raise TYPE_MATCH;
 
 fun raw_instance (T, U) =
   (raw_match (U, T) Vartab.empty; true) handle TYPE_MATCH => false;