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