From 58e804f07172acc6bb01c8bdafde1217eb4ec4b8 Mon Sep 17 00:00:00 2001 From: Matthieu Sozeau Date: Thu, 13 Apr 2017 20:41:40 +0200 Subject: Reinstate fixpoint refolding in [cbn], deactivated by mistake. Add a test-suite file to be sure we won't regress silently. --- pretyping/reductionops.ml | 2 +- test-suite/success/cbn.v | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 test-suite/success/cbn.v diff --git a/pretyping/reductionops.ml b/pretyping/reductionops.ml index 297f0a1a8e..ba92f64b95 100644 --- a/pretyping/reductionops.ml +++ b/pretyping/reductionops.ml @@ -755,7 +755,7 @@ let contract_fix ?env ?reference ((recindices,bodynum),(names,types,bodies as ty context" in contract_fix *) let reduce_and_refold_fix recfun env refold cst_l fix sk = let raw_answer = - let env = if refold then None else Some env in + let env = if refold then Some env else None in contract_fix ?env ?reference:(Cst_stack.reference cst_l) fix in apply_subst (fun x (t,sk') -> diff --git a/test-suite/success/cbn.v b/test-suite/success/cbn.v new file mode 100644 index 0000000000..6aeb05f54e --- /dev/null +++ b/test-suite/success/cbn.v @@ -0,0 +1,18 @@ +(* cbn is able to refold mutual recursive calls *) + +Fixpoint foo (n : nat) := + match n with + | 0 => true + | S n => g n + end +with g (n : nat) : bool := + match n with + | 0 => true + | S n => foo n + end. +Goal forall n, foo (S n) = g n. + intros. cbn. + match goal with + |- g _ = g _ => reflexivity + end. +Qed. \ No newline at end of file -- cgit v1.2.3