src/Pure/Isar/expression.ML
changeset 71019 c9f5f724abc0
parent 71018 d32ed8927a42
child 71166 c9433e8e314e
equal deleted inserted replaced
71018:d32ed8927a42 71019:c9f5f724abc0
   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