aboutsummaryrefslogtreecommitdiff
path: root/pretyping/evarsolve.mli
diff options
context:
space:
mode:
authorMaxime Dénès2020-09-02 18:10:37 +0200
committerMaxime Dénès2020-09-02 21:50:13 +0200
commitcd37a10f9cf5746edf16611d7f833e0e8cf2c5f8 (patch)
tree98820e613bcde15378375cb06f9134e29f122d16 /pretyping/evarsolve.mli
parentfea073c74f98f3fe6728363c0f8142520ac1e50c (diff)
Abstract type for allowed evars
Diffstat (limited to 'pretyping/evarsolve.mli')
-rw-r--r--pretyping/evarsolve.mli16
1 files changed, 12 insertions, 4 deletions
diff --git a/pretyping/evarsolve.mli b/pretyping/evarsolve.mli
index 89e162937d..c248e50820 100644
--- a/pretyping/evarsolve.mli
+++ b/pretyping/evarsolve.mli
@@ -16,9 +16,17 @@ type alias
val of_alias : alias -> EConstr.t
-type allowed_evars =
-| AllowAll
-| AllowFun of (Evar.t -> bool)
+module AllowedEvars : sig
+
+ type t
+
+ val all : t
+ val mem : t -> Evar.t -> bool
+ val remove : Evar.t -> t -> t
+ val except : Evar.Set.t -> t
+ val from_pred : (Evar.t -> bool) -> t
+
+end
type unify_flags = {
modulo_betaiota : bool;
@@ -30,7 +38,7 @@ type unify_flags = {
subterm_ts : TransparentState.t;
(* Enable delta reduction according to subterm_ts for selection of subterms during higher-order
unifications. *)
- allowed_evars : allowed_evars;
+ allowed_evars : AllowedEvars.t;
(* Disallowed evars are treated like rigid variables during unification: they can not be instantiated. *)
allow_K_at_toplevel : bool;
(* During higher-order unifications, allow to produce K-redexes: i.e. to produce