src/HOL/Tools/record_package.ML
changeset 28370 37f56e6e702d
parent 27691 ce171cbd4b93
child 28965 1de908189869
equal deleted inserted replaced
28369:196bd0305c0d 28370:37f56e6e702d
  1541       ||> Sign.add_consts_i
  1541       ||> Sign.add_consts_i
  1542             (map Syntax.no_syn ((apfst base ext_decl)::dest_decls@upd_decls))
  1542             (map Syntax.no_syn ((apfst base ext_decl)::dest_decls@upd_decls))
  1543       ||>> PureThy.add_defs false (map Thm.no_attributes (ext_spec::dest_specs))
  1543       ||>> PureThy.add_defs false (map Thm.no_attributes (ext_spec::dest_specs))
  1544       ||>> PureThy.add_defs false (map Thm.no_attributes upd_specs)
  1544       ||>> PureThy.add_defs false (map Thm.no_attributes upd_specs)
  1545       |-> (fn args as ((_, dest_defs), upd_defs) =>
  1545       |-> (fn args as ((_, dest_defs), upd_defs) =>
  1546           fold Code.add_default_func dest_defs
  1546           fold Code.add_default_eqn dest_defs
  1547           #> fold Code.add_default_func upd_defs
  1547           #> fold Code.add_default_eqn upd_defs
  1548           #> pair args);
  1548           #> pair args);
  1549     val ((([abs_inject, abs_inverse, abs_induct], ext_def :: dest_defs), upd_defs), defs_thy) =
  1549     val ((([abs_inject, abs_inverse, abs_induct], ext_def :: dest_defs), upd_defs), defs_thy) =
  1550       timeit_msg "record extension type/selector/update defs:" mk_defs;
  1550       timeit_msg "record extension type/selector/update defs:" mk_defs;
  1551 
  1551 
  1552     (* prepare propositions *)
  1552     (* prepare propositions *)
  1947       |> ((PureThy.add_defs false o map Thm.no_attributes) sel_specs)
  1947       |> ((PureThy.add_defs false o map Thm.no_attributes) sel_specs)
  1948       ||>> ((PureThy.add_defs false o map Thm.no_attributes) upd_specs)
  1948       ||>> ((PureThy.add_defs false o map Thm.no_attributes) upd_specs)
  1949       ||>> ((PureThy.add_defs false o map Thm.no_attributes)
  1949       ||>> ((PureThy.add_defs false o map Thm.no_attributes)
  1950              [make_spec, fields_spec, extend_spec, truncate_spec])
  1950              [make_spec, fields_spec, extend_spec, truncate_spec])
  1951       |-> (fn defs as ((sel_defs, upd_defs), derived_defs) =>
  1951       |-> (fn defs as ((sel_defs, upd_defs), derived_defs) =>
  1952           fold Code.add_default_func sel_defs
  1952           fold Code.add_default_eqn sel_defs
  1953           #> fold Code.add_default_func upd_defs
  1953           #> fold Code.add_default_eqn upd_defs
  1954           #> fold Code.add_default_func derived_defs
  1954           #> fold Code.add_default_eqn derived_defs
  1955           #> pair defs)
  1955           #> pair defs)
  1956     val (((sel_defs, upd_defs), derived_defs), defs_thy) =
  1956     val (((sel_defs, upd_defs), derived_defs), defs_thy) =
  1957       timeit_msg "record trfuns/tyabbrs/selectors/updates/make/fields/extend/truncate defs:"
  1957       timeit_msg "record trfuns/tyabbrs/selectors/updates/make/fields/extend/truncate defs:"
  1958         mk_defs;
  1958         mk_defs;
  1959 
  1959