summaryrefslogtreecommitdiff
path: root/test-suite/bugs/closed/shouldsucceed/1711.v
diff options
context:
space:
mode:
authorGravatar Stephane Glondu <steph@glondu.net>2010-07-21 09:46:51 +0200
committerGravatar Stephane Glondu <steph@glondu.net>2010-07-21 09:46:51 +0200
commit5b7eafd0f00a16d78f99a27f5c7d5a0de77dc7e6 (patch)
tree631ad791a7685edafeb1fb2e8faeedc8379318ae /test-suite/bugs/closed/shouldsucceed/1711.v
parentda178a880e3ace820b41d38b191d3785b82991f5 (diff)
Imported Upstream snapshot 8.3~beta0+13298
Diffstat (limited to 'test-suite/bugs/closed/shouldsucceed/1711.v')
-rw-r--r--test-suite/bugs/closed/shouldsucceed/1711.v34
1 files changed, 34 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/shouldsucceed/1711.v b/test-suite/bugs/closed/shouldsucceed/1711.v
new file mode 100644
index 00000000..e16612e3
--- /dev/null
+++ b/test-suite/bugs/closed/shouldsucceed/1711.v
@@ -0,0 +1,34 @@
+(* Test for evar map consistency - was failing at some point and was *)
+(* assumed to be solved from revision 10151 (but using a bad fix) *)
+
+Require Import List.
+Set Implicit Arguments.
+
+Inductive rose : Set := Rose : nat -> list rose -> rose.
+
+Section RoseRec.
+Variables (P: rose -> Set)(L: list rose -> Set).
+Hypothesis
+ (R: forall n rs, L rs -> P (Rose n rs))
+ (Lnil: L nil)
+ (Lcons: forall r rs, P r -> L rs -> L (cons r rs)).
+
+Fixpoint rose_rec2 (t:rose) {struct t} : P t :=
+ match t as x return P x with
+ | Rose n rs =>
+ R n ((fix rs_ind (l' : list rose): L l' :=
+ match l' as x return L x with
+ | nil => Lnil
+ | cons t tl => Lcons (rose_rec2 t) (rs_ind tl)
+ end)
+ rs)
+ end.
+End RoseRec.
+
+Lemma rose_map : rose -> rose.
+Proof. intro H; elim H using rose_rec2 with
+ (L:=fun _ => list rose); (* was assumed to fail here *)
+(* (L:=fun (_:list rose) => list rose); *)
+ clear H; simpl; intros.
+ exact (Rose n rs). exact nil. exact (H::H0).
+Defined.