pub enum NodeKind {
Instantiation(InstIdx),
ENode(ENodeIdx),
GivenEquality(EqGivenIdx, Option<NonMaxU32>),
TransEquality(EqTransIdx),
Proof(ProofIdx),
Cdcl(CdclIdx),
}
Variants§
Instantiation(InstIdx)
Corresponds to InstIdx
.
Parents: (small) arbitrary count, will always be ENode
or
TransEquality
.
Children: (small) arbitrary count, will always be ENode
.
ENode(ENodeIdx)
Corresponds to ENodeIdx
.
Parents: will always have 0 or 1 parents, if 1 then this will be an Instantiation
.
Children: (large) arbitrary count, will always be either
Instantiation
or GivenEquality
of type EqualityExpl::Literal
.
GivenEquality(EqGivenIdx, Option<NonMaxU32>)
Corresponds to EqGivenIdx
.
Parents: will always have 0 or 1 parents, if 1 then this will be an
ENode
or a TransEquality
depending on if it’s a Literal
or
Congruence
resp.
Children: (small) arbitrary count, will always be TransEquality
of
type.
TransEquality(EqTransIdx)
Corresponds to EqTransIdx
.
Parents: (small) arbitrary count, will always be GivenEquality
or
TransEquality
. The number of immediately reachable GivenEquality
can
be found in TransitiveExpl::given_len
.
Children: (large) arbitrary count, can be GivenEquality
,
TransEquality
or Instantiation
.
Proof(ProofIdx)
Corresponds to ProofIdx
.
Parents: (large) arbitrary count, will always be Proof
or
Instantiation
.
Children: (small?) arbitrary count, will always be Proof
.
Cdcl(CdclIdx)
Corresponds to CdclIdx
. Only connected to other Cdcl
nodes.
Parents: will always have between 0 and 2 parents, if 2 then only one is a real edge and the other is a backtracking edge. Children: (generally small) arbitrary count, depends on how many times we backtracked here.
Implementations§
Source§impl NodeKind
impl NodeKind
pub fn inst(&self) -> Option<InstIdx>
pub fn enode(&self) -> Option<ENodeIdx>
pub fn eq_given(&self) -> Option<(EqGivenIdx, Option<NonMaxU32>)>
pub fn eq_trans(&self) -> Option<EqTransIdx>
pub fn proof(&self) -> Option<ProofIdx>
pub fn cdcl(&self) -> Option<CdclIdx>
Sourcepub fn reconnect_child(&self, _child: &Self) -> bool
pub fn reconnect_child(&self, _child: &Self) -> bool
Same as reconnect_parents
but for children. Do we reconnect hidden
children of this visible node or just this node itself?
Trait Implementations§
impl Copy for NodeKind
Auto Trait Implementations§
impl Freeze for NodeKind
impl RefUnwindSafe for NodeKind
impl Send for NodeKind
impl Sync for NodeKind
impl Unpin for NodeKind
impl UnwindSafe for NodeKind
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
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>
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