Skip to main content

EquivSerializersGeneral

Trait EquivSerializersGeneral 

Source
pub trait EquivSerializersGeneral: SpecSerializer + SpecSerializerDps<SValue = Self::SVal> {
    // Required method
    proof fn lemma_serialize_equiv(&self, v: Self::SVal, obuf: Seq<u8>);

    // Provided method
    open spec fn equiv_general_inv(&self) -> bool { ... }
}
Expand description

Full DPS ↔ non-DPS serializer equivalence for any output buffer.

See EquivSerializers for the weaker empty-buffer variant.

Required Methods§

Source

proof fn lemma_serialize_equiv(&self, v: Self::SVal, obuf: Seq<u8>)

requires
self.equiv_general_inv(),
ensures
self.spec_serialize_dps(v, obuf) == self.spec_serialize(v) + obuf,

spec_serialize_dps(v, obuf) == spec_serialize(v) + obuf.

Provided Methods§

Source

open spec fn equiv_general_inv(&self) -> bool

{ true }

Implementors§

Source§

impl EquivSerializersGeneral for BerLengthFmt

Source§

impl EquivSerializersGeneral for TagFmt

Source§

impl EquivSerializersGeneral for CborInitialFmt

Source§

impl EquivSerializersGeneral for Empty

Source§

impl EquivSerializersGeneral for Void

Source§

impl EquivSerializersGeneral for I8

Source§

impl EquivSerializersGeneral for I16Be

Source§

impl EquivSerializersGeneral for I16Le

Source§

impl EquivSerializersGeneral for I32Be

Source§

impl EquivSerializersGeneral for I32Le

Source§

impl EquivSerializersGeneral for I64Be

Source§

impl EquivSerializersGeneral for I64Le

Source§

impl EquivSerializersGeneral for U8

Source§

impl EquivSerializersGeneral for U16Be

Source§

impl EquivSerializersGeneral for U16Le

Source§

impl EquivSerializersGeneral for U24Be

Source§

impl EquivSerializersGeneral for U24Le

Source§

impl EquivSerializersGeneral for U32Be

Source§

impl EquivSerializersGeneral for U32Le

Source§

impl EquivSerializersGeneral for U64Be

Source§

impl EquivSerializersGeneral for U64Le

Source§

impl<A> EquivSerializersGeneral for Opt<A>

Source§

impl<A> EquivSerializersGeneral for Star<A>

Source§

impl<A, B> EquivSerializersGeneral for Sum<A, B>

Source§

impl<A, B> EquivSerializersGeneral for Choice<A, B>

Source§

impl<A, B> EquivSerializersGeneral for Bind<A, B>

Source§

impl<A, B> EquivSerializersGeneral for Pair<A, B>

Source§

impl<A, B, C> EquivSerializersGeneral for Permute3<A, B, C>

Source§

impl<A, B, C, D> EquivSerializersGeneral for Permute4<A, B, C, D>

Source§

impl<A, B, C, D, E> EquivSerializersGeneral for Permute5<A, B, C, D, E>

Source§

impl<A, B, const CHECK: bool> EquivSerializersGeneral for Preceded<A, A::SValue, B, CHECK>

Source§

impl<A, B, const CHECK: bool> EquivSerializersGeneral for Terminated<A, B, B::SValue, CHECK>

Source§

impl<A, Pred> EquivSerializersGeneral for Refined<A, Pred>

Source§

impl<A, Then> EquivSerializersGeneral for AndThen<A, Then>
where A: EquivSerializersGeneral<SVal = Seq<u8>, SValue = Seq<u8>>, Then: EquivSerializers,

Source§

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

Source§

impl<A: EquivSerializersGeneral, B: EquivSerializersGeneral> EquivSerializersGeneral for Repeat<A, B>

Source§

impl<C: SpecCombinator + EquivSerializers> EquivSerializersGeneral for BerSequenceFmt<C>

Source§

impl<C: SpecCombinator + EquivSerializersGeneral> EquivSerializersGeneral for BerSequenceOfFmt<C>

Source§

impl<C: SpecCombinator, const LIMIT: usize> EquivSerializersGeneral for BerCharStringFmt<C, LIMIT>

Source§

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

Source§

impl<Content: SpecCombinator + EquivSerializers, const DER: bool> EquivSerializersGeneral for ASN1Fmt<Content, DER>

Source§

impl<F> EquivSerializersGeneral for ImplicitlyTaggedFmt<F>

Source§

