aboutsummaryrefslogtreecommitdiffhomepage
path: root/proofs/proof.ml
diff options
context:
space:
mode:
authorGravatar Arnaud Spiwack <arnaud@spiwack.net>2014-10-16 14:42:20 +0200
committerGravatar Arnaud Spiwack <arnaud@spiwack.net>2014-10-16 15:14:20 +0200
commit2d65dac1b0c63039f802d5e92afd389d5e7cc846 (patch)
treef1824671df6fda9a2d49bea99b64b6700762ed0a /proofs/proof.ml
parentce260a0db279ce09dda70e079ae3c35b49f05ec4 (diff)
Put evars remaining after a tactic on the shelf.
Uses the new architecture which allows to keep track of all new evars. The [future_goals] are flushed at the end of the tactics, the [principal_future_goal] is ignored.
Diffstat (limited to 'proofs/proof.ml')
-rw-r--r--proofs/proof.ml7
1 files changed, 4 insertions, 3 deletions
diff --git a/proofs/proof.ml b/proofs/proof.ml
index 8ad7adc16..53b73097f 100644
--- a/proofs/proof.ml
+++ b/proofs/proof.ml
@@ -320,14 +320,15 @@ let run_tactic env tac pr =
let sp = pr.proofview in
let (_,tacticced_proofview,(status,(to_shelve,give_up))) = Proofview.apply env tac sp in
let shelf =
- let pre_shelf = pr.shelf@to_shelve in
- (* avoid already to count already solved goals as shelved. *)
Proofview.in_proofview tacticced_proofview begin fun sigma ->
+ let pre_shelf = pr.shelf@(Evd.future_goals sigma)@to_shelve in
+ (* avoid already to count already solved goals as shelved. *)
List.filter (fun g -> Evd.is_undefined sigma g) pre_shelf
end
in
let given_up = pr.given_up@give_up in
- { pr with proofview = tacticced_proofview ; shelf ; given_up },status
+ let proofview = Proofview.reset_future_goals tacticced_proofview in
+ { pr with proofview ; shelf ; given_up },status
let emit_side_effects eff pr =
{pr with proofview = Proofview.emit_side_effects eff pr.proofview}