# HG changeset patch # User wenzelm # Date 1385222856 -3600 # Node ID 5f3e9baa8f1375db6943842f3913d3558d8e81a2 # Parent 63e4474fd0ed882cdc1b46b290488b439fc373d2 more accurate goal context; diff -r 63e4474fd0ed -r 5f3e9baa8f13 src/HOL/Tools/Function/mutual.ML --- a/src/HOL/Tools/Function/mutual.ML Sat Nov 23 17:07:11 2013 +0100 +++ b/src/HOL/Tools/Function/mutual.ML Sat Nov 23 17:07:36 2013 +0100 @@ -187,8 +187,10 @@ | [cond] => (Thm.implies_elim psimp (Thm.assume cond), Thm.implies_intr cond) | _ => raise General.Fail "Too many conditions" + val (_, simp_ctxt) = ctxt + |> Assumption.add_assumes (#hyps (Thm.crep_thm simp)) in - Goal.prove ctxt [] [] + Goal.prove simp_ctxt [] [] (HOLogic.Trueprop $ HOLogic.mk_eq (list_comb (f, args), rhs)) (fn _ => Local_Defs.unfold_tac ctxt all_orig_fdefs diff -r 63e4474fd0ed -r 5f3e9baa8f13 src/Pure/Isar/expression.ML --- a/src/Pure/Isar/expression.ML Sat Nov 23 17:07:11 2013 +0100 +++ b/src/Pure/Isar/expression.ML Sat Nov 23 17:07:36 2013 +0100 @@ -676,8 +676,11 @@ val conjuncts = (Drule.equal_elim_rule2 OF [body_eq, rewrite_rule [pred_def] (Thm.assume (cert statement))]) |> Conjunction.elim_balanced (length ts); + + val (_, axioms_ctxt) = defs_ctxt + |> Assumption.add_assumes (maps (#hyps o Thm.crep_thm) (defs @ conjuncts)); val axioms = ts ~~ conjuncts |> map (fn (t, ax) => - Element.prove_witness defs_ctxt t + Element.prove_witness axioms_ctxt t (rewrite_goals_tac defs THEN compose_tac (false, ax, 0) 1)); in ((statement, intro, axioms), defs_thy) end;