aboutsummaryrefslogtreecommitdiffhomepage
path: root/theories/Vectors/VectorSpec.v
diff options
context:
space:
mode:
authorGravatar George Stelle <stelleg@lanl.gov>2017-03-09 10:48:10 -0700
committerGravatar Maxime Dénès <mail@maximedenes.fr>2017-03-30 00:12:40 +0200
commitdfc89e3c2fb5e3801307b5b8b5491a38aa1630bb (patch)
treeee6427927e2e56b19a50ca3820e332c19787796f /theories/Vectors/VectorSpec.v
parentcae09e5af6cf31d96662b1b66a63c6a236a8e741 (diff)
Added take to VectorDef.
Added a function that takes the first [p] elements of a vector, and a few lemmas proving some of its properties.
Diffstat (limited to 'theories/Vectors/VectorSpec.v')
-rw-r--r--theories/Vectors/VectorSpec.v29
1 files changed, 29 insertions, 0 deletions
diff --git a/theories/Vectors/VectorSpec.v b/theories/Vectors/VectorSpec.v
index c5278b918..869d0fb5a 100644
--- a/theories/Vectors/VectorSpec.v
+++ b/theories/Vectors/VectorSpec.v
@@ -122,3 +122,32 @@ induction l.
- reflexivity.
- unfold to_list; simpl. now f_equal.
Qed.
+
+Lemma take_O : forall {A} {n} le (v:t A n), take 0 le v = [].
+Proof.
+ reflexivity.
+Qed.
+
+Lemma take_idem : forall {A} p n (v:t A n) le le',
+ take p le' (take p le v) = take p le v.
+Proof.
+ induction p; intros n v le le'.
+ - auto.
+ - destruct v. inversion le. simpl. apply f_equal. apply IHp.
+Qed.
+
+Lemma take_app : forall {A} {n} (v:t A n) {m} (w:t A m) le, take n le (append v w) = v.
+Proof.
+ induction v; intros m w le.
+ - reflexivity.
+ - simpl. apply f_equal. apply IHv.
+Qed.
+
+(* Proof is irrelevant for [take] *)
+Lemma take_prf_irr : forall {A} p {n} (v:t A n) le le', take p le v = take p le' v.
+Proof.
+ induction p; intros n v le le'.
+ - reflexivity.
+ - destruct v. inversion le. simpl. apply f_equal. apply IHp.
+Qed.
+