equal
deleted
inserted
replaced
324 | non_atomic (Const ("all", _) $ _) = true |
324 | non_atomic (Const ("all", _) $ _) = true |
325 | non_atomic _ = false; |
325 | non_atomic _ = false; |
326 |
326 |
327 fun assume_rule_tac ctxt = norm_hhf_tac THEN' CSUBGOAL (fn (goal, i) => |
327 fun assume_rule_tac ctxt = norm_hhf_tac THEN' CSUBGOAL (fn (goal, i) => |
328 let |
328 let |
329 val ((_, goal'), ctxt') = Variable.focus goal ctxt; |
329 val ((_, goal'), ctxt') = Variable.focus_cterm goal ctxt; |
330 val goal'' = Drule.cterm_rule (singleton (Variable.export ctxt' ctxt)) goal'; |
330 val goal'' = Drule.cterm_rule (singleton (Variable.export ctxt' ctxt)) goal'; |
331 val Rs = filter (non_atomic o Thm.term_of) (Drule.strip_imp_prems goal''); |
331 val Rs = filter (non_atomic o Thm.term_of) (Drule.strip_imp_prems goal''); |
332 val tacs = Rs |> map (fn R => |
332 val tacs = Rs |> map (fn R => |
333 Tactic.etac (Raw_Simplifier.norm_hhf (Thm.trivial R)) THEN_ALL_NEW assume_tac); |
333 Tactic.etac (Raw_Simplifier.norm_hhf (Thm.trivial R)) THEN_ALL_NEW assume_tac); |
334 in fold_rev (curry op APPEND') tacs (K no_tac) i end); |
334 in fold_rev (curry op APPEND') tacs (K no_tac) i end); |