aboutsummaryrefslogtreecommitdiffhomepage
path: root/interp
diff options
context:
space:
mode:
authorGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-01-05 19:10:06 +0000
committerGravatar msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7>2008-01-05 19:10:06 +0000
commita8d50dd372fc9365d3f6f21551567f05937d93ef (patch)
treee4b4a93cf6ed3ed7f873c1bdb469207db90cd97a /interp
parentbd9dc4089bdf76437a358d8c1a282f67558905be (diff)
Fix a naming bug reported by Arnaud Spiwack, allow instance search to create evars and try to solve them too.
Finally, rework tactics on setoids and design a saturating tactic to help solve goals on any setoid. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@10428 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'interp')
-rw-r--r--interp/implicit_quantifiers.ml6
-rw-r--r--interp/implicit_quantifiers.mli4
2 files changed, 8 insertions, 2 deletions
diff --git a/interp/implicit_quantifiers.ml b/interp/implicit_quantifiers.ml
index c029550a1..4799eb7b3 100644
--- a/interp/implicit_quantifiers.ml
+++ b/interp/implicit_quantifiers.ml
@@ -99,7 +99,7 @@ let combine_params avoid applied needed =
match app, need with
[], need ->
let need', avoid = ids_of_named_context_avoiding avoid (List.map snd need) in
- List.rev ids @ (List.map mkIdentC need'), avoid
+ List.rev ids @ (List.rev_map mkIdentC need'), avoid
| _, (true, (id, _, _)) :: need ->
let id' = next_ident_away_from id avoid in
aux (CRef (Ident (dummy_loc, id')) :: ids) (Idset.add id' avoid) app need
@@ -130,7 +130,9 @@ let full_class_binders env l =
(try
let c = class_info (snd id) in
let args, avoid = combine_params avoid l
- (List.rev_map (fun x -> false, x) c.cl_context @ List.rev_map (fun x -> true, x) c.cl_super @ List.rev_map (fun x -> false, x) c.cl_params)
+ (List.rev_map (fun x -> false, x) c.cl_context @
+ List.rev_map (fun x -> true, x) c.cl_super @
+ List.rev_map (fun x -> false, x) c.cl_params)
in
(iid, bk, CAppExpl (fst id, (None, Ident id), args)) :: l', avoid
with Not_found -> unbound_class (Global.env ()) id)
diff --git a/interp/implicit_quantifiers.mli b/interp/implicit_quantifiers.mli
index 3b9d98652..d687fe640 100644
--- a/interp/implicit_quantifiers.mli
+++ b/interp/implicit_quantifiers.mli
@@ -49,3 +49,7 @@ val nf_named_context : evar_map -> named_context -> named_context
val nf_rel_context : evar_map -> rel_context -> rel_context
val nf_env : evar_map -> env -> env
+
+val ids_of_named_context_avoiding : Names.Idset.t ->
+ Sign.named_context -> Names.Idset.elt list * Names.Idset.t
+