src/CCL/Type.thy
changeset 35409 5c5bb83f2bae
parent 35113 1a0c129bb2e0
child 39159 0dec18004e75
equal deleted inserted replaced
35408:b48ab741683b 35409:5c5bb83f2bae
   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