Skip to main content

EquivSerializers

Trait EquivSerializers 

Source
pub trait EquivSerializers: SpecSerializer + SpecSerializerDps<SValue = Self::SVal> {
    // Required method
    proof fn lemma_serialize_equiv_on_empty(&self, v: Self::SVal);

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

DPS ↔ non-DPS serializer equivalence on the empty buffer.

Sufficient for deriving SPRoundTrip from SPRoundTripDps.

Required Methods§

Source

proof fn lemma_serialize_equiv_on_empty(&self, v: Self::SVal)

requires
self.equiv_inv(),
ensures
self.spec_serialize_dps(v, seq![]) == self.spec_serialize(v),

spec_serialize_dps(v, []) == spec_serialize(v).

Provided Methods§

Source

open spec fn equiv_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 EquivSerializers for BerEndFmt

Source§

impl EquivSerializers for BerLengthFmt

Source§

impl EquivSerializers for BmpStringFmt

Source§

impl EquivSerializers for CborInitialFmt

Source§

impl EquivSerializers for Empty

Source§

impl EquivSerializers for EnumeratedFmt

Source§

impl EquivSerializers for Eof

Source§

impl EquivSerializers for I8

Source§

impl EquivSerializers for I16Be

Source§

impl EquivSerializers for I16Le

Source§

impl EquivSerializers for I32Be

Source§

impl EquivSerializers for I32Le

Source§

impl EquivSerializers for I64Be

Source§

impl EquivSerializers for I64Le

Source§

impl EquivSerializers for Ia5StringFmt

Source§

impl EquivSerializers for Integer8Fmt

Source§

impl EquivSerializers for Integer16Fmt

Source§

impl EquivSerializers for IntegerFmt

Source§

impl EquivSerializers for ObjectIdentifierFmt

Source§

impl EquivSerializers for PrintableStringFmt

Source§

impl EquivSerializers for TagFmt

Source§

impl EquivSerializers for Tail

Source§

impl EquivSerializers for TeletexStringFmt

Source§

impl EquivSerializers for U8

Source§

impl EquivSerializers for U16Be

Source§

impl EquivSerializers for U16Le

Source§

impl EquivSerializers for U24Be

Source§

impl EquivSerializers for U24Le

Source§

impl EquivSerializers for U32Be

Source§

impl EquivSerializers for U32Le

Source§

impl EquivSerializers for U64Be

Source§

impl EquivSerializers for U64Le

Source§

impl EquivSerializers for UniversalStringFmt

Source§

impl EquivSerializers for Utf8StringFmt

Source§

impl EquivSerializers for Void

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<A, B> EquivSerializers for PairRev<A, B>

Source§

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

Source§

impl<A, Pred> EquivSerializers for Refined<A, Pred>
where A: EquivSerializers, Pred: SpecPred<A::SVal>,

Source§

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

Source§

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

Source§

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

Source§

impl<A> EquivSerializers for Opt<A>

Source§

impl<A> EquivSerializers for Star<A>

Source§

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

Source§

impl<C: EquivSerializersGeneral> EquivSerializers for OptionalEnd<C>

Source§

impl<C: EquivSerializersGeneral> EquivSerializers for RepeatTillEnd<C>

Source§

impl<C: EquivSerializersGeneral> EquivSerializers for SetOfFmt<C>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<F> EquivSerializers for ImplicitlyTaggedFmt<F>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<Inner: EquivSerializers> EquivSerializers for Cond<Inner>

Source§

impl<Inner: EquivSerializers> EquivSerializers for Named<Inner>

Source§

impl<Inner: EquivSerializers> EquivSerializers for Ref<Inner>

Source§

impl<Inner> EquivSerializers for Const<Inner, Inner::SVal>
where Inner: EquivSerializers,

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

impl<T> EquivSerializers for BundledSpecs<T>

Source§

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

Source§

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

Source§

impl<const DER: bool> EquivSerializers for BitStringFmt<DER>

Source§

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

Source§

impl<const DER: bool> EquivSerializers for GeneralizedTimeFmt<DER>

Source§

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

Source§

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

Source§

impl<const DER: bool> EquivSerializers for RealFmt<DER>

Source§

impl<const DER: bool> EquivSerializers for UtcTimeFmt<DER>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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