proposition: Lemma ByteString_dequeue_ByteStringToBoundedByteString_eq' : forall (b' : ByteString), Core.ByteString_dequeue (BoundedByteStringToByteString b') = Ifopt (ByteString_dequeue b') as bbs Then Some (fst bbs, BoundedByteStringToByteString (snd bbs)) Else None.
proof: Proof. intros. rewrite (Core.ByteString_into_queue_eq (BoundedByteStringToByteString b')). rewrite Core.ByteString_dequeue_into_BitString. rewrite (ByteString_into_queue_eq b'). rewrite ByteString_dequeue_into_BitString. rewrite <- ByteString_into_queue_eq. rewrite <- ByteStringToBoundedByteString_into_queue_eq'. rewrite ByteStringToBoundedByteString_BoundedByteStringToByteString_eq. destruct (ByteString_into_queue b'); simpl; rewrite ?BoundedByteStringToByteString_into_queue_eq; 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