fact: Definition DecodeMEquivAlignedDecodeM {C : Type} (f : DecodeM (C * ByteString) ByteString) (f' : forall {numBytes}, AlignedDecodeM C numBytes) := (forall {numBytes_hd} (n : nat) (v : Vector.t _ (S numBytes_hd)) cd, f' v (S n) cd = Ifopt (f' (Vector.tl v) n cd) as a Then Some (fst (fst a), S (snd (fst a)), snd a) Else None) /\ (forall b cd c b' cd', f b cd = Some (c, b', cd') -> length_ByteString b >= length_ByteString b')%nat /\ (forall n (v : ByteBuffer.t n) cd, (f (build_aligned_ByteString v) cd = None <-> f' v 0 cd = None) /\ (forall c bs' cd', f (build_aligned_ByteString v) cd = Some (c, bs', cd') -> f' v 0 cd = Some (c, n - (numBytes bs'), cd') /\ exists v' : Vector.t _ (n - (numBytes bs')), (build_aligned_ByteString v) = ByteString_enqueue_ByteString (build_aligned_ByteString v') bs' )) .
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.BinLib.AlignedByteString