proposition: Lemma ByteString_dequeue_opt_inj : forall t m b b', ByteString_dequeue b = Some (t, m) -> ByteString_dequeue b' = Some (t, m) -> b = b'.
proof: Proof. intros; rewrite (ByteString_into_queue_eq b), (ByteString_into_queue_eq b'), !ByteString_dequeue_into_BitString in *. destruct (ByteString_into_queue b) eqn : ?; destruct (ByteString_into_queue b') eqn : ?; try discriminate; injections. revert H0; clear; intros. rewrite (queue_into_ByteString_inj b1 b3); 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