aboutsummaryrefslogtreecommitdiffhomepage
path: root/test-suite/bugs/closed/2733.v
diff options
context:
space:
mode:
authorGravatar xclerc <xclerc@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-09-20 12:40:28 +0000
committerGravatar xclerc <xclerc@85f007b7-540e-0410-9357-904b9bb8a0f7>2013-09-20 12:40:28 +0000
commite46ce40cee2c34f47acb55d2b24bd09f00987556 (patch)
tree696da31b3041d1b7c69244ab5a48f77b87ccf79b /test-suite/bugs/closed/2733.v
parent20bb249ed0e19cc0132519e3de06fafe2ba500c3 (diff)
Get rid of "shouldsucceed" subdirectory by moving tests to parent directory.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16797 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'test-suite/bugs/closed/2733.v')
-rw-r--r--test-suite/bugs/closed/2733.v28
1 files changed, 28 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/2733.v b/test-suite/bugs/closed/2733.v
new file mode 100644
index 000000000..832de4f91
--- /dev/null
+++ b/test-suite/bugs/closed/2733.v
@@ -0,0 +1,28 @@
+Unset Asymmetric Patterns.
+
+Definition goodid : forall {A} (x: A), A := fun A x => x.
+Definition wrongid : forall A (x: A), A := fun {A} x => x.
+
+Inductive ty := N | B.
+
+Inductive alt_list : ty -> ty -> Type :=
+ | nil {k} : alt_list k k
+ | Ncons {k} : nat -> alt_list B k -> alt_list N k
+ | Bcons {k} : bool -> alt_list N k -> alt_list B k.
+
+Definition trullynul k {k'} (l : alt_list k k') :=
+match k,l with
+ |N,l' => Ncons 0 (Bcons true l')
+ |B,l' => Bcons true (Ncons 0 l')
+end.
+
+Fixpoint app (P : forall {k k'}, alt_list k k' -> alt_list k k') {t1 t2} (l : alt_list t1 t2) {struct l}: forall {t3}, alt_list t2 t3 ->
+alt_list t1 t3 :=
+ match l with
+ | nil => fun _ l2 => P l2
+ | Ncons n l1 => fun _ l2 => Ncons n (app (@P) l1 l2)
+ | Bcons b l1 => fun _ l2 => Bcons b (app (@P) l1 l2)
+ end.
+
+Check (fun {t t'} (l: alt_list t t') =>
+ app trullynul (goodid l) (wrongid _ nil)).