diff options
| author | herbelin | 2009-04-08 14:52:20 +0000 |
|---|---|---|
| committer | herbelin | 2009-04-08 14:52:20 +0000 |
| commit | aa40ae5b2fe08d65f62200e65fe6da9467f55e51 (patch) | |
| tree | 34c80e8f18ab708459167bac16f71335c44e4153 /pretyping/reductionops.ml | |
| parent | 9fbacf326690cd0369efb5aa96ef97398ced4237 (diff) | |
- Fixing bug #2084 (unification not checking sort constraints), hoping
it does not cause a time penalty.
- Removing of get_type_of_with_meta made possible by the
evar_defs/evar_map merge.
- Adding unfolding of Meta in reductionops (this assumes that reduction does
not move Metas across binders...)
- Renaming newly created fold_map_rel_context into map_rel_context_in_env.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12061 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/reductionops.ml')
| -rw-r--r-- | pretyping/reductionops.ml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/pretyping/reductionops.ml b/pretyping/reductionops.ml index 38ac3485b2..859f8bb21f 100644 --- a/pretyping/reductionops.ml +++ b/pretyping/reductionops.ml @@ -145,6 +145,10 @@ let rec whd_app_state sigma (x, stack as s) = | _ -> s) | _ -> s +let safe_meta_value sigma ev = + try Some (Evd.meta_value sigma ev) + with Not_found -> None + let appterm_of_stack (f,s) = (f,list_of_stack s) let whd_stack sigma x = @@ -319,6 +323,10 @@ let rec whd_state_gen flags env sigma = (match safe_evar_value sigma ev with | Some body -> whrec (body, stack) | None -> s) + | Meta ev -> + (match safe_meta_value sigma ev with + | Some body -> whrec (body, stack) + | None -> s) | Const const when red_delta flags -> (match constant_opt_value env const with | Some body -> whrec (body, stack) @@ -409,6 +417,11 @@ let local_whd_state_gen flags sigma = Some c -> whrec (c,stack) | None -> s) + | Meta ev -> + (match safe_meta_value sigma ev with + Some c -> whrec (c,stack) + | None -> s) + | x -> s in whrec |
