struct KVarEncodingCtxt {
    ranges: FxIndexMap<KVid, Range<KVid>>,
}Expand description
During encoding into fixpoint we generate multiple fixpoint kvars per kvar in flux. A
KVarEncodingCtxt is used to keep track of the state needed for this.
See KVarEncoding
Fields§
§ranges: FxIndexMap<KVid, Range<KVid>>A map from a rty::KVid to the range of fixpoint::KVids that will be used to
encode it.
Implementations§
Source§impl KVarEncodingCtxt
 
impl KVarEncodingCtxt
Sourcefn declare(&mut self, kvid: KVid, decl: &KVarDecl) -> Range<KVid>
 
fn declare(&mut self, kvid: KVid, decl: &KVarDecl) -> Range<KVid>
Declares that a kvar has to be encoded into fixpoint and assigns a range of
fixpoint::KVid’s to it.
fn encode_kvars( &self, kvars: &KVarGen, scx: &mut SortEncodingCtxt, ) -> Vec<KVarDecl> ⓘ
Sourcefn group_kvar_solution(
    &self,
    items: Vec<(KVid, Binder<Expr>)>,
) -> HashMap<KVid, Binder<Expr>>
 
fn group_kvar_solution( &self, items: Vec<(KVid, Binder<Expr>)>, ) -> HashMap<KVid, Binder<Expr>>
For each rty::KVid $k, this function collects all predicates associated
with the fixpoint::KVids that encode $k and combines them into a single
predicate by conjoining them.
A group (i.e., a combined predicate) is included in the result only if all
fixpoint::KVids in the encoding range of $k are present in the input.
Trait Implementations§
Source§impl Default for KVarEncodingCtxt
 
impl Default for KVarEncodingCtxt
Source§fn default() -> KVarEncodingCtxt
 
fn default() -> KVarEncodingCtxt
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for KVarEncodingCtxt
impl RefUnwindSafe for KVarEncodingCtxt
impl Send for KVarEncodingCtxt
impl Sync for KVarEncodingCtxt
impl Unpin for KVarEncodingCtxt
impl UnwindSafe for KVarEncodingCtxt
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
 
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
 
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more