struct ConstraintDeps {
assumptions: IndexVec<ClauseId, FxHashSet<KVid>>,
heads: IndexVec<ClauseId, Head>,
}
Fields§
§assumptions: IndexVec<ClauseId, FxHashSet<KVid>>
assumptions for each clause
heads: IndexVec<ClauseId, Head>
head of each clause
Implementations§
Source§impl ConstraintDeps
impl ConstraintDeps
fn new(node: &Node) -> Self
fn insert_clause(&mut self, assumptions: &[KVid], head: Head)
fn build(&mut self, node: &Node, assumptions: &mut Vec<KVid>)
Sourcefn bot_kvars(self) -> Assignment
fn bot_kvars(self) -> Assignment
Computes the set of all kvars that can be assigned to Bot (False), because they are not (transitively) reachable from any concrete ASSUMPTION.
Sourcefn top_kvars(self) -> Assignment
fn top_kvars(self) -> Assignment
Computes the set of all kvars that can be assigned to Top (True), because they do not (transitively) reach any concrete HEAD.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ConstraintDeps
impl RefUnwindSafe for ConstraintDeps
impl Send for ConstraintDeps
impl Sync for ConstraintDeps
impl Unpin for ConstraintDeps
impl UnwindSafe for ConstraintDeps
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