1150 (list_comb (Const (name, T), args)))) |
1150 (list_comb (Const (name, T), args)))) |
1151 val lhs = Const (mode_cname, funT) |
1151 val lhs = Const (mode_cname, funT) |
1152 val def = Logic.mk_equals (lhs, predterm) |
1152 val def = Logic.mk_equals (lhs, predterm) |
1153 val ([definition], thy') = thy |> |
1153 val ([definition], thy') = thy |> |
1154 Sign.add_consts_i [(Binding.name mode_cbasename, funT, NoSyn)] |> |
1154 Sign.add_consts_i [(Binding.name mode_cbasename, funT, NoSyn)] |> |
1155 Global_Theory.add_defs false [((Binding.name (mode_cbasename ^ "_def"), def), [])] |
1155 Global_Theory.add_defs false [((Binding.name (Thm.def_name mode_cbasename), def), [])] |
1156 val ctxt' = Proof_Context.init_global thy' |
1156 val ctxt' = Proof_Context.init_global thy' |
1157 val rules as ((intro, elim), _) = |
1157 val rules as ((intro, elim), _) = |
1158 create_intro_elim_rule ctxt' mode definition mode_cname funT (Const (name, T)) |
1158 create_intro_elim_rule ctxt' mode definition mode_cname funT (Const (name, T)) |
1159 in thy' |
1159 in thy' |
1160 |> set_function_name Pred name mode mode_cname |
1160 |> set_function_name Pred name mode mode_cname |