83 val fake_local_theory_for_sel_defaults: (binding * typ) list -> Proof.context -> Proof.context |
83 val fake_local_theory_for_sel_defaults: (binding * typ) list -> Proof.context -> Proof.context |
84 val free_constructors: ctr_sugar_kind -> |
84 val free_constructors: ctr_sugar_kind -> |
85 ({prems: thm list, context: Proof.context} -> tactic) list list -> |
85 ({prems: thm list, context: Proof.context} -> tactic) list list -> |
86 ((ctr_options * binding) * (term, binding) ctr_spec list) * term list -> local_theory -> |
86 ((ctr_options * binding) * (term, binding) ctr_spec list) * term list -> local_theory -> |
87 ctr_sugar * local_theory |
87 ctr_sugar * local_theory |
|
88 val free_constructors_cmd: ctr_sugar_kind -> |
|
89 ((((Proof.context -> Plugin_Name.filter) * bool) * binding) |
|
90 * ((binding * string) * binding list) list) * string list -> |
|
91 Proof.context -> Proof.state |
88 val default_ctr_options: ctr_options |
92 val default_ctr_options: ctr_options |
89 val default_ctr_options_cmd: ctr_options_cmd |
93 val default_ctr_options_cmd: ctr_options_cmd |
90 val parse_bound_term: (binding * string) parser |
94 val parse_bound_term: (binding * string) parser |
91 val parse_ctr_options: ctr_options_cmd parser |
95 val parse_ctr_options: ctr_options_cmd parser |
92 val parse_ctr_spec: 'c parser -> 'a parser -> ('c, 'a) ctr_spec parser |
96 val parse_ctr_spec: 'c parser -> 'a parser -> ('c, 'a) ctr_spec parser |
458 else |
462 else |
459 sel)) (1 upto m) o pad_list Binding.empty m) ctrs0 ms raw_sel_bindingss; |
463 sel)) (1 upto m) o pad_list Binding.empty m) ctrs0 ms raw_sel_bindingss; |
460 |
464 |
461 val case_Ts = map (fn Ts => Ts ---> B) ctr_Tss; |
465 val case_Ts = map (fn Ts => Ts ---> B) ctr_Tss; |
462 |
466 |
463 val (((((((((exh_y, xss), yss), fs), gs), u), v), w), (p, p'))) = |
467 val ((((((((exh_y, xss), yss), fs), gs), u), w), (p, p'))) = |
464 no_defs_lthy |
468 no_defs_lthy |
465 |> yield_singleton (mk_Frees "y") fcT (* for compatibility with "datatype_realizer.ML" *) |
469 |> yield_singleton (mk_Frees "y") fcT (* for compatibility with "datatype_realizer.ML" *) |
466 ||>> mk_Freess "x" ctr_Tss |
470 ||>> mk_Freess "x" ctr_Tss |
467 ||>> mk_Freess "y" ctr_Tss |
471 ||>> mk_Freess "y" ctr_Tss |
468 ||>> mk_Frees "f" case_Ts |
472 ||>> mk_Frees "f" case_Ts |
469 ||>> mk_Frees "g" case_Ts |
473 ||>> mk_Frees "g" case_Ts |
470 ||>> yield_singleton (mk_Frees fc_b_name) fcT |
474 ||>> yield_singleton (mk_Frees fc_b_name) fcT |
471 ||>> yield_singleton (mk_Frees (fc_b_name ^ "'")) fcT |
|
472 ||>> yield_singleton (mk_Frees "z") B |
475 ||>> yield_singleton (mk_Frees "z") B |
473 ||>> yield_singleton (apfst (op ~~) oo mk_Frees' "P") HOLogic.boolT |
476 ||>> yield_singleton (apfst (op ~~) oo mk_Frees' "P") HOLogic.boolT |
474 |> fst; |
477 |> fst; |
475 |
478 |
476 val q = Free (fst p', mk_pred1T B); |
479 val q = Free (fst p', mk_pred1T B); |