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 |