aboutsummaryrefslogtreecommitdiffhomepage
path: root/test-suite/bugs/closed/4745.v
diff options
context:
space:
mode:
authorGravatar Maxime Dénès <mail@maximedenes.fr>2016-11-17 10:27:36 +0100
committerGravatar Maxime Dénès <mail@maximedenes.fr>2016-11-17 10:27:36 +0100
commitca9e00ff9b2a8ee17430398a5e0bef2345c39341 (patch)
tree1f35be33dcc6ca7117bb85db4415d6f728b80641 /test-suite/bugs/closed/4745.v
parent63bb79ab8b488db728e46e5ada38d86d384acff1 (diff)
parent633ed9c528c64dc2daa0b3e83749bc392aab7fd2 (diff)
Merge commit '633ed9c' into v8.6
Was PR#192: Add test suite files for 4700-4785
Diffstat (limited to 'test-suite/bugs/closed/4745.v')
-rw-r--r--test-suite/bugs/closed/4745.v35
1 files changed, 35 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/4745.v b/test-suite/bugs/closed/4745.v
new file mode 100644
index 000000000..c090125e6
--- /dev/null
+++ b/test-suite/bugs/closed/4745.v
@@ -0,0 +1,35 @@
+(*I get an Anomaly in the following code.
+
+```*)
+Require Vector.
+
+Module M.
+ Lemma Vector_map_map :
+ forall A B C (f : A -> B) (g : B -> C) n (v : Vector.t A n),
+ Vector.map g (Vector.map f v) = Vector.map (fun a => g (f a)) v.
+ Proof.
+ induction v; simpl; auto using f_equal.
+ Qed.
+
+ Lemma Vector_map_map_transparent :
+ forall A B C (f : A -> B) (g : B -> C) n (v : Vector.t A n),
+ Vector.map g (Vector.map f v) = Vector.map (fun a => g (f a)) v.
+ Proof.
+ induction v; simpl; auto using f_equal.
+ Defined.
+ (* Anomaly: constant not found in kind_of_head: Coq.Vectors.Vector.t_ind. Please report. *)
+
+ (* strangely, explicitly passing the principle to induction works *)
+ Lemma Vector_map_map_transparent' :
+ forall A B C (f : A -> B) (g : B -> C) n (v : Vector.t A n),
+ Vector.map g (Vector.map f v) = Vector.map (fun a => g (f a)) v.
+ Proof.
+ induction v using Vector.t_ind; simpl; auto using f_equal.
+ Defined.
+End M.
+(*```
+
+Changing any of the following things eliminates the Anomaly
+ * moving the lemma out of the module M to the top level
+ * proving the lemma as a Fixpoint instead of using induction
+ * proving the analogous lemma on lists instead of vectors*)