#[repr(C)]pub struct BoundedSatSolver {
pub clauses: [Clause; 50],
pub assignments: [VariableAssignment; 20],
pub decision_stack: [Decision; 20],
pub propagation_queue: [u8; 20],
pub assignment_level: u8,
pub conflict_clause: Option<Clause>,
pub config: SolverConfig,
pub solver_state: SolverState,
}Expand description
Bounded SAT solver for boolean satisfiability
Fields§
§clauses: [Clause; 50]Clause database (fixed size)
assignments: [VariableAssignment; 20]Variable assignments
decision_stack: [Decision; 20]Decision stack
propagation_queue: [u8; 20]Unit propagation queue
assignment_level: u8Current assignment level
conflict_clause: Option<Clause>Conflict analysis
config: SolverConfigSolver configuration
solver_state: SolverStateSolver state
Implementations§
Source§impl BoundedSatSolver
impl BoundedSatSolver
Sourcepub fn new(config: SolverConfig) -> Self
pub fn new(config: SolverConfig) -> Self
Create new SAT solver
Sourcepub fn add_clause(&mut self, clause: Clause) -> SolverResult<()>
pub fn add_clause(&mut self, clause: Clause) -> SolverResult<()>
Add clause to clause database
Sourcepub fn solve(&mut self) -> SolverResult<SatState>
pub fn solve(&mut self) -> SolverResult<SatState>
Solve SAT problem
Sourcepub fn get_assignments(&self) -> &[VariableAssignment; 20]
pub fn get_assignments(&self) -> &[VariableAssignment; 20]
Get variable assignments
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BoundedSatSolver
impl RefUnwindSafe for BoundedSatSolver
impl Send for BoundedSatSolver
impl Sync for BoundedSatSolver
impl Unpin for BoundedSatSolver
impl UnsafeUnpin for BoundedSatSolver
impl UnwindSafe for BoundedSatSolver
Blanket Implementations§
§impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
impl<S, A> Aggregate<Result<S, Error>> for Awhere
A: Aggregate<S>,
Aggregate shares in an MPC protocol.
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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§impl<T> NoneValue for Twhere
T: Default,
impl<T> NoneValue for Twhere
T: Default,
type NoneType = T
§fn null_value() -> T
fn null_value() -> T
The none-equivalent value.