1144 (Predicate_Comp_Funs.mk_Enum (HOLogic.tupled_lambda (HOLogic.mk_tuple outargs) |
1144 (Predicate_Comp_Funs.mk_Enum (HOLogic.tupled_lambda (HOLogic.mk_tuple outargs) |
1145 (list_comb (Const (name, T), args)))) |
1145 (list_comb (Const (name, T), args)))) |
1146 val lhs = Const (mode_cname, funT) |
1146 val lhs = Const (mode_cname, funT) |
1147 val def = Logic.mk_equals (lhs, predterm) |
1147 val def = Logic.mk_equals (lhs, predterm) |
1148 val ([definition], thy') = thy |> |
1148 val ([definition], thy') = thy |> |
1149 Sign.add_consts_i [(Binding.name mode_cbasename, funT, NoSyn)] |> |
1149 Sign.add_consts [(Binding.name mode_cbasename, funT, NoSyn)] |> |
1150 Global_Theory.add_defs false [((Binding.name (Thm.def_name mode_cbasename), def), [])] |
1150 Global_Theory.add_defs false [((Binding.name (Thm.def_name mode_cbasename), def), [])] |
1151 val ctxt' = Proof_Context.init_global thy' |
1151 val ctxt' = Proof_Context.init_global thy' |
1152 val rules as ((intro, elim), _) = |
1152 val rules as ((intro, elim), _) = |
1153 create_intro_elim_rule ctxt' mode definition mode_cname funT (Const (name, T)) |
1153 create_intro_elim_rule ctxt' mode definition mode_cname funT (Const (name, T)) |
1154 in |
1154 in |
1169 let |
1169 let |
1170 val function_name_prefix = Comp_Mod.function_name_prefix comp_modifiers |
1170 val function_name_prefix = Comp_Mod.function_name_prefix comp_modifiers |
1171 val mode_cname = create_constname_of_mode options thy function_name_prefix name T mode |
1171 val mode_cname = create_constname_of_mode options thy function_name_prefix name T mode |
1172 val funT = Comp_Mod.funT_of comp_modifiers mode T |
1172 val funT = Comp_Mod.funT_of comp_modifiers mode T |
1173 in |
1173 in |
1174 thy |> Sign.add_consts_i [(Binding.name (Long_Name.base_name mode_cname), funT, NoSyn)] |
1174 thy |> Sign.add_consts [(Binding.name (Long_Name.base_name mode_cname), funT, NoSyn)] |
1175 |> set_function_name (Comp_Mod.compilation comp_modifiers) name mode mode_cname |
1175 |> set_function_name (Comp_Mod.compilation comp_modifiers) name mode mode_cname |
1176 end; |
1176 end; |
1177 in |
1177 in |
1178 thy |
1178 thy |
1179 |> defined_function_of (Comp_Mod.compilation comp_modifiers) name |
1179 |> defined_function_of (Comp_Mod.compilation comp_modifiers) name |