src/HOL/Tools/BNF/bnf_fp_def_sugar.ML
changeset 55356 3ea8ace6bc8a
parent 55347 a87e49f4336d
child 55394 d5ebe055b599
equal deleted inserted replaced
55355:b5b64d9d1002 55356:3ea8ace6bc8a
   178 
   178 
   179 (* TODO: register "sum" and "prod" as datatypes to enable N2M reduction for them *)
   179 (* TODO: register "sum" and "prod" as datatypes to enable N2M reduction for them *)
   180 
   180 
   181 fun register_fp_sugar key fp_sugar =
   181 fun register_fp_sugar key fp_sugar =
   182   Local_Theory.declaration {syntax = false, pervasive = true}
   182   Local_Theory.declaration {syntax = false, pervasive = true}
   183     (fn phi => Data.map (Symtab.update (key, morph_fp_sugar phi fp_sugar)));
   183     (fn phi => Data.map (Symtab.default (key, morph_fp_sugar phi fp_sugar)));
   184 
   184 
   185 fun register_fp_sugars fp pre_bnfs nested_bnfs nesting_bnfs (fp_res as {Ts, ...}) ctr_defss
   185 fun register_fp_sugars fp pre_bnfs nested_bnfs nesting_bnfs (fp_res as {Ts, ...}) ctr_defss
   186     ctr_sugars co_iterss mapss co_inducts co_iter_thmsss disc_co_itersss sel_co_iterssss lthy =
   186     ctr_sugars co_iterss mapss co_inducts co_iter_thmsss disc_co_itersss sel_co_iterssss lthy =
   187   (0, lthy)
   187   (0, lthy)
   188   |> fold (fn T as Type (s, _) => fn (kk, lthy) => (kk + 1,
   188   |> fold (fn T as Type (s, _) => fn (kk, lthy) => (kk + 1,