proposition: Lemma Vector_append_inj {n1 n2} (v1 v1' : Vector.t Core.char n1) (v2 v2' : Vector.t Core.char n2) : Vector.append v1 v2 = Vector.append v1' v2' -> v1 = v1' /\ v2 = v2'.
proof: Proof. intros. apply (f_equal build_aligned_ByteString) in H. rewrite !build_aligned_ByteString_append in H. split; apply build_aligned_ByteString_inj. eapply ByteString_enqueue_ByteString_inj; eauto. eapply ByteString_enqueue_ByteString_inj'; eauto. 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