equal
deleted
inserted
replaced
1235 mk_half_distinct_tac ctxt ctor_inject abs_inject [def, def'])) |
1235 mk_half_distinct_tac ctxt ctor_inject abs_inject [def, def'])) |
1236 (mk_half_pairss (`I ctr_defs)); |
1236 (mk_half_pairss (`I ctr_defs)); |
1237 |
1237 |
1238 val tacss = [exhaust_tac] :: inject_tacss @ half_distinct_tacss; |
1238 val tacss = [exhaust_tac] :: inject_tacss @ half_distinct_tacss; |
1239 |
1239 |
1240 val sel_default_eqs = map (prepare_term lthy) raw_sel_default_eqs; |
1240 val sel_Tss = map (map (curry (op -->) fpT)) ctr_Tss; |
|
1241 val sel_bTs = |
|
1242 flat sel_bindingss ~~ flat sel_Tss |
|
1243 |> filter_out (Binding.is_empty o fst) |
|
1244 |> distinct (Binding.eq_name o pairself fst); |
|
1245 val sel_default_lthy = fake_local_theory_for_sel_defaults sel_bTs lthy; |
|
1246 |
|
1247 val sel_default_eqs = map (prepare_term sel_default_lthy) raw_sel_default_eqs; |
1241 |
1248 |
1242 fun ctr_spec_of disc_b ctr0 sel_bs = ((disc_b, ctr0), sel_bs); |
1249 fun ctr_spec_of disc_b ctr0 sel_bs = ((disc_b, ctr0), sel_bs); |
1243 val ctr_specs = map3 ctr_spec_of disc_bindings ctrs0 sel_bindingss; |
1250 val ctr_specs = map3 ctr_spec_of disc_bindings ctrs0 sel_bindingss; |
1244 in |
1251 in |
1245 free_constructors tacss ((((discs_sels, no_code), standard_binding), ctr_specs), |
1252 free_constructors tacss ((((discs_sels, no_code), standard_binding), ctr_specs), |