Skip to main content

MinMaxByteLen

Trait MinMaxByteLen 

Source
pub trait MinMaxByteLen: SpecByteLen + Consistency<Val = Self::T> {
    // Required methods
    spec fn min(&self) -> nat;
    spec fn max(&self) -> nat;
    proof fn lemma_min_max_byte_len(&self, v: Self::T);
}
Expand description

Denotes the min/max byte length of a value w.r.t. a combinator’s format spec.

Combinators that do not implement MinMaxByteLen

  • Unbounded Sequence/Tail Combinators:
    • Tail (consumes the remaining buffer)
    • Star<A> (zero or more repetitions)
    • Repeat<A, B> (zero or more As followed by terminator B)
    • RepeatTillEnd<A> (sugar for Repeat<A, Eof>)
  • Dependent and Recursive Combinators:
    • Bind<A, B> (the suffix parser B is constructed dynamically from the parsed value of A)
    • Implicit<Head, Tail> (similar to Bind)
    • FixWith<LIMIT, Body, Param> (recursive fixpoint)

Required Methods§

Source

spec fn min(&self) -> nat

Source

spec fn max(&self) -> nat

Source

proof fn lemma_min_max_byte_len(&self, v: Self::T)

requires
self.consistent(v),
ensures
self.min() <= self.byte_len(v) <= self.max(),

Implementors§

Source§

impl MinMaxByteLen for Empty

Source§

impl MinMaxByteLen for Void

Source§

impl MinMaxByteLen for I8

Source§

impl MinMaxByteLen for I16Be

Source§

impl MinMaxByteLen for I16Le

Source§

impl MinMaxByteLen for I32Be

Source§

impl MinMaxByteLen for I32Le

Source§

impl MinMaxByteLen for I64Be

Source§

impl MinMaxByteLen for I64Le

Source§

impl MinMaxByteLen for Eof

Source§

impl MinMaxByteLen for U8

Source§

impl MinMaxByteLen for U16Be

Source§

impl MinMaxByteLen for U16Le

Source§

impl MinMaxByteLen for U24Be

Source§

impl MinMaxByteLen for U24Le

Source§

impl MinMaxByteLen for U32Be

Source§

impl MinMaxByteLen for U32Le

Source§

impl MinMaxByteLen for U64Be

Source§

impl MinMaxByteLen for U64Le

Source§

impl<A, B, const CHECK: bool> MinMaxByteLen for Preceded<A, A::T, B, CHECK>

Source§

impl<A, B, const CHECK: bool> MinMaxByteLen for Terminated<A, B, B::T, CHECK>

Source§

impl<A, Pred> MinMaxByteLen for Refined<A, Pred>
where A: MinMaxByteLen, Pred: SpecPred<A::T>,

Source§

impl<A, Then> MinMaxByteLen for AndThen<A, Then>
where A: BytesCombinator + Consistency<Val = Seq<u8>>, Then: MinMaxByteLen,

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen> MinMaxByteLen for Sum<A, B>

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen> MinMaxByteLen for Choice<A, B>

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen> MinMaxByteLen for Optional<A, B>

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen> MinMaxByteLen for PairRev<A, B>

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen> MinMaxByteLen for Pair<A, B>

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen, C: MinMaxByteLen> MinMaxByteLen for Permute3<A, B, C>

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen, C: MinMaxByteLen, D: MinMaxByteLen> MinMaxByteLen for Permute4<A, B, C, D>

Source§

impl<A: MinMaxByteLen, B: MinMaxByteLen, C: MinMaxByteLen, D: MinMaxByteLen, E: MinMaxByteLen> MinMaxByteLen for Permute5<A, B, C, D, E>

Source§

impl<C: MinMaxByteLen> MinMaxByteLen for OptionalEnd<C>

Source§

impl<C: MinMaxByteLen, N: AsLen> MinMaxByteLen for RepeatN<C, N>

Source§

impl<Inner> MinMaxByteLen for Const<Inner, Inner::T>
where Inner: MinMaxByteLen,

Source§

impl<Inner, Len> MinMaxByteLen for ExactLen<Inner, Len>
where Inner: SpecByteLen + Consistency<Val = Inner::T>, Len: AsLen,

Source§

impl<Inner, M> MinMaxByteLen for Mapped<Inner, M>
where Inner: MinMaxByteLen, M: SpecMapper<In = Inner::T>,

Source§

impl<Inner, M> MinMaxByteLen for TryMap<Inner, M>
where Inner: MinMaxByteLen, M: SpecMapper<In = Inner::T>,

Source§

impl<Inner, M, MRev> MinMaxByteLen for Mapped<Inner, BiMap<M, MRev>>
where Inner: MinMaxByteLen, M: SpecMap<Input = Inner::T>, MRev: SpecMap<Input = M::Output, Output = M::Input>,

Source§

impl<Inner: MinMaxByteLen> MinMaxByteLen for Cond<Inner>

Source§

impl<Inner: MinMaxByteLen> MinMaxByteLen for Named<Inner>

Source§

impl<Inner: MinMaxByteLen> MinMaxByteLen for Opt<Inner>

Source§

impl<Len: AsLen> MinMaxByteLen for Varied<Len>

Source§

impl<Of, Tg> MinMaxByteLen for SuffixTagged<Of, Tg, Tg::T>

Source§

impl<P1: MinMaxByteLen, P2: MinMaxByteLen> MinMaxByteLen for Permute2<P1, P2>

Source§

impl<Repr, Tuple, Nominal> MinMaxByteLen for Bits<Repr, Tuple, Nominal>
where Repr: MinMaxByteLen,

Source§

impl<T, C: MinMaxByteLen, const N: usize> MinMaxByteLen for Dispatch<T, C, N>

Source§

impl<Tg, Of> MinMaxByteLen for PrefixTagged<Tg, Tg::T, Of>

Source§

impl<const DER: bool> MinMaxByteLen for BoolFmt<DER>

Source§

impl<const N: usize> MinMaxByteLen for Fixed<N>

Source§

impl<const N: usize> MinMaxByteLen for Const<Fixed<N>, [u8; N]>

Source§

impl<const N: usize, C: MinMaxByteLen> MinMaxByteLen for Array<N, C>

Source§

impl<const NONDETERMINISTIC: bool, A, B> MinMaxByteLen for Alt<A, B, NONDETERMINISTIC>
where A: MinMaxByteLen, B: MinMaxByteLen<T = A::T>,