src/HOL/Tools/inductive.ML
changeset 33643 b275f26a638b
parent 33598 d7784ad2680d
child 33666 e49bfeb0d822
equal deleted inserted replaced
33642:d983509dbf31 33643:b275f26a638b
   661         Binding.name (space_implode "_" (map (Binding.name_of o fst) cnames_syn))
   661         Binding.name (space_implode "_" (map (Binding.name_of o fst) cnames_syn))
   662       else alt_name;
   662       else alt_name;
   663 
   663 
   664     val ((rec_const, (_, fp_def)), lthy') = lthy
   664     val ((rec_const, (_, fp_def)), lthy') = lthy
   665       |> LocalTheory.conceal
   665       |> LocalTheory.conceal
   666       |> LocalTheory.define Thm.internalK
   666       |> LocalTheory.define ""
   667         ((rec_name, case cnames_syn of [(_, syn)] => syn | _ => NoSyn),
   667         ((rec_name, case cnames_syn of [(_, syn)] => syn | _ => NoSyn),
   668          ((Binding.empty, [Attrib.internal (K Nitpick_Defs.add)]),
   668          ((Binding.empty, [Attrib.internal (K Nitpick_Defs.add)]),
   669          fold_rev lambda params
   669          fold_rev lambda params
   670            (Const (fp_name, (predT --> predT) --> predT) $ fp_fun)))
   670            (Const (fp_name, (predT --> predT) --> predT) $ fp_fun)))
   671       ||> LocalTheory.restore_naming lthy;
   671       ||> LocalTheory.restore_naming lthy;
   684               (list_comb (rec_const, params @ make_bool_args' bs i @
   684               (list_comb (rec_const, params @ make_bool_args' bs i @
   685                 make_args argTs (xs ~~ Ts)))))
   685                 make_args argTs (xs ~~ Ts)))))
   686           end) (cnames_syn ~~ cs);
   686           end) (cnames_syn ~~ cs);
   687     val (consts_defs, lthy'') = lthy'
   687     val (consts_defs, lthy'') = lthy'
   688       |> LocalTheory.conceal
   688       |> LocalTheory.conceal
   689       |> fold_map (LocalTheory.define Thm.internalK) specs
   689       |> fold_map (LocalTheory.define "") specs
   690       ||> LocalTheory.restore_naming lthy';
   690       ||> LocalTheory.restore_naming lthy';
   691     val preds = (case cs of [_] => [rec_const] | _ => map #1 consts_defs);
   691     val preds = (case cs of [_] => [rec_const] | _ => map #1 consts_defs);
   692 
   692 
   693     val mono = prove_mono quiet_mode skip_mono fork_mono predT fp_fun monos lthy'';
   693     val mono = prove_mono quiet_mode skip_mono fork_mono predT fp_fun monos lthy'';
   694     val ((_, [mono']), lthy''') =
   694     val ((_, [mono']), lthy''') =
   695       LocalTheory.note Thm.internalK (apfst Binding.conceal Attrib.empty_binding, [mono]) lthy'';
   695       LocalTheory.note "" (apfst Binding.conceal Attrib.empty_binding, [mono]) lthy'';
   696 
   696 
   697   in (lthy''', rec_name, mono', fp_def', map (#2 o #2) consts_defs,
   697   in (lthy''', rec_name, mono', fp_def', map (#2 o #2) consts_defs,
   698     list_comb (rec_const, params), preds, argTs, bs, xs)
   698     list_comb (rec_const, params), preds, argTs, bs, xs)
   699   end;
   699   end;
   700 
   700