tuned Type.unify;
authorwenzelm
Tue, 18 Dec 2001 02:17:20 +0100
changeset 12527 d6c91bc3e49c
parent 12526 1b9db2581fe2
child 12528 b8bc541a4544
tuned Type.unify;
src/HOL/Tools/inductive_package.ML
src/Pure/Proof/reconstruct.ML
src/Pure/drule.ML
src/Pure/pattern.ML
src/Pure/unify.ML
--- a/src/HOL/Tools/inductive_package.ML	Mon Dec 17 14:27:18 2001 +0100
+++ b/src/HOL/Tools/inductive_package.ML	Tue Dec 18 02:17:20 2001 +0100
@@ -190,7 +190,7 @@
     val intr_consts = foldl add_term_consts_2 ([], intr_ts');
     fun unify (env, (cname, cT)) =
       let val consts = map snd (filter (fn c => fst c = cname) intr_consts)
-      in foldl (fn ((env', j'), Tp) => (Type.unify tsig j' env' Tp))
+      in foldl (fn ((env', j'), Tp) => (Type.unify tsig (env', j') Tp))
           (env, (replicate (length consts) cT) ~~ consts)
       end;
     val (env, _) = foldl unify ((Vartab.empty, i'), rec_consts);
--- a/src/Pure/Proof/reconstruct.ML	Mon Dec 17 14:27:18 2001 +0100
+++ b/src/Pure/Proof/reconstruct.ML	Tue Dec 18 02:17:20 2001 +0100
@@ -97,7 +97,7 @@
 fun unifyT sg env T U =
   let
     val Envir.Envir {asol, iTs, maxidx} = env;
-    val (iTs', maxidx') = Type.unify (Sign.tsig_of sg) maxidx iTs (T, U)
+    val (iTs', maxidx') = Type.unify (Sign.tsig_of sg) (iTs, maxidx) (T, U)
   in Envir.Envir {asol=asol, iTs=iTs', maxidx=maxidx'} end
   handle Type.TUNIFY => error ("Non-unifiable types:\n" ^
     Sign.string_of_typ sg T ^ "\n\n" ^ Sign.string_of_typ sg U);
--- a/src/Pure/drule.ML	Mon Dec 17 14:27:18 2001 +0100
+++ b/src/Pure/drule.ML	Tue Dec 18 02:17:20 2001 +0100
@@ -706,7 +706,7 @@
         and {sign=signu, t=u, T= U, maxidx=maxu,...} = rep_cterm cu;
         val maxi = Int.max(maxidx, Int.max(maxt, maxu));
         val sign' = Sign.merge(sign, Sign.merge(signt, signu))
-        val (tye',maxi') = Type.unify (#tsig(Sign.rep_sg sign')) maxi tye (T,U)
+        val (tye',maxi') = Type.unify (#tsig(Sign.rep_sg sign')) (tye, maxi) (T, U)
           handle Type.TUNIFY => raise TYPE("Ill-typed instantiation", [T,U], [t,u])
     in  (sign', tye', maxi')  end;
 in
--- a/src/Pure/pattern.ML	Mon Dec 17 14:27:18 2001 +0100
+++ b/src/Pure/pattern.ML	Tue Dec 18 02:17:20 2001 +0100
@@ -183,7 +183,7 @@
 
 fun unify_types(T,U, env as Envir.Envir{asol,iTs,maxidx}) =
   if T=U then env
-  else let val (iTs',maxidx') = Type.unify (!tsgr) maxidx iTs (U,T)
+  else let val (iTs',maxidx') = Type.unify (!tsgr) (iTs, maxidx) (U, T)
        in Envir.Envir{asol=asol,maxidx=maxidx',iTs=iTs'} end
        handle Type.TUNIFY => raise Unif;
 
--- a/src/Pure/unify.ML	Mon Dec 17 14:27:18 2001 +0100
+++ b/src/Pure/unify.ML	Tue Dec 18 02:17:20 2001 +0100
@@ -179,8 +179,7 @@
 
 fun unify_types(T,U, env as Envir.Envir{asol,iTs,maxidx}) =
   if T=U then env
-  else let val (iTs',maxidx') = Type.unify (#tsig(Sign.rep_sg (!sgr)))
-                                                maxidx iTs (U,T)
+  else let val (iTs',maxidx') = Type.unify (#tsig(Sign.rep_sg (!sgr))) (iTs, maxidx) (U, T)
        in Envir.Envir{asol=asol,maxidx=maxidx',iTs=iTs'} end
        handle Type.TUNIFY => raise CANTUNIFY;