proposition: Lemma ByteString_dequeue_mappend_opt : forall t b b' b'', ByteString_dequeue b = Some (t, b') -> ByteString_dequeue (ByteString_enqueue_ByteString b b'') = Some (t, ByteString_enqueue_ByteString b' b'').
proof: Proof. intros ? ? ? ? ; rewrite (ByteString_into_queue_eq b), (ByteString_into_queue_eq b'), (ByteString_into_queue_eq b''). rewrite !ByteString_enqueue_ByteString_into_BitString. rewrite !ByteString_dequeue_into_BitString. destruct (ByteString_into_queue b) eqn : ?; intros; try discriminate; injections. simpl. rewrite <- !ByteString_enqueue_ByteString_into_BitString. rewrite H0; 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