pub enum CcStep {
Hyp(usize),
Refl(usize),
Sym(usize),
Trans(usize, usize),
Cong(usize, usize),
}Expand description
One step of an equality proof.
Five rules, and between them they are the whole of equational logic on a first-order term
language. A congruence-closure ENGINE is a fixpoint over an e-graph with a union-find and
use lists; a PROOF that one particular equation is in that closure is this list, and
checking it needs neither. That asymmetry is the entire reason a second kernel can afford to
look at try_cc at all.
Variants§
Hyp(usize)
The goal’s i-th equality hypothesis, as it stands.
Refl(usize)
t = t, for the term at table index t.
Sym(usize)
From step i proving a = b, conclude b = a.
Trans(usize, usize)
From step i proving a = b and step j proving b = c, conclude a = c.
Cong(usize, usize)
From step i proving f = g and step j proving x = y, conclude f x = g y.
Trait Implementations§
impl Eq for CcStep
impl StructuralPartialEq for CcStep
Auto Trait Implementations§
impl Freeze for CcStep
impl RefUnwindSafe for CcStep
impl Send for CcStep
impl Sync for CcStep
impl Unpin for CcStep
impl UnsafeUnpin for CcStep
impl UnwindSafe for CcStep
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