summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBrian Campbell2019-06-11 11:11:12 +0100
committerBrian Campbell2019-06-11 11:11:12 +0100
commit9a367b2bfed76b0f2ac6db26ea0408227ad93230 (patch)
tree1d52f7d596ab612f0d4f1c1523f1a2b9c205e4e7 /lib
parent586a4c0073e1f2697683bd9d84c1f898452c0311 (diff)
Coq: add concatenation operator for polymorphic vectors
Diffstat (limited to 'lib')
-rw-r--r--lib/coq/Sail2_values.v12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/coq/Sail2_values.v b/lib/coq/Sail2_values.v
index 94f93736..bd22371a 100644
--- a/lib/coq/Sail2_values.v
+++ b/lib/coq/Sail2_values.v
@@ -2300,6 +2300,18 @@ simpl.
auto with zarith.
Qed.
+Definition vec_concat {T m n} (v : vec T m) (w : vec T n) : vec T (m + n).
+refine (existT _ (projT1 v ++ projT1 w) _).
+destruct v.
+destruct w.
+simpl.
+unfold length_list in *.
+rewrite <- e, <- e0.
+rewrite app_length.
+rewrite Nat2Z.inj_add.
+reflexivity.
+Defined.
+
Lemma skipn_length {A n} {l: list A} : (n <= List.length l -> List.length (skipn n l) = List.length l - n)%nat.
revert l.
induction n.