equal
deleted
inserted
replaced
213 (** external interface **) |
213 (** external interface **) |
214 |
214 |
215 fun coherent_tac ctxt rules = SUBPROOF (fn {prems, concl, params, context, ...} => |
215 fun coherent_tac ctxt rules = SUBPROOF (fn {prems, concl, params, context, ...} => |
216 rtac (rulify_elim_conv concl RS equal_elim_rule2) 1 THEN |
216 rtac (rulify_elim_conv concl RS equal_elim_rule2) 1 THEN |
217 SUBPROOF (fn {prems = prems', concl, context, ...} => |
217 SUBPROOF (fn {prems = prems', concl, context, ...} => |
218 let val xs = map term_of params @ |
218 let val xs = map (term_of o #2) params @ |
219 map (fn (_, s) => Free (s, the (Variable.default_type context s))) |
219 map (fn (_, s) => Free (s, the (Variable.default_type context s))) |
220 (Variable.fixes_of context) |
220 (Variable.fixes_of context) |
221 in |
221 in |
222 case valid context (map mk_rule (prems' @ prems @ rules)) (term_of concl) |
222 case valid context (map mk_rule (prems' @ prems @ rules)) (term_of concl) |
223 (mk_dom xs) Net.empty 0 0 of |
223 (mk_dom xs) Net.empty 0 0 of |