src/HOL/Tools/datatype_package.ML
changeset 21251 94e77628a47d
parent 21243 afffe1f72143
child 21253 f1e3967d559a
equal deleted inserted replaced
21250:a268f6288fb6 21251:94e77628a47d
   731       |> add_cases_induct dt_infos induct
   731       |> add_cases_induct dt_infos induct
   732       |> Theory.parent_path
   732       |> Theory.parent_path
   733       |> store_thmss "splits" new_type_names (map (fn (x, y) => [x, y]) split_thms)
   733       |> store_thmss "splits" new_type_names (map (fn (x, y) => [x, y]) split_thms)
   734       |> snd
   734       |> snd
   735       |> DatatypeRealizer.add_dt_realizers sorts (map snd dt_infos)
   735       |> DatatypeRealizer.add_dt_realizers sorts (map snd dt_infos)
   736       |> DatatypeHooks.invoke (map fst dt_infos);
   736       |> DatatypeHooks.all (map fst dt_infos);
   737   in
   737   in
   738     ({distinct = distinct,
   738     ({distinct = distinct,
   739       inject = inject,
   739       inject = inject,
   740       exhaustion = exhaustion,
   740       exhaustion = exhaustion,
   741       rec_thms = rec_thms,
   741       rec_thms = rec_thms,
   791       |> put_datatypes (fold Symtab.update dt_infos dt_info)
   791       |> put_datatypes (fold Symtab.update dt_infos dt_info)
   792       |> add_cases_induct dt_infos induct
   792       |> add_cases_induct dt_infos induct
   793       |> Theory.parent_path
   793       |> Theory.parent_path
   794       |> store_thmss "splits" new_type_names (map (fn (x, y) => [x, y]) split_thms) |> snd
   794       |> store_thmss "splits" new_type_names (map (fn (x, y) => [x, y]) split_thms) |> snd
   795       |> DatatypeRealizer.add_dt_realizers sorts (map snd dt_infos)
   795       |> DatatypeRealizer.add_dt_realizers sorts (map snd dt_infos)
   796       |> DatatypeHooks.invoke (map fst dt_infos);
   796       |> DatatypeHooks.all (map fst dt_infos);
   797   in
   797   in
   798     ({distinct = distinct,
   798     ({distinct = distinct,
   799       inject = inject,
   799       inject = inject,
   800       exhaustion = casedist_thms,
   800       exhaustion = casedist_thms,
   801       rec_thms = rec_thms,
   801       rec_thms = rec_thms,
   904       |> add_cases_induct dt_infos induction'
   904       |> add_cases_induct dt_infos induction'
   905       |> Theory.parent_path
   905       |> Theory.parent_path
   906       |> store_thmss "splits" new_type_names (map (fn (x, y) => [x, y]) split_thms)
   906       |> store_thmss "splits" new_type_names (map (fn (x, y) => [x, y]) split_thms)
   907       |> snd
   907       |> snd
   908       |> DatatypeRealizer.add_dt_realizers sorts (map snd dt_infos)
   908       |> DatatypeRealizer.add_dt_realizers sorts (map snd dt_infos)
   909       |> DatatypeHooks.invoke (map fst dt_infos);
   909       |> DatatypeHooks.all (map fst dt_infos);
   910   in
   910   in
   911     ({distinct = distinct,
   911     ({distinct = distinct,
   912       inject = inject,
   912       inject = inject,
   913       exhaustion = casedist_thms,
   913       exhaustion = casedist_thms,
   914       rec_thms = rec_thms,
   914       rec_thms = rec_thms,