From 8cf4e04fa817cf7ff9d73cb5cb7fff8b3b950387 Mon Sep 17 00:00:00 2001 From: herbelin Date: Sat, 18 Oct 2008 15:57:24 +0000 Subject: Optimisation de clenv.ml pour que meta_instance ne soit pas appelé abusivement sur les clauses. Nettoyage au passage de metamap qui était utilisé à la fois pour les substitutions de meta et pour les contextes de typage de meta. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@11467 85f007b7-540e-0410-9357-904b9bb8a0f7 --- pretyping/evd.ml | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'pretyping/evd.ml') diff --git a/pretyping/evd.ml b/pretyping/evd.ml index b29afc0cb3..2b9a0ed82d 100644 --- a/pretyping/evd.ml +++ b/pretyping/evd.ml @@ -610,12 +610,18 @@ let meta_with_name evd id = (str "Binder name \"" ++ pr_id id ++ strbrk "\" occurs more than once in clause.") +let mk_meta_subst evd = + Metamap.fold (fun mv cl subst -> match cl with + | Clval(_,(b,_),typ) -> (mv, b.rebus) :: subst + | Cltyp (_,typ) -> subst) evd.metas [] let meta_merge evd1 evd2 = {evd2 with metas = List.fold_left (fun m (n,v) -> Metamap.add n v m) evd2.metas (metamap_to_list evd1.metas) } +let replace_metas metas evd = { evd with metas = metas } + type metabinding = metavariable * constr * instance_status let retract_coercible_metas evd = -- cgit v1.2.3