src/Tools/induct.ML
changeset 35624 c4e29a0bb8c1
parent 35400 1fad91c02b98
child 35625 9c818cab0dd0
equal deleted inserted replaced
35623:b0de8551fadf 35624:c4e29a0bb8c1
   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