319 Logic.mk_equals (list_comb (Const (name, caseT), fns1), |
319 Logic.mk_equals (list_comb (Const (name, caseT), fns1), |
320 list_comb (reccomb, (List.concat (Library.take (i, case_dummy_fns))) @ |
320 list_comb (reccomb, (List.concat (Library.take (i, case_dummy_fns))) @ |
321 fns2 @ (List.concat (Library.drop (i + 1, case_dummy_fns))) ))); |
321 fns2 @ (List.concat (Library.drop (i + 1, case_dummy_fns))) ))); |
322 val ([def_thm], thy') = |
322 val ([def_thm], thy') = |
323 thy |
323 thy |
324 |> Sign.add_consts_authentic [] [decl] |
324 |> Sign.declare_const [] decl |> snd |
325 |> (PureThy.add_defs_i false o map Thm.no_attributes) [def]; |
325 |> (PureThy.add_defs_i false o map Thm.no_attributes) [def]; |
326 |
326 |
327 in (defs @ [def_thm], thy') |
327 in (defs @ [def_thm], thy') |
328 end) (([], thy1), (hd descr) ~~ newTs ~~ case_names ~~ |
328 end) (([], thy1), (hd descr) ~~ newTs ~~ case_names ~~ |
329 (Library.take (length newTs, reccomb_names))); |
329 (Library.take (length newTs, reccomb_names))); |