src/HOL/Tools/primrec_package.ML
changeset 17412 e26cb20ef0cc
parent 17314 04e21a27c0ad
child 17959 8db36a108213
equal deleted inserted replaced
17411:664434175578 17412:e26cb20ef0cc
   201 
   201 
   202 (* find datatypes which contain all datatypes in tnames' *)
   202 (* find datatypes which contain all datatypes in tnames' *)
   203 
   203 
   204 fun find_dts (dt_info : datatype_info Symtab.table) _ [] = []
   204 fun find_dts (dt_info : datatype_info Symtab.table) _ [] = []
   205   | find_dts dt_info tnames' (tname::tnames) =
   205   | find_dts dt_info tnames' (tname::tnames) =
   206       (case Symtab.curried_lookup dt_info tname of
   206       (case Symtab.lookup dt_info tname of
   207           NONE => primrec_err (quote tname ^ " is not a datatype")
   207           NONE => primrec_err (quote tname ^ " is not a datatype")
   208         | SOME dt =>
   208         | SOME dt =>
   209             if tnames' subset (map (#1 o snd) (#descr dt)) then
   209             if tnames' subset (map (#1 o snd) (#descr dt)) then
   210               (tname, dt)::(find_dts dt_info tnames' tnames)
   210               (tname, dt)::(find_dts dt_info tnames' tnames)
   211             else find_dts dt_info tnames' tnames);
   211             else find_dts dt_info tnames' tnames);