aboutsummaryrefslogtreecommitdiff
path: root/kernel/closure.mli
diff options
context:
space:
mode:
authorbarras2003-08-05 17:16:58 +0000
committerbarras2003-08-05 17:16:58 +0000
commitef14e67d209edf4581223c6de4c38a79e4831940 (patch)
tree7012a9b32a16a14b765c03e76e4f32415f55ec86 /kernel/closure.mli
parent8235d977028498a99d8c3c097f6fd2094298f3ff (diff)
Improved reduction machine with closure: should use less memory
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@4247 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/closure.mli')
-rw-r--r--kernel/closure.mli19
1 files changed, 9 insertions, 10 deletions
diff --git a/kernel/closure.mli b/kernel/closure.mli
index 4442e49f9f..8c80324238 100644
--- a/kernel/closure.mli
+++ b/kernel/closure.mli
@@ -133,26 +133,23 @@ type fconstr
type fterm =
| FRel of int
- | FAtom of constr
+ | FAtom of constr (* Metas and Sorts *)
| FCast of fconstr * fconstr
| FFlex of table_key
| FInd of inductive
| FConstruct of constructor
| FApp of fconstr * fconstr array
- | FFix of (int array * int) * (name array * fconstr array * fconstr array)
- * constr array * fconstr subs
- | FCoFix of int * (name array * fconstr array * fconstr array)
- * constr array * fconstr subs
+ | FFix of fixpoint * fconstr subs
+ | FCoFix of cofixpoint * fconstr subs
| FCases of case_info * fconstr * fconstr * fconstr array
- | FLambda of name * fconstr * fconstr * constr * fconstr subs
- | FProd of name * fconstr * fconstr * constr * fconstr subs
- | FLetIn of name * fconstr * fconstr * fconstr * constr * fconstr subs
+ | FLambda of int * (name * constr) list * constr * fconstr subs
+ | FProd of name * fconstr * fconstr
+ | FLetIn of name * fconstr * fconstr * constr * fconstr subs
| FEvar of existential_key * fconstr array
| FLIFT of int * fconstr
| FCLOS of constr * fconstr subs
| FLOCKED
-
(* To lazy reduce a constr, create a [clos_infos] with
[create_clos_infos], inject the term to reduce with [inject]; then use
a reduction function *)
@@ -160,6 +157,8 @@ type fterm =
val inject : constr -> fconstr
val fterm_of : fconstr -> fterm
val term_of_fconstr : fconstr -> constr
+val destFLambda :
+ (fconstr subs -> constr -> fconstr) -> fconstr -> name * fconstr * fconstr
(* Global and local constant cache *)
type clos_infos
@@ -200,7 +199,7 @@ val mk_clos_deep :
val kni: clos_infos -> fconstr -> fconstr stack -> fconstr * fconstr stack
val knr: clos_infos -> fconstr -> fconstr stack -> fconstr * fconstr stack
-val kl : clos_infos -> fconstr -> fconstr
+val kl : clos_infos -> fconstr -> constr
val to_constr : (lift -> fconstr -> constr) -> lift -> fconstr -> constr