aboutsummaryrefslogtreecommitdiff
path: root/engine/proofview_monad.mli
diff options
context:
space:
mode:
authorMatthieu Sozeau2017-04-25 21:54:31 +0200
committerMaxime Dénès2020-09-07 20:47:42 +0200
commitb6dabf6aa5b96cfa3c11038316399f0797d734ac (patch)
tree0e97b6c66bba554833c47cec50d017820f72afe6 /engine/proofview_monad.mli
parentb972cc5195e941633319c1fa428a9801ac4ef9e2 (diff)
Refine test for unresolved evars: not reachable from initial evars
The test is refined to handle aliases: i.e. undefined evars coming from restrictions and evar-evar unifications with an initial evar are not considered fresh unresolved evars. To check this, we generalize the restricted_evars set to an aliased_evars set in the evar map, registering evars being solved by another evar due to restriction or evar-evar unifications. This implements the proposal of PR #370 for testing the resolution status of evars independently of the evar-evar orientation order. This allows [apply] to refine an evar with a new one if it results from a [clear] request or an evar-evar solution only, otherwise the new evar is considered fresh and an error is raised. Also fixes bugs #4095 and #4413. Co-authored-by: Maxime Dénès <maxime.denes@inria.fr>
Diffstat (limited to 'engine/proofview_monad.mli')
-rw-r--r--engine/proofview_monad.mli6
1 files changed, 5 insertions, 1 deletions
diff --git a/engine/proofview_monad.mli b/engine/proofview_monad.mli
index 6cca3f5a5e..00d322858d 100644
--- a/engine/proofview_monad.mli
+++ b/engine/proofview_monad.mli
@@ -79,7 +79,7 @@ val with_empty_state : goal -> goal_with_state
val map_goal_with_state : (goal -> goal) -> goal_with_state -> goal_with_state
(** Type of proof views: current [evar_map] together with the list of
- focused goals. *)
+ focused goals, locally shelved goals and globally shelved goals. *)
type proofview = {
solution : Evd.evar_map;
comb : goal_with_state list;
@@ -115,6 +115,10 @@ module type State = sig
val set : t -> unit Logical.t
val modify : (t->t) -> unit Logical.t
end
+module type Reader = sig
+ type t
+ val get : t Logical.t
+end
module type Writer = sig
type t