672 val ((statement, intro, axioms), thy') = |
672 val ((statement, intro, axioms), thy') = |
673 thy |
673 thy |
674 |> def_pred aname parms defs' exts exts'; |
674 |> def_pred aname parms defs' exts exts'; |
675 val (_, thy'') = |
675 val (_, thy'') = |
676 thy' |
676 thy' |
677 |> Sign.add_path (Binding.name_of aname) |
677 |> Sign.sticky_prefix (Binding.name_of aname) |
678 |> Sign.no_base_names |
|
679 |> PureThy.note_thmss Thm.internalK |
678 |> PureThy.note_thmss Thm.internalK |
680 [((Binding.name introN, []), [([intro], [Locale.unfold_attrib])])] |
679 [((Binding.name introN, []), [([intro], [Locale.unfold_attrib])])] |
681 ||> Sign.restore_naming thy'; |
680 ||> Sign.restore_naming thy'; |
682 in (SOME statement, SOME intro, axioms, thy'') end; |
681 in (SOME statement, SOME intro, axioms, thy'') end; |
683 val (b_pred, b_intro, b_axioms, thy'''') = |
682 val (b_pred, b_intro, b_axioms, thy'''') = |
687 val ((statement, intro, axioms), thy''') = |
686 val ((statement, intro, axioms), thy''') = |
688 thy'' |
687 thy'' |
689 |> def_pred pname parms defs' (ints @ the_list a_pred) (ints' @ the_list a_pred); |
688 |> def_pred pname parms defs' (ints @ the_list a_pred) (ints' @ the_list a_pred); |
690 val (_, thy'''') = |
689 val (_, thy'''') = |
691 thy''' |
690 thy''' |
692 |> Sign.add_path (Binding.name_of pname) |
691 |> Sign.sticky_prefix (Binding.name_of pname) |
693 |> Sign.no_base_names |
|
694 |> PureThy.note_thmss Thm.internalK |
692 |> PureThy.note_thmss Thm.internalK |
695 [((Binding.name introN, []), [([intro], [Locale.intro_attrib])]), |
693 [((Binding.name introN, []), [([intro], [Locale.intro_attrib])]), |
696 ((Binding.name axiomsN, []), |
694 ((Binding.name axiomsN, []), |
697 [(map (Drule.standard o Element.conclude_witness) axioms, [])])] |
695 [(map (Drule.standard o Element.conclude_witness) axioms, [])])] |
698 ||> Sign.restore_naming thy'''; |
696 ||> Sign.restore_naming thy'''; |