fact: Fixpoint align_decode_string_with_term_char (term_char : word 8) {sz} (v : Vector.t (word 8) sz) (cd : CacheDecode) : option (string * {n : _ & Vector.t (word 8) n} * CacheDecode) := match v with | Vector.nil => None | Vector.cons c _ v' => if weqb c term_char then Some (String.EmptyString, existT _ _ v', cd) else `(s, b', cd') <- align_decode_string_with_term_char term_char v' cd; Some (String (ascii_of_N (wordToN c)) s, b', cd') end.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Coq.Strings.Ascii Coq.Strings.String Coq.Arith.Mult Coq.Vectors.Vector Fiat.Common.SumType Fiat.Common.BoundedLookup Fiat.Common.ilist Fiat.Common.DecideableEnsembles Fiat.Computation Fiat.Narcissus.Common.Specs Fiat.Narcissus.Common.ComposeOpt Fiat.Narcissus.Formats.FixStringOpt Fiat.Narcissus.Formats.StringOpt Fiat.Narcissus.Formats.EnumOpt Fiat.Narcissus.Formats.FixListOpt Fiat.Narcissus.Formats.SumTypeOpt Fiat.Narcissus.Formats.AsciiOpt Fiat.Narcissus.BinLib.AlignedByteString Fiat.Narcissus.BinLib.AlignWord Fiat.Common.IterateBoundedIndex Fiat.Common.Tactics.CacheStringConstant Bedrock.Word