diff options
| author | msozeau | 2009-01-23 17:25:40 +0000 |
|---|---|---|
| committer | msozeau | 2009-01-23 17:25:40 +0000 |
| commit | 62aab1996e82b07c5bb6f537d86f6d38ab9422fb (patch) | |
| tree | 5078c7571e09eb9fe2bd87d697bfcf31b3612239 | |
| parent | 9e40a64bc3f50fa6ec2b42b988b09bc5168eb7a0 (diff) | |
Really compare evar maps in progress, due to merging in apply and other
tactics, an unchanged map may have a different adress. Part of the fix
for making Ynot work in 8.2.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11852 85f007b7-540e-0410-9357-904b9bb8a0f7
| -rw-r--r-- | pretyping/evd.ml | 3 | ||||
| -rw-r--r-- | pretyping/evd.mli | 1 | ||||
| -rw-r--r-- | proofs/refiner.ml | 2 |
3 files changed, 5 insertions, 1 deletions
diff --git a/pretyping/evd.ml b/pretyping/evd.ml index a76df2dfb9..400ad2f7a8 100644 --- a/pretyping/evd.ml +++ b/pretyping/evd.ml @@ -300,6 +300,9 @@ let is_defined (sigma,_) = is_defined sigma let existential_value (sigma,_) = existential_value sigma let existential_type (sigma,_) = existential_type sigma let existential_opt_value (sigma,_) = existential_opt_value sigma +let eq_evar_map x y = x == y || + (Evarmap.equal eq_evar_info (fst x) (fst y) && + UniverseMap.equal (=) (snd x) (snd y)) let merge e e' = fold (fun n v sigma -> add sigma n v) e' e diff --git a/pretyping/evd.mli b/pretyping/evd.mli index 0e3212813d..6694e63dda 100644 --- a/pretyping/evd.mli +++ b/pretyping/evd.mli @@ -52,6 +52,7 @@ val evar_unfiltered_env : evar_info -> env val evar_env : evar_info -> env type evar_map +val eq_evar_map : evar_map -> evar_map -> bool val empty : evar_map diff --git a/proofs/refiner.ml b/proofs/refiner.ml index 0014e9f72c..7240e8b858 100644 --- a/proofs/refiner.ml +++ b/proofs/refiner.ml @@ -462,7 +462,7 @@ let weak_progress gls ptree = (not (same_goal (List.hd gls.it) ptree.it)) let progress gls ptree = - (not (ptree.sigma == gls.sigma)) || + (not (eq_evar_map ptree.sigma gls.sigma)) || (weak_progress gls ptree) |
