aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel/environ.mli
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/environ.mli')
-rw-r--r--kernel/environ.mli30
1 files changed, 30 insertions, 0 deletions
diff --git a/kernel/environ.mli b/kernel/environ.mli
index 71fc8e6d8..d570655ee 100644
--- a/kernel/environ.mli
+++ b/kernel/environ.mli
@@ -22,7 +22,9 @@ open Sign
(* Environments have the following components:
- a context for de Bruijn variables
+ - a context for de Bruijn variables vm values
- a context for section variables and goal assumptions
+ - a context for section variables and goal assumptions vm values
- a context for global constants and axioms
- a context for inductive definitions
- a set of universe constraints
@@ -54,6 +56,18 @@ val push_rec_types : rec_declaration -> env -> env
val lookup_rel : int -> env -> rel_declaration
val evaluable_rel : int -> env -> bool
+(* Abstract machine rel values *)
+type 'a val_kind =
+ | VKvalue of values
+ | VKaxiom of 'a
+ | VKdef of constr * env
+
+type relval
+
+val kind_of_rel : relval -> inv_rel_key val_kind
+val set_relval : relval -> values -> unit
+val lookup_relval : int -> env -> relval
+val nb_rel : env -> int
(*s Recurrence on [rel_context] *)
val fold_rel_context :
(env -> rel_declaration -> 'a -> 'a) -> env -> init:'a -> 'a
@@ -67,6 +81,13 @@ val push_named : named_declaration -> env -> env
val lookup_named : variable -> env -> named_declaration
val evaluable_named : variable -> env -> bool
+(* Abstract machine values of local vars referred by names *)
+type namedval
+
+val kind_of_named : namedval -> identifier val_kind
+val set_namedval : namedval -> values -> unit
+val lookup_namedval : identifier -> env -> namedval
+
(*s Recurrence on [named_context]: older declarations processed first *)
val fold_named_context :
(env -> named_declaration -> 'a -> 'a) -> env -> init:'a -> 'a
@@ -87,6 +108,15 @@ val add_constant : constant -> constant_body -> env -> env
(* Looks up in the context of global constant names *)
(* raises [Not_found] if the required path is not found *)
+type constant_key
+exception NotEvaluated
+exception AllReadyEvaluated
+
+val constant_key_pos : constant_key -> bool*int
+val constant_key_body : constant_key -> constant_body
+val set_pos_constant : constant_key -> (bool*int) -> unit
+
+val lookup_constant_key : constant -> env -> constant_key
val lookup_constant : constant -> env -> constant_body
val evaluable_constant : constant -> env -> bool