impl<Field, Rest, const DER: bool> EquivSerializersGeneral for DefaultedFmt<Field, Field::SVal, Rest, DER>
where Field: SpecByteLen + EquivSerializersGeneral<SVal = Field::T>, Rest: SpecByteLen + EquivSerializersGeneral<SVal = Rest::T>,

Source§

impl<Head, Tail> EquivSerializersGeneral for Implicit<Head, Tail>
where Head: EquivSerializersGeneral, Tail: DepCombinator<Key = Head::SVal>, Tail::Body: EquivSerializersGeneral<SVal = Tail::Val>,

Source§

impl<Inner> EquivSerializersGeneral for Const<Inner, Inner::SVal>

Source§

impl<Inner, M> EquivSerializersGeneral for Mapped<Inner, M>
where Inner: EquivSerializersGeneral, M: SpecMapper<In = Inner::SVal>,

Source§

impl<Inner, M> EquivSerializersGeneral for TryMap<Inner, M>
where Inner: EquivSerializersGeneral, M: SpecMapper<In = Inner::SVal>,

Source§

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

Source§

impl<Inner: EquivSerializers, Len: AsLen> EquivSerializersGeneral for ExactLen<Inner, Len>

Source§

impl<Inner: EquivSerializersGeneral> EquivSerializersGeneral for Cond<Inner>

Source§

impl<Inner: EquivSerializersGeneral> EquivSerializersGeneral for Named<Inner>

Source§

impl<Inner: EquivSerializersGeneral> EquivSerializersGeneral for Ref<Inner>

Source§

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

Source§

impl<Of, Tg> EquivSerializersGeneral for SuffixTagged<Of, Tg, Tg::T>
where Tg: SpecByteLen + EquivSerializersGeneral<SVal = Tg::T, SValue = Tg::T> + Consistency<Val = Tg::T>, Of: EquivSerializersGeneral,

Source§

impl<P1, P2> EquivSerializersGeneral for Permute2<P1, P2>

Source§

impl<Repr, Tuple, Nominal> EquivSerializersGeneral for Bits<Repr, Tuple, Nominal>
where Repr: SpecByteLen + EquivSerializersGeneral<SVal = Repr::T>,

Source§

impl<T> EquivSerializersGeneral for BundledSpecs<T>

Source§

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

Source§

impl<Tg, Of> EquivSerializersGeneral for PrefixTagged<Tg, Tg::T, Of>
where Tg: SpecByteLen + EquivSerializersGeneral<SVal = Tg::T, SValue = Tg::T> + Consistency<Val = Tg::T>, Of: EquivSerializersGeneral,

Source§

impl<const DER: bool> EquivSerializersGeneral for AnyFmt<DER>

Source§

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

Source§

impl<const DER: bool> EquivSerializersGeneral for LengthFmt<DER>

Source§

impl<const DER: bool> EquivSerializersGeneral for NatLengthFmt<DER>

Source§

impl<const DET: bool> EquivSerializersGeneral for CborHeadFmt<DET>

Source§

impl<const DET: bool, const LIMIT: usize> EquivSerializersGeneral for CborFmt<DET, LIMIT>

Source§

impl<const LIMIT: usize> EquivSerializersGeneral for BerAnyFmt<LIMIT>

Source§

impl<const LIMIT: usize> EquivSerializersGeneral for BerBitStringFmt<LIMIT>

Source§

impl<const LIMIT: usize> EquivSerializersGeneral for BerOctetStringFmt<LIMIT>

Source§

impl<const LIMIT: usize, Body, Param> EquivSerializersGeneral for FixWith<LIMIT, Body, Param>
where Body: EquivSerializersGeneralRecBody, Body::Body: EquivSerializersGeneral, Param: DeepView<V = Body::Param>,

Source§

impl<const MINIMAL: bool> EquivSerializersGeneral for Base128Fmt<MINIMAL>

Source§

impl<const MINIMAL: bool> EquivSerializersGeneral for VarInt<MINIMAL>

Source§

impl<const MINIMAL: bool, const N: usize> EquivSerializersGeneral for ULeb128<MINIMAL, N>

Source§

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

Source§

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

Source§

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

Source§

impl<const NONDETERMINISTIC: bool, A, B> EquivSerializersGeneral for Alt<A, B, NONDETERMINISTIC>
where A: EquivSerializersGeneral + Consistency<Val = A::SVal>, B: EquivSerializersGeneral<SVal = A::SVal> + Consistency<Val = B::SVal>,