diff options
author | barras <barras@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2009-04-21 19:02:18 +0000 |
---|---|---|
committer | barras <barras@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2009-04-21 19:02:18 +0000 |
commit | 339fad94cbb51911698142e3e879c53fa6a0e012 (patch) | |
tree | fb43b0be3031067c3e0e5677966d39e6cc97a1c5 /pretyping/cbv.mli | |
parent | 42c123da26078d00f8cdef64126ef041c98894bf (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.mli | 8 |
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 |