src/Pure/goal.ML
changeset 42495 1af81b70cf09
parent 42371 5900f06b4198
child 44113 0baa8bbd355a
equal deleted inserted replaced
42494:eef1a23c9077 42495:1af81b70cf09
   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);