750 val abinding = |
750 val abinding = |
751 if null ints then binding else Binding.suffix_name ("_" ^ axiomsN) binding; |
751 if null ints then binding else Binding.suffix_name ("_" ^ axiomsN) binding; |
752 val ((statement, intro, axioms), thy') = |
752 val ((statement, intro, axioms), thy') = |
753 thy |
753 thy |
754 |> def_pred abinding parms defs' exts exts'; |
754 |> def_pred abinding parms defs' exts exts'; |
755 val (_, thy'') = |
755 val ((_, [intro']), thy'') = |
756 thy' |
756 thy' |
757 |> Sign.qualified_path true abinding |
757 |> Sign.qualified_path true abinding |
758 |> Global_Theory.note_thms "" |
758 |> Global_Theory.note_thms "" |
759 ((Binding.name introN, []), [([intro], [Locale.unfold_add])]) |
759 ((Binding.name introN, []), [([intro], [Locale.unfold_add])]) |
760 ||> Sign.restore_naming thy'; |
760 ||> Sign.restore_naming thy'; |
761 in (SOME statement, SOME intro, axioms, thy'') end; |
761 in (SOME statement, SOME intro', axioms, thy'') end; |
762 val (b_pred, b_intro, b_axioms, thy'''') = |
762 val (b_pred, b_intro, b_axioms, thy'''') = |
763 if null ints then (NONE, NONE, [], thy'') |
763 if null ints then (NONE, NONE, [], thy'') |
764 else |
764 else |
765 let |
765 let |
766 val ((statement, intro, axioms), thy''') = |
766 val ((statement, intro, axioms), thy''') = |
767 thy'' |
767 thy'' |
768 |> def_pred binding parms defs' (ints @ the_list a_pred) (ints' @ the_list a_pred); |
768 |> def_pred binding parms defs' (ints @ the_list a_pred) (ints' @ the_list a_pred); |
769 val ctxt''' = Proof_Context.init_global thy'''; |
769 val ctxt''' = Proof_Context.init_global thy'''; |
770 val (_, thy'''') = |
770 val ([(_, [intro']), _], thy'''') = |
771 thy''' |
771 thy''' |
772 |> Sign.qualified_path true binding |
772 |> Sign.qualified_path true binding |
773 |> Global_Theory.note_thmss "" |
773 |> Global_Theory.note_thmss "" |
774 [((Binding.name introN, []), [([intro], [Locale.intro_add])]), |
774 [((Binding.name introN, []), [([intro], [Locale.intro_add])]), |
775 ((Binding.name axiomsN, []), |
775 ((Binding.name axiomsN, []), |
776 [(map (Drule.export_without_context o Element.conclude_witness ctxt''') axioms, |
776 [(map (Drule.export_without_context o Element.conclude_witness ctxt''') axioms, |
777 [])])] |
777 [])])] |
778 ||> Sign.restore_naming thy'''; |
778 ||> Sign.restore_naming thy'''; |
779 in (SOME statement, SOME intro, axioms, thy'''') end; |
779 in (SOME statement, SOME intro', axioms, thy'''') end; |
780 in ((a_pred, a_intro, a_axioms), (b_pred, b_intro, b_axioms), thy'''') end; |
780 in ((a_pred, a_intro, a_axioms), (b_pred, b_intro, b_axioms), thy'''') end; |
781 |
781 |
782 end; |
782 end; |
783 |
783 |
784 |
784 |