pub struct SubsumptionElimination;Expand description
Preprocessor for Subsumption Elimination.
A clause C1 subsumes another clause C2 if all literals of C1 are also present in C2
(i.e. C1 is a sub-clause of C2). If C1 subsumes C2, C2 is redundant and can be removed.
For example, if (x V y) exists, then (x V y V z) is subsumed.
This implementation assumes literals within clauses are sorted for efficient checking.
Trait Implementations§
Source§impl Clone for SubsumptionElimination
impl Clone for SubsumptionElimination
Source§fn clone(&self) -> SubsumptionElimination
fn clone(&self) -> SubsumptionElimination
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SubsumptionElimination
impl Debug for SubsumptionElimination
Source§impl Default for SubsumptionElimination
impl Default for SubsumptionElimination
Source§fn default() -> SubsumptionElimination
fn default() -> SubsumptionElimination
Returns the “default value” for a type. Read more
Source§impl PartialEq for SubsumptionElimination
impl PartialEq for SubsumptionElimination
Source§impl<L: Literal, S: LiteralStorage<L>> Preprocessor<L, S> for SubsumptionElimination
impl<L: Literal, S: LiteralStorage<L>> Preprocessor<L, S> for SubsumptionElimination
Source§fn preprocess(&self, cnf: &[Clause<L, S>]) -> Vec<Clause<L, S>>
fn preprocess(&self, cnf: &[Clause<L, S>]) -> Vec<Clause<L, S>>
Applies subsumption elimination.
Iterates through pairs of clauses. If clause C_i subsumes C_j, C_j is marked for removal.
To optimise, clauses are typically sorted by length first: a shorter clause can subsume
a longer one, but not vice versa.
impl Copy for SubsumptionElimination
impl Eq for SubsumptionElimination
impl StructuralPartialEq for SubsumptionElimination
Auto Trait Implementations§
impl Freeze for SubsumptionElimination
impl RefUnwindSafe for SubsumptionElimination
impl Send for SubsumptionElimination
impl Sync for SubsumptionElimination
impl Unpin for SubsumptionElimination
impl UnwindSafe for SubsumptionElimination
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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