681 fun add_defs def_insts = |
681 fun add_defs def_insts = |
682 let |
682 let |
683 fun add (SOME (_, (t, true))) ctxt = ((SOME t, []), ctxt) |
683 fun add (SOME (_, (t, true))) ctxt = ((SOME t, []), ctxt) |
684 | add (SOME (SOME x, (t, _))) ctxt = |
684 | add (SOME (SOME x, (t, _))) ctxt = |
685 let val ([(lhs, (_, th))], ctxt') = |
685 let val ([(lhs, (_, th))], ctxt') = |
686 LocalDefs.add_defs [((x, NoSyn), (Thm.empty_binding, t))] ctxt |
686 Local_Defs.add_defs [((x, NoSyn), (Thm.empty_binding, t))] ctxt |
687 in ((SOME lhs, [th]), ctxt') end |
687 in ((SOME lhs, [th]), ctxt') end |
688 | add (SOME (NONE, (t as Free _, _))) ctxt = ((SOME t, []), ctxt) |
688 | add (SOME (NONE, (t as Free _, _))) ctxt = ((SOME t, []), ctxt) |
689 | add (SOME (NONE, (t, _))) ctxt = |
689 | add (SOME (NONE, (t, _))) ctxt = |
690 let |
690 let |
691 val ([s], _) = Name.variants ["x"] (Variable.names_of ctxt); |
691 val ([s], _) = Name.variants ["x"] (Variable.names_of ctxt); |
692 val ([(lhs, (_, th))], ctxt') = |
692 val ([(lhs, (_, th))], ctxt') = |
693 LocalDefs.add_defs [((Binding.name s, NoSyn), |
693 Local_Defs.add_defs [((Binding.name s, NoSyn), |
694 (Thm.empty_binding, t))] ctxt |
694 (Thm.empty_binding, t))] ctxt |
695 in ((SOME lhs, [th]), ctxt') end |
695 in ((SOME lhs, [th]), ctxt') end |
696 | add NONE ctxt = ((NONE, []), ctxt); |
696 | add NONE ctxt = ((NONE, []), ctxt); |
697 in fold_map add def_insts #> apfst (split_list #> apsnd flat) end; |
697 in fold_map add def_insts #> apfst (split_list #> apsnd flat) end; |
698 |
698 |