equal
deleted
inserted
replaced
1064 case_thms_of_term lthy bound_Ts raw_rhs; |
1064 case_thms_of_term lthy bound_Ts raw_rhs; |
1065 |
1065 |
1066 val raw_code_thm = mk_primcorec_raw_code_of_ctr_tac lthy distincts discIs sel_splits |
1066 val raw_code_thm = mk_primcorec_raw_code_of_ctr_tac lthy distincts discIs sel_splits |
1067 sel_split_asms ms ctr_thms |
1067 sel_split_asms ms ctr_thms |
1068 |> K |> Goal.prove lthy [] [] raw_t; |
1068 |> K |> Goal.prove lthy [] [] raw_t; |
1069 val _ = tracing ("raw code theorem: " ^ Syntax.string_of_term lthy (prop_of raw_code_thm)); |
|
1070 in |
1069 in |
1071 mk_primcorec_code_of_raw_code_tac lthy distincts sel_splits raw_code_thm |
1070 mk_primcorec_code_of_raw_code_tac lthy distincts sel_splits raw_code_thm |
1072 |> K |> Goal.prove lthy [] [] t |
1071 |> K |> Goal.prove lthy [] [] t |
1073 |> tap (tracing o curry (op ^) "code theorem: " o Syntax.string_of_term lthy o prop_of) |
|
1074 |> single |
1072 |> single |
1075 end) |
1073 end) |
1076 handle ERROR s => (warning s; []) (*###*) |
|
1077 end; |
1074 end; |
1078 |
1075 |
1079 val disc_alists = map3 (maps oo prove_disc) corec_specs exclssss disc_eqnss; |
1076 val disc_alists = map3 (maps oo prove_disc) corec_specs exclssss disc_eqnss; |
1080 val sel_alists = map4 (map ooo prove_sel) corec_specs disc_eqnss exclssss sel_eqnss; |
1077 val sel_alists = map4 (map ooo prove_sel) corec_specs disc_eqnss exclssss sel_eqnss; |
1081 val disc_thmss = map (map snd) disc_alists; |
1078 val disc_thmss = map (map snd) disc_alists; |