aboutsummaryrefslogtreecommitdiff
path: root/toplevel
diff options
context:
space:
mode:
authormsozeau2008-06-03 23:08:00 +0000
committermsozeau2008-06-03 23:08:00 +0000
commit908900165bc6a5b2eb9bc4f177311ee2409dbd6a (patch)
tree8fc23b2e62b06e7a9be28e4bce9fcbb77c4a12fe /toplevel
parente984c9a611936280e2c0e4a1d4b1739c3d32f4dd (diff)
Fixes incorrect handling of existing existentials variables in
typeclass code. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11047 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'toplevel')
-rw-r--r--toplevel/classes.ml8
-rw-r--r--toplevel/command.ml3
2 files changed, 5 insertions, 6 deletions
diff --git a/toplevel/classes.ml b/toplevel/classes.ml
index 333a26f035..db5c548553 100644
--- a/toplevel/classes.ml
+++ b/toplevel/classes.ml
@@ -512,8 +512,7 @@ let new_instance ?(global=false) ctx (instid, bk, cl) props ?(on_free_vars=defau
in
let env' = push_named_context ctx' env in
isevars := Evarutil.nf_evar_defs !isevars;
- let sigma = Evd.evars_of !isevars in
- isevars := resolve_typeclasses env sigma !isevars;
+ isevars := resolve_typeclasses env !isevars;
let sigma = Evd.evars_of !isevars in
let substctx = Typeclasses.nf_substitution sigma subst in
let imps =
@@ -569,10 +568,10 @@ let new_instance ?(global=false) ctx (instid, bk, cl) props ?(on_free_vars=defau
let term = Evarutil.nf_isevar !isevars term in
let evm = Evd.evars_of (undefined_evars !isevars) in
Evarutil.check_evars env Evd.empty !isevars termtype;
- isevars := Typeclasses.resolve_typeclasses ~onlyargs:true ~fail:true env evm !isevars;
if evm = Evd.empty then
declare_instance_constant k pri global imps ?hook id term termtype
- else
+ else begin
+ isevars := Typeclasses.resolve_typeclasses ~onlyargs:true ~fail:true env !isevars;
let kind = Decl_kinds.Global, Decl_kinds.DefinitionBody Decl_kinds.Instance in
Flags.silently (fun () ->
Command.start_proof id kind termtype
@@ -584,6 +583,7 @@ let new_instance ?(global=false) ctx (instid, bk, cl) props ?(on_free_vars=defau
(match tac with Some tac -> Pfedit.by tac | None -> ())) ();
Flags.if_verbose (msg $$ Printer.pr_open_subgoals) ();
id
+ end
end
let goal_kind = Decl_kinds.Global, Decl_kinds.DefinitionBody Decl_kinds.Definition
diff --git a/toplevel/command.ml b/toplevel/command.ml
index 11b849c4f7..518ae25cf1 100644
--- a/toplevel/command.ml
+++ b/toplevel/command.ml
@@ -844,8 +844,7 @@ let interp_recursive fixkind l boxed =
let evd,_ = consider_remaining_unif_problems env_rec !evdref in
let fixdefs = List.map (nf_evar (evars_of evd)) fixdefs in
let fixtypes = List.map (nf_evar (evars_of evd)) fixtypes in
- let evd = Typeclasses.resolve_typeclasses
- ~onlyargs:false ~fail:true env (evars_of evd) evd in
+ let evd = Typeclasses.resolve_typeclasses ~onlyargs:false ~fail:true env evd in
List.iter (check_evars env_rec Evd.empty evd) fixdefs;
List.iter (check_evars env Evd.empty evd) fixtypes;
check_mutuality env kind (List.combine fixnames fixdefs);