diff options
| author | msozeau | 2009-05-18 16:07:55 +0000 |
|---|---|---|
| committer | msozeau | 2009-05-18 16:07:55 +0000 |
| commit | bb89852617bfc8c973ba6746a77d1c2913b720ad (patch) | |
| tree | 879750c59612ff143dca415981fb8b01dbbe4df6 /kernel | |
| parent | df3115c21feb70d43c4021b104282b2c35c4dd5b (diff) | |
Minor unification changes:
- Primitive setup for firing typeclass resolution on-demand: add a flag to
control resolution of remaining evars (e.g. typeclasses) during
unification.
- Prevent canonical projection resolution when no delta is allowed
during unification (fixes incompatibility found in ssreflect).
- Correctly check types when the head is an evar _or_ a meta in w_unify.
Move [isEvar_or_Meta] to kernel/term.ml, it's used in two places now.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12131 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/term.ml | 4 | ||||
| -rw-r--r-- | kernel/term.mli | 1 |
2 files changed, 5 insertions, 0 deletions
diff --git a/kernel/term.ml b/kernel/term.ml index 24879f41d6..da8a778837 100644 --- a/kernel/term.ml +++ b/kernel/term.ml @@ -349,6 +349,10 @@ let same_kind c1 c2 = (isprop c1 & isprop c2) or (is_Type c1 & is_Type c2) (* Tests if an evar *) let isEvar c = match kind_of_term c with Evar _ -> true | _ -> false +let isEvar_or_Meta c = match kind_of_term c with + | Evar _ | Meta _ -> true + | _ -> false + (* Destructs a casted term *) let destCast c = match kind_of_term c with | Cast (t1,k,t2) -> (t1,k,t2) diff --git a/kernel/term.mli b/kernel/term.mli index 6a6a4ad287..8f45e39f09 100644 --- a/kernel/term.mli +++ b/kernel/term.mli @@ -227,6 +227,7 @@ val isVar : constr -> bool val isInd : constr -> bool val isEvar : constr -> bool val isMeta : constr -> bool +val isEvar_or_Meta : constr -> bool val isSort : constr -> bool val isCast : constr -> bool val isApp : constr -> bool |
