equal
deleted
inserted
replaced
125 |
125 |
126 ML {* |
126 ML {* |
127 fun mk_ncanT_tac top_crls crls = |
127 fun mk_ncanT_tac top_crls crls = |
128 SUBPROOF (fn {context = ctxt, prems = major :: prems, ...} => |
128 SUBPROOF (fn {context = ctxt, prems = major :: prems, ...} => |
129 resolve_tac ([major] RL top_crls) 1 THEN |
129 resolve_tac ([major] RL top_crls) 1 THEN |
130 REPEAT_SOME (eresolve_tac (crls @ [exE, @{thm bexE}, conjE, disjE])) THEN |
130 REPEAT_SOME (eresolve_tac (crls @ [@{thm exE}, @{thm bexE}, @{thm conjE}, @{thm disjE}])) THEN |
131 ALLGOALS (asm_simp_tac (simpset_of ctxt)) THEN |
131 ALLGOALS (asm_simp_tac (simpset_of ctxt)) THEN |
132 ALLGOALS (ares_tac (prems RL [@{thm lem}]) ORELSE' etac @{thm bspec}) THEN |
132 ALLGOALS (ares_tac (prems RL [@{thm lem}]) ORELSE' etac @{thm bspec}) THEN |
133 safe_tac (claset_of ctxt addSIs prems)) |
133 safe_tac (claset_of ctxt addSIs prems)) |
134 *} |
134 *} |
135 |
135 |
496 (* rews are rewrite rules that would cause looping in the simpifier *) |
496 (* rews are rewrite rules that would cause looping in the simpifier *) |
497 |
497 |
498 fun EQgen_tac ctxt rews i = |
498 fun EQgen_tac ctxt rews i = |
499 SELECT_GOAL |
499 SELECT_GOAL |
500 (TRY (safe_tac (claset_of ctxt)) THEN |
500 (TRY (safe_tac (claset_of ctxt)) THEN |
501 resolve_tac ((rews @ [refl]) RL ((rews @ [refl]) RL [@{thm ssubst_pair}])) i THEN |
501 resolve_tac ((rews @ [@{thm refl}]) RL ((rews @ [@{thm refl}]) RL [@{thm ssubst_pair}])) i THEN |
502 ALLGOALS (simp_tac (simpset_of ctxt)) THEN |
502 ALLGOALS (simp_tac (simpset_of ctxt)) THEN |
503 ALLGOALS EQgen_raw_tac) i |
503 ALLGOALS EQgen_raw_tac) i |
504 *} |
504 *} |
505 |
505 |
506 end |
506 end |