src/HOL/Tools/datatype_package.ML
changeset 15661 9ef583b08647
parent 15574 b1d1b5bfc464
child 15703 727ef1b8b3ee
equal deleted inserted replaced
15660:255055554c67 15661:9ef583b08647
   943     val (dts', constr_syntax, sorts', i) = Library.foldl prep_dt_spec (([], [], [], 0), dts);
   943     val (dts', constr_syntax, sorts', i) = Library.foldl prep_dt_spec (([], [], [], 0), dts);
   944     val sorts = sorts' @ (map (rpair (Sign.defaultS sign)) (tyvars \\ map fst sorts'));
   944     val sorts = sorts' @ (map (rpair (Sign.defaultS sign)) (tyvars \\ map fst sorts'));
   945     val dt_info = get_datatypes thy;
   945     val dt_info = get_datatypes thy;
   946     val (descr, _) = unfold_datatypes sign dts' sorts dt_info dts' i;
   946     val (descr, _) = unfold_datatypes sign dts' sorts dt_info dts' i;
   947     val _ = check_nonempty descr handle (exn as Datatype_Empty s) =>
   947     val _ = check_nonempty descr handle (exn as Datatype_Empty s) =>
   948       if err then error ("NONEmptiness check failed for datatype " ^ s)
   948       if err then error ("Nonemptiness check failed for datatype " ^ s)
   949       else raise exn;
   949       else raise exn;
   950 
   950 
   951     val descr' = List.concat descr;
   951     val descr' = List.concat descr;
   952     val case_names_induct = mk_case_names_induct descr';
   952     val case_names_induct = mk_case_names_induct descr';
   953     val case_names_exhausts = mk_case_names_exhausts descr' (map #1 new_dts);
   953     val case_names_exhausts = mk_case_names_exhausts descr' (map #1 new_dts);