pub struct CongruenceClosure { /* private fields */ }Expand description
Congruence closure for tracking equalities.
Uses union-find with path compression for efficient equivalence class management, plus congruence propagation for f(a) = f(b) when a = b.
Implementations§
Source§impl CongruenceClosure
impl CongruenceClosure
Sourcepub fn find(&mut self, expr: &Expr) -> Expr
pub fn find(&mut self, expr: &Expr) -> Expr
Find the representative of an expression (with path compression).
Sourcepub fn add_equality(&mut self, e1: Expr, e2: Expr)
pub fn add_equality(&mut self, e1: Expr, e2: Expr)
Add an equality with an optional proof term.
Sourcepub fn add_equality_with_proof(&mut self, e1: Expr, e2: Expr, proof: Expr)
pub fn add_equality_with_proof(&mut self, e1: Expr, e2: Expr, proof: Expr)
Add an equality with a proof term.
Sourcepub fn get_class(&mut self, expr: &Expr) -> Vec<Expr>
pub fn get_class(&mut self, expr: &Expr) -> Vec<Expr>
Get all expressions in the same equivalence class as expr.
Sourcepub fn num_classes(&mut self) -> usize
pub fn num_classes(&mut self) -> usize
Get the number of equivalence classes.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for CongruenceClosure
impl RefUnwindSafe for CongruenceClosure
impl Send for CongruenceClosure
impl Sync for CongruenceClosure
impl Unpin for CongruenceClosure
impl UnsafeUnpin for CongruenceClosure
impl UnwindSafe for CongruenceClosure
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