proposition: Lemma Vector_split_append {A} {m n} : forall (v : Vector.t A (m + n)), v = Vector.append (fst (Vector_split _ _ v)) (snd (Vector_split _ _ v)).
proof: Proof. induction m; simpl; eauto. intros. generalize (IHm (Vector.tl v)); clear. fold plus; destruct (Vector_split m n (Vector.tl v)); simpl; intros. rewrite <- H. generalize v; clear; generalize (m + n). intros; pattern n0, v; apply Vector.caseS; simpl; intros. reflexivity. Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Bedrock.Word Coq.ZArith.ZArith Coq.NArith.NArith Coq.Arith.Arith Coq.Numbers.Natural.Peano.NPeano Coq.Logic.Eqdep_dec Fiat.Narcissus.Common.Specs Fiat.Narcissus.BinLib.Core Fiat.Narcissus.Formats.ByteBuffer Coq.Strings.String Coq.Vectors.Vector Fiat.Narcissus.Formats.WordOpt Fiat.Common.Equality