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 }

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl EquivSerializersGeneral for BerLengthFmt

Source§

impl EquivSerializersGeneral for CborInitialFmt

Source§

impl EquivSerializersGeneral for Empty

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 TagFmt

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 EquivSerializersGeneral for Void

Source§

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

Source§

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

Source§

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

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, B> EquivSerializersGeneral for Bind<A, B>

Source§

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

Source§

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

Source§

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

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<A> EquivSerializersGeneral for Opt<A>

Source§

impl<A> EquivSerializersGeneral for Star<A>

Source§

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

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<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, 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, 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: 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<Inner> EquivSerializersGeneral for Const<Inner, Inner::SVal>

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, C, const N: usize> EquivSerializersGeneral for Dispatch<T, C, N>

Source§

impl<T> EquivSerializersGeneral for BundledSpecs<T>

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, const LIMIT: usize> EquivSerializersGeneral for CborFmt<DET, LIMIT>

Source§

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

Source§

impl<const LIMIT: usize, Body, Param> EquivSerializersGeneral for FixWith<LIMIT, Body, Param>

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 MINIMAL: bool, const N: usize> EquivSerializersGeneral for ULeb128<MINIMAL, N>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

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>,