diff options
| author | Pierre-Marie Pédrot | 2015-09-27 16:36:10 +0200 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2015-09-27 16:47:30 +0200 |
| commit | 9cadb903b7c3a3be8014152b293cd5ade3a7c8b7 (patch) | |
| tree | fb4a962f5776a90c74ec14eb40175c95eb6604fc /pretyping | |
| parent | ca14b0bb67c9db000736333a056fc147c6f5199c (diff) | |
Removing subst_defined_metas_evars from Evd.
Diffstat (limited to 'pretyping')
| -rw-r--r-- | pretyping/unification.ml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/pretyping/unification.ml b/pretyping/unification.ml index 24e06007e9..123f9b8cd3 100644 --- a/pretyping/unification.ml +++ b/pretyping/unification.ml @@ -554,6 +554,19 @@ let isAllowedEvar flags c = match kind_of_term c with | Evar (evk,_) -> not (Evar.Set.mem evk flags.frozen_evars) | _ -> false + +let subst_defined_metas_evars (bl,el) c = + let rec substrec c = match kind_of_term c with + | Meta i -> + let select (j,_,_) = Int.equal i j in + substrec (pi2 (List.find select bl)) + | Evar (evk,args) -> + let select (_,(evk',args'),_) = Evar.equal evk evk' && Array.equal Constr.equal args args' in + (try substrec (pi3 (List.find select el)) + with Not_found -> map_constr substrec c) + | _ -> map_constr substrec c + in try Some (substrec c) with Not_found -> None + let check_compatibility env pbty flags (sigma,metasubst,evarsubst) tyM tyN = match subst_defined_metas_evars (metasubst,[]) tyM with | None -> sigma |
