pub enum EqualityExpl {
Root {
id: ENodeIdx,
},
Literal {
from: ENodeIdx,
eq: LitIdx,
to: ENodeIdx,
},
Congruence {
from: ENodeIdx,
arg_eqs: Box<[(ENodeIdx, ENodeIdx)]>,
to: ENodeIdx,
uses: Vec<BoxSlice<EqTransIdx>>,
},
Theory {
from: ENodeIdx,
theory: TheoryKind,
to: ENodeIdx,
},
Axiom {
from: ENodeIdx,
to: ENodeIdx,
},
Unknown {
kind: IString,
from: ENodeIdx,
args: BoxSlice<IString>,
to: ENodeIdx,
},
}Expand description
A Z3 equality explanation. Root represents a term that is a root of its equivalence class. All other variants represent an equality between two terms and where it came from.
Variants§
Root
Literal
Congruence
Fields
§
uses: Vec<BoxSlice<EqTransIdx>>The arg_eqs need to be evaluated whenever this is used.
Theory
Axiom
Unknown
Implementations§
Source§impl EqualityExpl
impl EqualityExpl
pub fn is_trivial(&self) -> bool
pub fn from(&self) -> ENodeIdx
pub fn to(&self) -> ENodeIdx
pub fn walk_any(&self, from: ENodeIdx) -> ENodeIdx
pub fn walk(&self, from: ENodeIdx, fwd: bool) -> Option<ENodeIdx>
pub fn kind(&self) -> Result<&'static str, IString>
pub fn kind_str<'a>(&self, strings: &'a StringTable) -> &'a str
Trait Implementations§
Source§impl Clone for EqualityExpl
impl Clone for EqualityExpl
Source§fn clone(&self) -> EqualityExpl
fn clone(&self) -> EqualityExpl
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for EqualityExpl
impl Debug for EqualityExpl
Source§impl PartialEq for EqualityExpl
impl PartialEq for EqualityExpl
impl StructuralPartialEq for EqualityExpl
Auto Trait Implementations§
impl Freeze for EqualityExpl
impl RefUnwindSafe for EqualityExpl
impl Send for EqualityExpl
impl Sync for EqualityExpl
impl Unpin for EqualityExpl
impl UnwindSafe for EqualityExpl
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
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>
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