diff options
author | msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2008-01-05 19:10:06 +0000 |
---|---|---|
committer | msozeau <msozeau@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2008-01-05 19:10:06 +0000 |
commit | a8d50dd372fc9365d3f6f21551567f05937d93ef (patch) | |
tree | e4b4a93cf6ed3ed7f873c1bdb469207db90cd97a /interp | |
parent | bd9dc4089bdf76437a358d8c1a282f67558905be (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.ml | 6 | ||||
-rw-r--r-- | interp/implicit_quantifiers.mli | 4 |
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 + |