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 }

Implementors§

Source§

impl EquivSerializers for BerEndFmt

Source§

impl EquivSerializers for Integer8Fmt

Source§

impl EquivSerializers for Integer16Fmt

Source§

impl EquivSerializers for BerLengthFmt

Source§

impl EquivSerializers for BmpStringFmt

Source§

impl EquivSerializers for EnumeratedFmt

Source§

impl EquivSerializers for Ia5StringFmt

Source§

impl EquivSerializers for IntegerFmt

Source§

impl EquivSerializers for ObjectIdentifierFmt

Source§

impl EquivSerializers for PrintableStringFmt

Source§

impl EquivSerializers for TagFmt

Source§

impl EquivSerializers for TeletexStringFmt

Source§

impl EquivSerializers for UniversalStringFmt

Source§

impl EquivSerializers for Utf8StringFmt

Source§

impl EquivSerializers for CborInitialFmt

Source§

impl EquivSerializers for Empty

Source§

impl EquivSerializers for Void

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 Eof

Source§

impl EquivSerializers for Tail

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

Source§

impl<A> EquivSerializers for Star<A>

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

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, 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<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<C: EquivSerializersGeneral> EquivSerializers for SetOfFmt<C>

Source§

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

Source§

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

Source§

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

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

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, 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: 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, Len: AsLen> EquivSerializers for ExactLen<Inner, Len>

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> EquivSerializers for BundledSpecs<T>

Source§

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

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> EquivSerializers for CborHeadFmt<DET>

Source§

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

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 LIMIT: usize, Body, Param> EquivSerializers for FixWith<LIMIT, Body, Param>
where Body: EquivSerializersGeneralRecBody, Body::Body: EquivSerializersGeneral, Param: DeepView<V = Body::Param>,

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

Source§

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

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