aboutsummaryrefslogtreecommitdiffhomepage
path: root/pretyping/cbv.mli
diff options
context:
space:
mode:
authorGravatar barras <barras@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-04-21 19:02:18 +0000
committerGravatar barras <barras@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-04-21 19:02:18 +0000
commit339fad94cbb51911698142e3e879c53fa6a0e012 (patch)
treefb43b0be3031067c3e0e5677966d39e6cc97a1c5 /pretyping/cbv.mli
parent42c123da26078d00f8cdef64126ef041c98894bf (diff)
fixed CBV strategy: it was too eager on terms like
Axiom f: (nat->nat)->Prop. Eval compute in let _ := f(fun _ => mult 1000 1000) in 0. function was strongly evaluated when applied to f (based on examples provided by Damien Pous) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12098 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/cbv.mli')
-rw-r--r--pretyping/cbv.mli8
1 files changed, 5 insertions, 3 deletions
diff --git a/pretyping/cbv.mli b/pretyping/cbv.mli
index 461115a56..de66d22bc 100644
--- a/pretyping/cbv.mli
+++ b/pretyping/cbv.mli
@@ -29,18 +29,20 @@ val cbv_norm : cbv_infos -> constr -> constr
(*i This is for cbv debug *)
type cbv_value =
| VAL of int * constr
+ | STACK of int * cbv_value * cbv_stack
+ | CBN of constr * cbv_value subs
| LAM of int * (name * constr) list * constr * cbv_value subs
| FIXP of fixpoint * cbv_value subs * cbv_value array
| COFIXP of cofixpoint * cbv_value subs * cbv_value array
| CONSTR of constructor * cbv_value array
-val shift_value : int -> cbv_value -> cbv_value
-
-type cbv_stack =
+and cbv_stack =
| TOP
| APP of cbv_value array * cbv_stack
| CASE of constr * constr array * case_info * cbv_value subs * cbv_stack
+val shift_value : int -> cbv_value -> cbv_value
+
val stack_app : cbv_value array -> cbv_stack -> cbv_stack
val strip_appl : cbv_value -> cbv_stack -> cbv_value * cbv_stack