src/HOL/Tools/datatype_package.ML
changeset 17521 0f1c48de39f5
parent 17412 e26cb20ef0cc
child 17875 d81094515061
--- a/src/HOL/Tools/datatype_package.ML	Tue Sep 20 15:12:40 2005 +0200
+++ b/src/HOL/Tools/datatype_package.ML	Tue Sep 20 16:17:34 2005 +0200
@@ -112,7 +112,7 @@
 
 fun constrs_of thy tname = (case datatype_info thy tname of
    SOME {index, descr, ...} =>
-     let val (_, _, constrs) = valOf (assoc (descr, index))
+     let val (_, _, constrs) = valOf (AList.lookup (op =) descr index)
      in SOME (map (fn (cname, _) => Const (cname, Sign.the_const_type thy cname)) constrs)
      end
  | _ => NONE);
@@ -126,7 +126,7 @@
 fun find_tname var Bi =
   let val frees = map dest_Free (term_frees Bi)
       val params = rename_wrt_term Bi (Logic.strip_params Bi);
-  in case assoc (frees @ params, var) of
+  in case AList.lookup (op =) (frees @ params) var of
        NONE => error ("No such variable in subgoal: " ^ quote var)
      | SOME(Type (tn, _)) => tn
      | _ => error ("Cannot determine type of " ^ quote var)
@@ -139,7 +139,7 @@
     val params = Logic.strip_params Bi;   (*params of subgoal i*)
     val params = rev (rename_wrt_term Bi params);   (*as they are printed*)
     val (types, sorts) = types_sorts state;
-    fun types' (a, ~1) = (case assoc (params, a) of NONE => types(a, ~1) | sm => sm)
+    fun types' (a, ~1) = (case AList.lookup (op =) params a of NONE => types(a, ~1) | sm => sm)
       | types' ixn = types ixn;
     val (ct, _) = read_def_cterm (sign, types', sorts) [] false (aterm, TypeInfer.logicT);
   in case #T (rep_cterm ct) of
@@ -261,7 +261,7 @@
 
 fun dt_cases (descr: descr) (_, args, constrs) =
   let
-    fun the_bname i = Sign.base_name (#1 (valOf (assoc (descr, i))));
+    fun the_bname i = Sign.base_name (#1 (valOf (AList.lookup (op =) descr i)));
     val bnames = map the_bname (distinct (List.concat (map dt_recs args)));
   in map (fn (c, _) => space_implode "_" (Sign.base_name c :: bnames)) constrs end;
 
@@ -269,7 +269,7 @@
 fun induct_cases descr =
   DatatypeProp.indexify_names (List.concat (map (dt_cases descr) (map #2 descr)));
 
-fun exhaust_cases descr i = dt_cases descr (valOf (assoc (descr, i)));
+fun exhaust_cases descr i = dt_cases descr (valOf (AList.lookup (op =) descr i));
 
 in
 
@@ -456,7 +456,7 @@
        strip_abs (length dts) t, is_dependent (length dts) t))
       (constrs ~~ fs);
     fun count_cases (cs, (_, _, true)) = cs
-      | count_cases (cs, (cname, (_, body), false)) = (case assoc (cs, body) of
+      | count_cases (cs, (cname, (_, body), false)) = (case AList.lookup (op =) cs body of
           NONE => (body, [cname]) :: cs
         | SOME cnames => AList.update (op =) (body, cnames @ [cname]) cs);
     val cases' = sort (int_ord o Library.swap o pairself (length o snd))
@@ -489,7 +489,7 @@
 
 fun read_typ sign ((Ts, sorts), str) =
   let
-    val T = Type.no_tvars (Sign.read_typ (sign, (curry assoc)
+    val T = Type.no_tvars (Sign.read_typ (sign, AList.lookup (op =)
       (map (apfst (rpair ~1)) sorts)) str) handle TYPE (msg, _, _) => error msg
   in (Ts @ [T], add_typ_tfrees (T, sorts)) end;