equal
deleted
inserted
replaced
5 *) |
5 *) |
6 |
6 |
7 signature FUNCTION_MUTUAL = |
7 signature FUNCTION_MUTUAL = |
8 sig |
8 sig |
9 val prepare_function_mutual : Function_Common.function_config |
9 val prepare_function_mutual : Function_Common.function_config |
10 -> string (* defname *) |
10 -> binding (* defname *) |
11 -> ((string * typ) * mixfix) list |
11 -> ((string * typ) * mixfix) list |
12 -> term list |
12 -> term list |
13 -> local_theory |
13 -> local_theory |
14 -> ((thm (* goalstate *) |
14 -> ((thm (* goalstate *) |
15 * (Proof.context -> thm -> Function_Common.function_result) (* proof continuation *) |
15 * (Proof.context -> thm -> Function_Common.function_result) (* proof continuation *) |
88 val RST = Balanced_Tree.make (uncurry Sum_Tree.mk_sumT) dresultTs |
88 val RST = Balanced_Tree.make (uncurry Sum_Tree.mk_sumT) dresultTs |
89 val ST = Balanced_Tree.make (uncurry Sum_Tree.mk_sumT) argTs |
89 val ST = Balanced_Tree.make (uncurry Sum_Tree.mk_sumT) argTs |
90 |
90 |
91 val fsum_type = ST --> RST |
91 val fsum_type = ST --> RST |
92 |
92 |
93 val ([fsum_var_name], _) = Variable.add_fixes [ defname ^ "_sum" ] ctxt |
93 val ([fsum_var_name], _) = |
|
94 Variable.add_fixes_binding [Binding.map_name (suffix "_sum") defname] ctxt |
94 val fsum_var = (fsum_var_name, fsum_type) |
95 val fsum_var = (fsum_var_name, fsum_type) |
95 |
96 |
96 fun define (fvar as (n, _)) caTs resultT i = |
97 fun define (fvar as (n, _)) caTs resultT i = |
97 let |
98 let |
98 val vars = map_index (fn (j,T) => Free ("x" ^ string_of_int j, T)) caTs (* FIXME: Bind xs properly *) |
99 val vars = map_index (fn (j,T) => Free ("x" ^ string_of_int j, T)) caTs (* FIXME: Bind xs properly *) |