aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbarras2004-09-08 13:53:52 +0000
committerbarras2004-09-08 13:53:52 +0000
commit2cc7db038d72006bf7d3b418df450c370e447421 (patch)
tree2942b639ef6085cb7d2740c78b5d6e4aa36b9685
parentdee2a3d461eddffa1e858bb4a0af92dfa7575d81 (diff)
petit bug avec les effets de bords
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@6078 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--pretyping/evarutil.ml15
1 files changed, 6 insertions, 9 deletions
diff --git a/pretyping/evarutil.ml b/pretyping/evarutil.ml
index aa079e7ceb..58b3f3ac2f 100644
--- a/pretyping/evarutil.ml
+++ b/pretyping/evarutil.ml
@@ -278,16 +278,14 @@ let real_clean env isevars ev args rhs =
else (try List.assoc (mkRel (i-k)) subst with Not_found -> t)
| Evar (ev,args) ->
let args' = Array.map (subs k) args in
- if need_restriction isevars args' then
- if Evd.is_defined isevars.evars ev then
- subs k (existential_value isevars.evars (ev,args'))
- else begin
- let (sigma,rc) = do_restrict_hyps isevars.evars ev args' in
+ if need_restriction !evd args' then
+ begin
+ let (sigma,rc) = do_restrict_hyps !evd.evars ev args' in
evd :=
{!evd with
evars = sigma;
history =
- (fst (destEvar rc),evar_source ev isevars):: !evd.history};
+ (fst (destEvar rc),evar_source ev !evd):: !evd.history};
rc
end
else
@@ -297,7 +295,7 @@ let real_clean env isevars ev args rhs =
in
let body = subs 0 rhs in
if not (closed0 body)
- then error_not_clean env isevars.evars ev body (evar_source ev isevars);
+ then error_not_clean env !evd.evars ev body (evar_source ev !evd);
(!evd,body)
let make_evar_instance_with_rel env =
@@ -505,8 +503,7 @@ let solve_refl conv_algo env isevars ev argsv1 argsv2 =
let solve_simple_eqn conv_algo env isevars (pbty,(n1,args1 as ev1),t2) =
let t2 = nf_evar isevars.evars t2 in
let (isevars,lsp) = match kind_of_term t2 with
- | Evar (n2,args2 as ev2)
- when not (Evd.is_defined isevars.evars n2) ->
+ | Evar (n2,args2 as ev2) ->
if n1 = n2 then
solve_refl conv_algo env isevars n1 args1 args2
else