proven witness: proper Goal.close_result save huge amounts of resources when using proof terms;
--- a/src/Pure/Isar/element.ML Fri Oct 26 16:12:58 2007 +0200
+++ b/src/Pure/Isar/element.ML Fri Oct 26 17:18:32 2007 +0200
@@ -291,10 +291,11 @@
Witness (t, Goal.protect (Thm.assume (Thm.cterm_of thy t)));
fun prove_witness ctxt t tac =
- Witness (t, Goal.prove ctxt [] [] (Logic.protect t) (fn _ =>
- Tactic.rtac Drule.protectI 1 THEN tac));
+ Witness (t, Goal.close_result (Goal.prove ctxt [] [] (Logic.protect t) (fn _ =>
+ Tactic.rtac Drule.protectI 1 THEN tac)));
-fun conclude_witness (Witness (_, th)) = MetaSimplifier.norm_hhf_protect (Goal.conclude th);
+fun conclude_witness (Witness (_, th)) =
+ Goal.close_result (MetaSimplifier.norm_hhf_protect (Goal.conclude th));
val mark_witness = Logic.protect;