pub struct HyperBinaryResolver { /* private fields */ }Expand description
Hyper-binary resolution manager
Performs probing and hyper-binary resolution to discover new binary clauses. This can strengthen the clause database and reduce search space.
Implementations§
Source§impl HyperBinaryResolver
impl HyperBinaryResolver
Sourcepub fn add_binary_clause(&mut self, a: Lit, b: Lit)
pub fn add_binary_clause(&mut self, a: Lit, b: Lit)
Add a binary clause to the implication graph
For binary clause (a v b), this means:
- ~a => b (when a is false, b must be true)
- ~b => a (when b is false, a must be true)
Sourcepub fn probe(&mut self, probe_lit: Lit) -> Vec<HbrResult>
pub fn probe(&mut self, probe_lit: Lit) -> Vec<HbrResult>
Probe a literal to discover implied literals
Assumes the literal is true and propagates to find all implications. Returns discovered binary clauses, units, or conflicts.
Sourcepub fn double_probe(&mut self, lit: Lit) -> Vec<HbrResult>
pub fn double_probe(&mut self, lit: Lit) -> Vec<HbrResult>
Perform double lookahead probing
Probes both polarities of a literal to discover implications. Can detect:
- Failed literals (both polarities lead to conflict)
- Forced assignments (one polarity always conflicts)
- Common implications (both polarities imply same literals)
Sourcepub fn stats(&self) -> &HyperBinaryStats
pub fn stats(&self) -> &HyperBinaryStats
Get statistics
Sourcepub fn reset_stats(&mut self)
pub fn reset_stats(&mut self)
Reset statistics
Trait Implementations§
Source§impl Debug for HyperBinaryResolver
impl Debug for HyperBinaryResolver
Auto Trait Implementations§
impl Freeze for HyperBinaryResolver
impl RefUnwindSafe for HyperBinaryResolver
impl Send for HyperBinaryResolver
impl Sync for HyperBinaryResolver
impl Unpin for HyperBinaryResolver
impl UnsafeUnpin for HyperBinaryResolver
impl UnwindSafe for HyperBinaryResolver
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