proposition: Lemma ByteString_enqueue_ByteString_assoc : forall bs1 bs2 bs3, ByteString_enqueue_ByteString bs1 (ByteString_enqueue_ByteString bs2 bs3) = ByteString_enqueue_ByteString (ByteString_enqueue_ByteString bs1 bs2) bs3.
proof: Proof. intros. rewrite <- (ByteStringToBoundedByteString_BoundedByteStringToByteString_eq bs1), <- (ByteStringToBoundedByteString_BoundedByteStringToByteString_eq bs2), <- (ByteStringToBoundedByteString_BoundedByteStringToByteString_eq bs3). rewrite !ByteString_enqueue_ByteString_ByteStringToBoundedByteString. rewrite ByteString_enqueue_ByteString_assoc; 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