pub struct SharedTermsManager { /* private fields */ }Expand description
Shared terms manager for theory combination.
Implementations§
Sourcepub fn new(config: SharedTermsConfig) -> Self
pub fn new(config: SharedTermsConfig) -> Self
Create a new shared terms manager.
Sourcepub fn default_config() -> Self
pub fn default_config() -> Self
Create with default configuration.
Sourcepub fn register_term(&mut self, term: TermId, theory: TheoryId)
pub fn register_term(&mut self, term: TermId, theory: TheoryId)
Register a shared term.
Check if a term is shared between multiple theories.
Sourcepub fn assert_equality(&mut self, lhs: TermId, rhs: TermId)
pub fn assert_equality(&mut self, lhs: TermId, rhs: TermId)
Assert equality between two terms.
This merges their equivalence classes and queues notifications.
Sourcepub fn are_equal(&mut self, lhs: TermId, rhs: TermId) -> bool
pub fn are_equal(&mut self, lhs: TermId, rhs: TermId) -> bool
Check if two terms are in the same equivalence class.
Sourcepub fn get_pending_equalities(&self) -> &[Equality]
pub fn get_pending_equalities(&self) -> &[Equality]
Get pending equalities to propagate.
Sourcepub fn flush_equalities(&mut self)
pub fn flush_equalities(&mut self)
Flush pending equalities (send to theories).
Get all shared terms.
Sourcepub fn stats(&self) -> &SharedTermsStats
pub fn stats(&self) -> &SharedTermsStats
Get statistics.
Trait Implementations§
Auto Trait Implementations§
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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