SMT-RAT
24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
|
Implements a module performing DPLL style SAT checking. More...
#include <SATModule.h>
Data Structures | |
struct | Abstraction |
Stores all information regarding a Boolean abstraction of a constraint. More... | |
struct | ClauseInformation |
struct | CNFInfos |
struct | lemma_lt |
struct | LiteralClauses |
struct | UnorderedClauseLookup |
struct | VarData |
Stores information about a Minisat variable. More... | |
struct | VarOrderLt |
struct | WatcherDeleted |
[Minisat related code] More... | |
Public Types | |
typedef Settings | SettingsType |
enum class | LemmaType : unsigned { NORMAL = 0 , PERMANENT = 1 } |
Public Member Functions | |
SATModule (const ModuleInput *_formula, Conditionals &_foundAnswer, Manager *const _manager=nullptr) | |
Constructs a SATModule. More... | |
~SATModule () | |
Destructs this SATModule. More... | |
bool | addCore (ModuleInput::const_iterator) |
The module has to take the given sub-formula of the received formula into account. More... | |
Answer | checkCore () |
Checks the received formula for consistency. More... | |
void | removeCore (ModuleInput::const_iterator) |
Removes everything related to the given sub-formula of the received formula. More... | |
void | updateModel () const |
Updates the model, if the solver has detected the consistency of the received formula, beforehand. More... | |
void | updateAllModels () |
Updates all satisfying models, if the solver has detected the consistency of the received formula, beforehand. More... | |
void | updateInfeasibleSubset () |
Updates the infeasible subset found by the SATModule, if the received formula is unsatisfiable. More... | |
void | cleanUpAfterOptimizing (const std::vector< Minisat::CRef > &_excludedAssignments) |
void | removeUpperBoundOnMinimal () |
void | addConstraintToInform (const FormulaT &) |
Adds a constraint to the collection of constraints of this module, which are informed to a freshly generated backend. More... | |
void | addConstraintToInform_ (const FormulaT &_formula) |
void | addBooleanAssignments (RationalAssignment &_rationalAssignment) const |
Adds the Boolean assignments to the given assignments, which were determined by the Minisat procedure. More... | |
void | print (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints everything. More... | |
void | printCurrentAssignment (std::ostream &=std::cout, const std::string &="") const |
Prints the current assignment of the SAT solver. More... | |
void | printConstraintLiteralMap (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the constraints to literal map. More... | |
void | printFormulaCNFInfosMap (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the formulas to clauses map. More... | |
void | printClauseInformation (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the clause information. More... | |
void | printBooleanVarMap (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints map of the Boolean within the SAT solver to the given Booleans. More... | |
void | printBooleanConstraintMap (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the literal to constraint map. More... | |
void | printClause (Minisat::CRef _clause, bool _withAssignment=false, std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the clause at the given reference. More... | |
void | printClause (const Minisat::vec< Minisat::Lit > &, bool _withAssignment=false, std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the clause resulting from the given vector of literals. More... | |
void | printClauses (const Minisat::vec< Minisat::CRef > &_clauses, const std::string _name, std::ostream &_out=std::cout, const std::string &_init="", int=0, bool _withAssignment=false, bool _onlyNotSatisfied=false) const |
Prints all given clauses. More... | |
void | printDecisions (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the decisions the SAT solver has made. More... | |
void | printPropagatedLemmas (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the propagated lemmas for each variables which influence its value. More... | |
void | printLiteralsActiveOccurrences (std::ostream &_out=std::cout, const std::string &_init="") const |
Prints the literals' active occurrences in all clauses. More... | |
void | collectStats () |
Collects the taken statistics. More... | |
bool | inform (const FormulaT &_constraint) |
Informs the module about the given constraint. More... | |
void | deinform (const FormulaT &_constraint) |
The inverse of informing about a constraint. More... | |
virtual void | init () |
Informs all backends about the so far encountered constraints, which have not yet been communicated. More... | |
bool | add (ModuleInput::const_iterator _subformula) |
The module has to take the given sub-formula of the received formula into account. More... | |
virtual Answer | check (bool _final=false, bool _full=true, carl::Variable _objective=carl::Variable::NO_VARIABLE) |
Checks the received formula for consistency. More... | |
virtual void | remove (ModuleInput::const_iterator _subformula) |
Removes everything related to the given sub-formula of the received formula. More... | |
virtual std::list< std::vector< carl::Variable > > | getModelEqualities () const |
Partition the variables from the current model into equivalence classes according to their assigned value. More... | |
unsigned | currentlySatisfiedByBackend (const FormulaT &_formula) const |
virtual unsigned | currentlySatisfied (const FormulaT &) const |
bool | receivedVariable (carl::Variable::Arg _var) const |
Answer | solverState () const |
std::size_t | id () const |
void | setId (std::size_t _id) |
Sets this modules unique ID to identify itself. More... | |
thread_priority | threadPriority () const |
void | setThreadPriority (thread_priority _threadPriority) |
Sets the priority of this module to get a thread for running its check procedure. More... | |
const ModuleInput * | pReceivedFormula () const |
const ModuleInput & | rReceivedFormula () const |
const ModuleInput * | pPassedFormula () const |
const ModuleInput & | rPassedFormula () const |
const Model & | model () const |
const std::vector< Model > & | allModels () const |
const std::vector< FormulaSetT > & | infeasibleSubsets () const |
const std::vector< Module * > & | usedBackends () const |
const carl::FastSet< FormulaT > & | constraintsToInform () const |
const carl::FastSet< FormulaT > & | informedConstraints () const |
void | addLemma (const FormulaT &_lemma, const LemmaType &_lt=LemmaType::NORMAL, const FormulaT &_preferredFormula=FormulaT(carl::FormulaType::TRUE)) |
Stores a lemma being a valid formula. More... | |
bool | hasLemmas () |
Checks whether this module or any of its backends provides any lemmas. More... | |
void | clearLemmas () |
Deletes all yet found lemmas. More... | |
const std::vector< Lemma > & | lemmas () const |
ModuleInput::const_iterator | firstUncheckedReceivedSubformula () const |
ModuleInput::const_iterator | firstSubformulaToPass () const |
void | receivedFormulaChecked () |
Notifies that the received formulas has been checked. More... | |
const smtrat::Conditionals & | answerFound () const |
bool | isPreprocessor () const |
virtual std::string | moduleName () const |
carl::Variable | objective () const |
bool | is_minimizing () const |
void | excludeNotReceivedVariablesFromModel () const |
Excludes all variables from the current model, which do not occur in the received formula. More... | |
void | updateLemmas () |
Stores all lemmas of any backend of this module in its own lemma vector. More... | |
void | collectTheoryPropagations () |
void | collectOrigins (const FormulaT &_formula, FormulasT &_origins) const |
Collects the formulas in the given formula, which are part of the received formula. More... | |
void | collectOrigins (const FormulaT &_formula, FormulaSetT &_origins) const |
bool | hasValidInfeasibleSubset () const |
void | checkInfSubsetForMinimality (std::vector< FormulaSetT >::const_iterator _infsubset, const std::string &_filename="smaller_muses", unsigned _maxSizeDifference=1) const |
Checks the given infeasible subset for minimality by storing all subsets of it, which have a smaller size which differs from the size of the infeasible subset not more than the given threshold. More... | |
virtual std::pair< bool, FormulaT > | getReceivedFormulaSimplified () |
void | print (const std::string &_initiation="***") const |
Prints everything relevant of the solver. More... | |
void | printReceivedFormula (const std::string &_initiation="***") const |
Prints the vector of the received formula. More... | |
void | printPassedFormula (const std::string &_initiation="***") const |
Prints the vector of passed formula. More... | |
void | printInfeasibleSubsets (const std::string &_initiation="***") const |
Prints the infeasible subsets. More... | |
void | printModel (std::ostream &_out=std::cout) const |
Prints the assignment of this module satisfying its received formula if it satisfiable and this module could find an assignment. More... | |
void | printAllModels (std::ostream &_out=std::cout) |
Prints all assignments of this module satisfying its received formula if it satisfiable and this module could find an assignment. More... | |
Static Public Member Functions | |
static void | freeSplittingVariable (const FormulaT &_splittingVariable) |
Static Public Attributes | |
static size_t | mNumOfBranchVarsToStore = 5 |
The number of different variables to consider for a probable infinite loop of branchings. More... | |
static std::vector< Branching > | mLastBranches = std::vector<Branching>(mNumOfBranchVarsToStore, Branching(typename Poly::PolyType(), 0)) |
Stores the last branches in a cycle buffer. More... | |
static size_t | mFirstPosInLastBranches = 0 |
The beginning of the cyclic buffer storing the last branches. More... | |
static std::vector< FormulaT > | mOldSplittingVariables |
Reusable splitting variables. More... | |
Protected Member Functions | |
virtual bool | informCore ([[maybe_unused]] const FormulaT &_constraint) |
Informs the module about the given constraint. More... | |
virtual void | deinformCore ([[maybe_unused]] const FormulaT &_constraint) |
The inverse of informing about a constraint. More... | |
virtual bool | addCore ([[maybe_unused]] ModuleInput::const_iterator formula) |
The module has to take the given sub-formula of the received formula into account. More... | |
virtual void | removeCore ([[maybe_unused]] ModuleInput::const_iterator formula) |
Removes everything related to the given sub-formula of the received formula. More... | |
bool | anAnswerFound () const |
Checks for all antecedent modules and those which run in parallel with the same antecedent modules, whether one of them has determined a result. More... | |
void | clearModel () const |
Clears the assignment, if any was found. More... | |
void | clearModels () const |
Clears all assignments, if any was found. More... | |
void | cleanModel () const |
Substitutes variable occurrences by its model value in the model values of other variables. More... | |
ModuleInput::iterator | passedFormulaBegin () |
ModuleInput::iterator | passedFormulaEnd () |
void | addOrigin (ModuleInput::iterator _formula, const FormulaT &_origin) |
Adds the given set of formulas in the received formula to the origins of the given passed formula. More... | |
const FormulaT & | getOrigins (ModuleInput::const_iterator _formula) const |
Gets the origins of the passed formula at the given position. More... | |
void | getOrigins (const FormulaT &_formula, FormulasT &_origins) const |
void | getOrigins (const FormulaT &_formula, FormulaSetT &_origins) const |
std::pair< ModuleInput::iterator, bool > | removeOrigin (ModuleInput::iterator _formula, const FormulaT &_origin) |
std::pair< ModuleInput::iterator, bool > | removeOrigins (ModuleInput::iterator _formula, const std::shared_ptr< std::vector< FormulaT >> &_origins) |
void | informBackends (const FormulaT &_constraint) |
Informs all backends of this module about the given constraint. More... | |
std::pair< ModuleInput::iterator, bool > | addReceivedSubformulaToPassedFormula (ModuleInput::const_iterator _subformula) |
Copies the given sub-formula of the received formula to the passed formula. More... | |
bool | originInReceivedFormula (const FormulaT &_origin) const |
std::pair< ModuleInput::iterator, bool > | addSubformulaToPassedFormula (const FormulaT &_formula) |
Adds the given formula to the passed formula with no origin. More... | |
std::pair< ModuleInput::iterator, bool > | addSubformulaToPassedFormula (const FormulaT &_formula, const std::shared_ptr< std::vector< FormulaT >> &_origins) |
Adds the given formula to the passed formula. More... | |
std::pair< ModuleInput::iterator, bool > | addSubformulaToPassedFormula (const FormulaT &_formula, const FormulaT &_origin) |
Adds the given formula to the passed formula. More... | |
void | generateTrivialInfeasibleSubset () |
Stores the trivial infeasible subset being the set of received formulas. More... | |
void | receivedFormulasAsInfeasibleSubset (ModuleInput::const_iterator _subformula) |
Stores an infeasible subset consisting only of the given received formula. More... | |
std::vector< FormulaT >::const_iterator | findBestOrigin (const std::vector< FormulaT > &_origins) const |
void | getInfeasibleSubsets () |
Copies the infeasible subsets of the passed formula. More... | |
std::vector< FormulaSetT > | getInfeasibleSubsets (const Module &_backend) const |
Get the infeasible subsets the given backend provides. More... | |
const Model & | backendsModel () const |
Stores the model of a backend which determined satisfiability of the passed formula in the model of this module. More... | |
void | getBackendsModel () const |
void | getBackendsAllModels () const |
Stores all models of a backend in the list of all models of this module. More... | |
virtual Answer | runBackends (bool _final, bool _full, carl::Variable _objective) |
Runs the backend solvers on the passed formula. More... | |
virtual Answer | runBackends () |
virtual ModuleInput::iterator | eraseSubformulaFromPassedFormula (ModuleInput::iterator _subformula, bool _ignoreOrigins=false) |
Removes everything related to the sub-formula to remove from the passed formula in the backends of this module. More... | |
void | clearPassedFormula () |
std::vector< FormulaT > | merge (const std::vector< FormulaT > &, const std::vector< FormulaT > &) const |
Merges the two vectors of sets into the first one. More... | |
size_t | determine_smallest_origin (const std::vector< FormulaT > &origins) const |
bool | probablyLooping (const typename Poly::PolyType &_branchingPolynomial, const Rational &_branchingValue) const |
Checks whether given the current branching value and branching variable/polynomial it is (highly) probable that this branching is part of an infinite loop of branchings. More... | |
bool | branchAt (const Poly &_polynomial, bool _integral, const Rational &_value, std::vector< FormulaT > &&_premise, bool _leftCaseWeak=true, bool _preferLeftCase=true, bool _useReceivedFormulaAsPremise=false) |
Adds a lemmas which provoke a branching for the given variable at the given value, if this module returns Unknown and there exists a preceding SATModule. More... | |
bool | branchAt (const Poly &_polynomial, bool _integral, const Rational &_value, bool _leftCaseWeak=true, bool _preferLeftCase=true, bool _useReceivedFormulaAsPremise=false, const std::vector< FormulaT > &_premise=std::vector< FormulaT >()) |
bool | branchAt (carl::Variable::Arg _var, const Rational &_value, std::vector< FormulaT > &&_premise, bool _leftCaseWeak=true, bool _preferLeftCase=true, bool _useReceivedFormulaAsPremise=false) |
bool | branchAt (carl::Variable::Arg _var, const Rational &_value, bool _leftCaseWeak=true, bool _preferLeftCase=true, bool _useReceivedFormulaAsPremise=false, const std::vector< FormulaT > &_premise=std::vector< FormulaT >()) |
void | splitUnequalConstraint (const FormulaT &) |
Adds the following lemmas for the given constraint p!=0. More... | |
unsigned | checkModel () const |
void | addInformationRelevantFormula (const FormulaT &formula) |
Adds a formula to the InformationRelevantFormula. More... | |
const std::set< FormulaT > & | getInformationRelevantFormulas () |
Gets all InformationRelevantFormulas. More... | |
bool | isLemmaLevel (LemmaLevel level) |
Checks if current lemma level is greater or equal to given level. More... | |
Static Protected Member Functions | |
static bool | modelsDisjoint (const Model &_modelA, const Model &_modelB) |
Checks whether there is no variable assigned by both models. More... | |
Protected Attributes | |
std::vector< FormulaSetT > | mInfeasibleSubsets |
Stores the infeasible subsets. More... | |
Manager *const | mpManager |
A reference to the manager. More... | |
Model | mModel |
Stores the assignment of the current satisfiable result, if existent. More... | |
std::vector< Model > | mAllModels |
Stores all satisfying assignments. More... | |
bool | mModelComputed |
True, if the model has already been computed. More... | |
bool | mFinalCheck |
true, if the check procedure should perform a final check which especially means not to postpone splitting decisions More... | |
bool | mFullCheck |
false, if this module should avoid too expensive procedures and rather return unknown instead. More... | |
carl::Variable | mObjectiveVariable |
Objective variable to be minimized. If set to NO_VARIABLE, a normal sat check should be performed. More... | |
std::vector< TheoryPropagation > | mTheoryPropagations |
std::atomic< Answer > | mSolverState |
States whether the received formula is known to be satisfiable or unsatisfiable otherwise it is set to unknown. More... | |
std::atomic_bool * | mBackendsFoundAnswer |
This flag is passed to any backend and if it determines an answer to a prior check call, this flag is fired. More... | |
Conditionals | mFoundAnswer |
Vector of Booleans: If any of them is true, we have to terminate a running check procedure. More... | |
std::vector< Module * > | mUsedBackends |
The backends of this module which are currently used (conditions to use this module are fulfilled for the passed formula). More... | |
std::vector< Module * > | mAllBackends |
The backends of this module which have been used. More... | |
ModuleInput::iterator | mFirstSubformulaToPass |
Stores the position of the first sub-formula in the passed formula, which has not yet been considered for a consistency check of the backends. More... | |
carl::FastSet< FormulaT > | mConstraintsToInform |
Stores the constraints which the backends must be informed about. More... | |
carl::FastSet< FormulaT > | mInformedConstraints |
Stores the position of the first constraint of which no backend has been informed about. More... | |
ModuleInput::const_iterator | mFirstUncheckedReceivedSubformula |
Stores the position of the first (by this module) unchecked sub-formula of the received formula. More... | |
unsigned | mSmallerMusesCheckCounter |
Counter used for the generation of the smt2 files to check for smaller muses. More... | |
std::vector< std::size_t > | mVariableCounters |
Maps variables to the number of their occurrences. More... | |
Private Types | |
using | VarScheduler = typename Settings::VarScheduler |
typedef carl::FastMap< FormulaT, std::vector< Minisat::Lit > > | ConstraintLiteralsMap |
Maps the constraints occurring in the SAT module to their abstractions. More... | |
typedef carl::FastMap< carl::Variable, Minisat::Var > | BooleanVarMap |
Maps the Boolean variables to their corresponding Minisat variable. More... | |
typedef std::unordered_map< int, FormulaT > | MinisatVarMap |
Maps the Minisat variables to their corresponding boolean variable. More... | |
typedef Minisat::vec< std::pair< Abstraction *, Abstraction * > > | BooleanConstraintMap |
Maps each Minisat variable to a pair of Abstractions, one contains the abstraction information of the literal being the variable and one contains the abstraction information of the literal being the variables negation. More... | |
typedef carl::FastMap< FormulaT, CNFInfos > | FormulaCNFInfosMap |
Maps the clauses in the received formula to the corresponding Minisat clause. More... | |
typedef std::map< Minisat::Var, FormulasT > | VarLemmaMap |
Maps the minisat variable to the formulas which influence its value. More... | |
typedef std::vector< std::vector< Minisat::Lit > > | ClauseVector |
A vector of vectors of literals representing a vector of clauses. More... | |
typedef std::set< std::vector< int > > | ClauseSet |
A set of vectors of integer representing a set of clauses. More... | |
typedef carl::FastMap< signed, std::vector< signed > > | TseitinVarShadows |
Private Member Functions | |
Minisat::Var | newVar (bool polarity=true, bool dvar=true, double _activity=0, bool insertIntoHeap=true) |
Creates a new SAT variable in the solver. More... | |
void | simplify () |
Removes already satisfied clauses and performs simplifications on all clauses. More... | |
bool | addClause (const Minisat::vec< Minisat::Lit > &_clause, unsigned _type=0) |
Adds the clause of the given type with the given literals to the clauses managed by Minisat. More... | |
void | removeLiteralOrigin (Minisat::Lit _litToRemove, const FormulaT &_origin) |
bool | okay () const |
void | setPolarity (Minisat::Var v, bool b) |
Declare which polarity the decision heuristic should use for a variable. More... | |
void | setDecisionVar (Minisat::Var v, bool b, bool insertIntoHeap=true) |
Declare if a variable should be eligible for selection in the decision heuristic. More... | |
Minisat::lbool | bool_value (Minisat::Var x) const |
Minisat::lbool | value (Minisat::Var x) const |
Minisat::lbool | theoryValue (Minisat::Var x) const |
bool | addClauseIfNew (const FormulasT &clause) |
void | handleTheoryConflict (const mcsat::Explanation &explanation) |
Minisat::lbool | bool_value (Minisat::Lit p) const |
Minisat::lbool | value (Minisat::Lit p) const |
Minisat::lbool | theoryValue (Minisat::Lit p) const |
int | nAssigns () const |
int | nClauses () const |
int | nLearnts () const |
int | nVars () const |
int | nFreeVars () const |
void | setConfBudget (int64_t x) |
[Minisat related code] More... | |
void | setPropBudget (int64_t x) |
[Minisat related code] More... | |
void | budgetOff () |
[Minisat related code] More... | |
void | interrupt () |
Trigger a (potentially asynchronous) interruption of the solver. More... | |
void | clearInterrupt () |
Clear interrupt indicator flag. More... | |
void | garbageCollect () |
[Minisat related code] More... | |
void | checkGarbage (double gf) |
[Minisat related code] More... | |
void | checkGarbage (void) |
[Minisat related code] More... | |
void | printSatState (std::ostream &=std::cout, const std::string="") |
[Minisat related code] More... | |
void | insertVarOrder (Minisat::Var x) |
Insert a variable in the decision order priority queue. More... | |
void | decrementLearntSizeAdjustCnt () |
[Minisat related code] More... | |
bool | fullAssignment () |
Minisat::Lit | pickBranchLit () |
void | checkAbstractionsConsistency () |
void | newDecisionLevel () |
Begins a new decision level. More... | |
void | decrementTseitinShadowOccurrences (signed _var) |
void | incrementTseitinShadowOccurrences (signed _var) |
void | uncheckedEnqueue (Minisat::Lit p, Minisat::CRef from=Minisat::CRef_Undef) |
Enqueue a literal. More... | |
bool | enqueue (Minisat::Lit p, Minisat::CRef from=Minisat::CRef_Undef) |
Test if fact 'p' contradicts current state, enqueue otherwise. More... | |
Minisat::CRef | propagate () |
propagate : [void] -> [Clause*] More... | |
void | cancelUntil (int level, bool force=false) |
Revert to the state at given level (keeping all assignments at 'level' but not beyond). More... | |
void | cancelIncludingLiteral (Minisat::Lit lit) |
void | cancelAssignmentUntil (int level) |
Revert the variables assignment until a given level (keeping all assignments at 'level') More... | |
void | resetVariableAssignment (Minisat::Var _var) |
bool | analyze (Minisat::CRef confl, Minisat::vec< Minisat::Lit > &out_learnt, int &out_btlevel) |
analyze : (confl : Clause*) (out_learnt : vec<Lit>&) (out_btlevel : int&) -> [void] More... | |
bool | litRedundant (Minisat::Lit p, uint32_t abstract_levels) |
Check if 'p' can be removed. More... | |
bool | processLemmas () |
Adds clauses representing the lemmas which should be added to this SATModule. More... | |
void | learnTheoryConflicts () |
Adds the clauses representing all conflicts generated by all backends. More... | |
void | adaptConflictEvaluation (size_t &_clauseEvaluation, Minisat::Lit _lit, bool _firstLiteral) |
Minisat::CRef | propagateConsistently (bool _checkWithTheory=true) |
Propagate and check the consistency of the constraints, whose abstraction literals have been assigned to true. More... | |
void | propagateTheory () |
void | theoryCall () |
void | constructLemmas () |
bool | expPositionsCorrect () const |
Minisat::lbool | checkFormula () |
Checks the received formula for consistency. More... | |
void | computeAdvancedLemmas () |
Minisat::lbool | search (int nof_conflicts=100) |
search : (nof_conflicts : int) (params : const SearchParams&) -> [lbool] More... | |
void | handleConflict (Minisat::CRef _confl) |
Handles conflict. More... | |
void | reduceDB () |
reduceDB : () -> [void] More... | |
void | clearLearnts (int n) |
void | removeSatisfied (Minisat::vec< Minisat::CRef > &cs) |
Removes all satisfied clauses from the given vector of clauses, which should only be performed in decision level 0. More... | |
void | rebuildOrderHeap () |
[Minisat related code] More... | |
double | maxActivity () const |
void | varDecayActivity () |
Decay all variables with the specified factor. More... | |
void | varBumpActivity (Minisat::Var v, double inc) |
Increase a variable with the current 'bump' value. More... | |
void | varBumpActivity (Minisat::Var v) |
Increase a variable with the current 'bump' value. More... | |
void | claDecayActivity () |
Decay all clauses with the specified factor. More... | |
void | claBumpActivity (Minisat::Clause &c) |
Increase a clause with the current 'bump' value. More... | |
void | attachClause (Minisat::CRef cr) |
Attach a clause to watcher lists. More... | |
void | detachClause (Minisat::CRef cr, bool strict=false) |
Detach a clause to watcher lists. More... | |
void | removeClause (Minisat::CRef cr) |
Detach and free a clause. More... | |
Minisat::Clause & | getClause (Minisat::CRef cr) |
bool | locked (const Minisat::Clause &c) |
bool | satisfied (const Minisat::Clause &c) const |
bool | bool_satisfied (const Minisat::Clause &c) const |
void | relocAll (Minisat::ClauseAllocator &to) |
[Minisat related code] More... | |
int | decisionLevel () const |
uint32_t | abstractLevel (Minisat::Var x) const |
Used to represent an abstraction of sets of decision levels. More... | |
Minisat::CRef | reason (Minisat::Var x) |
void | removeTheoryPropagation (int _position) |
int | level (Minisat::Var x) const |
int | theory_level (Minisat::Var x) const |
int | min_theory_level (Minisat::Var x) const |
int | trailIndex (Minisat::Var _var) const |
int | level (const Minisat::vec< Minisat::Lit > &) const |
Minisat::CRef | storeLemmas () |
double | progressEstimate () const |
bool | withinBudget () const |
void | updateCNFInfoCounter (typename FormulaCNFInfosMap::iterator _iter, const FormulaT &_origin, bool _increment) |
void | addClause_ (const Minisat::vec< Minisat::Lit > &_clause, unsigned _type, const FormulaT &_original, typename FormulaCNFInfosMap::iterator _formulaCNFInfoIter) |
Minisat::Lit | addClauses (const FormulaT &_formula, unsigned _type, unsigned _depth=0, const FormulaT &_original=FormulaT(carl::FormulaType::TRUE)) |
void | addXorClauses (const Minisat::vec< Minisat::Lit > &_literals, const Minisat::vec< Minisat::Lit > &_negLiterals, int _from, bool _numOfNegatedLitsEven, unsigned _type, Minisat::vec< Minisat::Lit > &_clause, const FormulaT &_original, typename FormulaCNFInfosMap::iterator _formulaCNFInfoIter) |
bool | supportedConstraintType (const FormulaT &_formula) const |
Minisat::Lit | createLiteral (const FormulaT &_formula, const FormulaT &_origin=FormulaT(carl::FormulaType::TRUE), bool _decisionRelevant=true) |
Creates or simply returns the literal belonging to the formula being the first argument. More... | |
Minisat::Lit | getLiteral (const FormulaT &_formula) const |
void | adaptPassedFormula () |
Adapts the passed formula according to the current assignment within the SAT solver. More... | |
void | adaptPassedFormula (Abstraction &_abstr) |
Adapts the passed formula according to the given abstraction information. More... | |
bool | passedFormulaCorrect () const |
void | updateModel (Model &model, bool only_relevant_variables=false) const |
Updates the model, if the solver has detected the consistency of the received formula, beforehand. More... | |
std::pair< ModuleInput::iterator, bool > | addSubformulaToPassedFormula (const FormulaT &_formula, bool _hasSingleOrigin, const FormulaT &_origin, const std::shared_ptr< std::vector< FormulaT >> &_origins, bool _mightBeConjunction) |
This method actually implements the adding of a formula to the passed formula. More... | |
Answer | foundAnswer (Answer _answer) |
Sets the solver state to the given answer value. More... | |
Static Private Member Functions | |
static Minisat::Var | mapVar (Minisat::Var x, Minisat::vec< Minisat::Var > &map, Minisat::Var &max) |
[Minisat related code] More... | |
static double | luby (double y, int x) |
Finite subsequences of the Luby-sequence: More... | |
static double | drand (double &seed) |
static int | irand (double &seed, int size) |
Private Attributes | |
int | verbosity |
[Minisat related code] More... | |
double | var_decay |
[Minisat related code] More... | |
double | clause_decay |
[Minisat related code] More... | |
double | random_var_freq |
[Minisat related code] More... | |
double | random_seed |
[Minisat related code] More... | |
bool | luby_restart |
[Minisat related code] More... | |
int | ccmin_mode |
Controls conflict clause minimization (0=none, 1=basic, 2=deep). More... | |
int | phase_saving |
Controls the level of phase saving (0=none, 1=limited, 2=full). More... | |
bool | rnd_pol |
Use random polarities for branching heuristics. More... | |
bool | rnd_init_act |
Initialize variable activities with a small random value. More... | |
double | garbage_frac |
The fraction of wasted memory allowed before a garbage collection is triggered. More... | |
int | restart_first |
The initial restart limit. (default 100) More... | |
double | restart_inc |
The factor with which the restart limit is multiplied in each restart. (default 1.5) More... | |
double | learntsize_factor |
The initial limit for learned clauses is a factor of the original clauses.(default 1 / 3) More... | |
double | learntsize_inc |
The limit for learned clauses is multiplied with this factor each restart.(default 1.1) More... | |
int | learntsize_adjust_start_confl |
[Minisat related code] More... | |
double | learntsize_adjust_inc |
[Minisat related code] More... | |
uint64_t | solves |
[Minisat related code] More... | |
uint64_t | starts |
uint64_t | decisions |
uint64_t | rnd_decisions |
uint64_t | propagations |
uint64_t | conflicts |
uint64_t | dec_vars |
[Minisat related code] More... | |
uint64_t | clauses_literals |
uint64_t | learnts_literals |
uint64_t | max_literals |
uint64_t | tot_literals |
bool | ok |
If FALSE, the constraints are already unsatisfiable. No part of the solver state may be used! More... | |
Minisat::vec< Minisat::CRef > | clauses |
List of problem clauses. More... | |
Minisat::vec< Minisat::CRef > | satisfiedClauses |
List of problem clauses. More... | |
Minisat::vec< Minisat::CRef > | learnts |
List of learned clauses. More... | |
Minisat::vec< Minisat::CRef > | unknown_excludes |
List of clauses which exclude a call resulted in unknown. More... | |
double | cla_inc |
Amount to bump next clause with. More... | |
Minisat::vec< double > | activity |
A heuristic measurement of the activity of a variable. More... | |
double | var_inc |
Amount to bump next variable with. More... | |
Minisat::OccLists< Minisat::Lit, Minisat::vec< Minisat::Watcher >, WatcherDeleted > | watches |
'watches[lit]' is a list of constraints watching 'lit' (will go there if literal becomes true). More... | |
Minisat::vec< Minisat::lbool > | assigns |
The current assignments. More... | |
Minisat::vec< char > | polarity |
The preferred polarity of each variable. More... | |
Minisat::vec< char > | decision |
Declares if a variable is eligible for selection in the decision heuristic. More... | |
Minisat::vec< Minisat::Lit > | trail |
Assignment stack; stores all assignments made in the order they were made. More... | |
Minisat::vec< int > | trail_lim |
Separator indices for different decision levels in 'trail'. More... | |
Minisat::vec< VarData > | vardata |
Stores reason and level for each variable. More... | |
int | qhead |
Head of queue (as index into the trail – no more explicit propagation queue in MiniSat). More... | |
int | simpDB_assigns |
Number of top-level assignments since last execution of 'simplify()'. More... | |
int64_t | simpDB_props |
Remaining number of propagations that must be made before next execution of 'simplify()'. More... | |
Minisat::vec< Minisat::Lit > | assumptions |
Current set of assumptions provided to solve by the user. More... | |
VarScheduler | var_scheduler |
A priority queue of variables. More... | |
double | progress_estimate |
Set by 'search()'. More... | |
bool | remove_satisfied |
Indicates whether possibly inefficient linear scan for satisfied clauses should be performed in 'simplify'. More... | |
Minisat::ClauseAllocator | ca |
[Minisat related code] More... | |
Minisat::vec< char > | seen |
Each variable is prefixed by the method in which it is used, except 'seen' which is used in several places. More... | |
Minisat::vec< Minisat::Lit > | analyze_stack |
[Minisat related code] More... | |
Minisat::vec< Minisat::Lit > | analyze_toclear |
[Minisat related code] More... | |
Minisat::vec< Minisat::Lit > | add_tmp |
[Minisat related code] More... | |
double | max_learnts |
[Minisat related code] More... | |
double | learntsize_adjust_confl |
[Minisat related code] More... | |
int | learntsize_adjust_cnt |
[Minisat related code] More... | |
int64_t | conflict_budget |
-1 means no budget. More... | |
int64_t | propagation_budget |
-1 means no budget. More... | |
bool | asynch_interrupt |
[Minisat related code] More... | |
Minisat::vec< Minisat::Lit > | learnt_clause |
For temporary usage. More... | |
Minisat::Var | mTrueVar |
Variable representing true. More... | |
bool | mChangedPassedFormula |
A flag, which is set to true, if anything has been changed in the passed formula between now and the last consistency check. More... | |
bool | mComputeAllSAT |
A flag, which is set to true, if all satisfying assignments should be computed. More... | |
bool | mFullAssignmentCheckedForConsistency |
bool | mOptimumComputed |
bool | mBusy |
bool | mExcludedAssignments |
Answer | mCurrentAssignmentConsistent |
Stores gained information about the current assignment's consistency. More... | |
size_t | mNumberOfFullLazyCalls |
The number of full laze calls made. More... | |
int | mCurr_Restarts |
The number of restarts made. More... | |
unsigned | mNumberOfTheoryCalls |
The number of theory calls made. More... | |
bool | mReceivedFormulaPurelyPropositional |
BooleanConstraintMap | mBooleanConstraintMap |
Maps each Minisat variable to a pair of Abstractions, one contains the abstraction information of the literal being the variable and one contains the abstraction information of the literal being the variables negation. More... | |
ConstraintLiteralsMap | mConstraintLiteralMap |
Maps the constraints occurring in the SAT module to their abstractions. More... | |
BooleanVarMap | mBooleanVarMap |
Maps the Boolean variables to their corresponding Minisat variable. More... | |
MinisatVarMap | mMinisatVarMap |
Maps the Minisat variables to their corresponding boolean variable. More... | |
carl::FastMap< FormulaT, Minisat::Lit > | mFormulaAssumptionMap |
FormulaCNFInfosMap | mFormulaCNFInfosMap |
Maps the clauses in the received formula to the corresponding Minisat clause and Minisat literal. More... | |
ClauseSet | mLearntDeductions |
If problem is unsatisfiable (possibly under assumptions), this vector represent the final conflict clause expressed in the assumptions. More... | |
carl::FastMap< Minisat::CRef, ClauseInformation > | mClauseInformation |
std::unordered_map< int, std::unordered_set< Minisat::CRef > > | mLiteralClausesMap |
size_t | mNumberOfSatisfiedClauses |
std::vector< signed > | mChangedBooleans |
Stores all Literals for which the abstraction information might be changed. More... | |
bool | mAllActivitiesChanged |
Is true, if we have to communicate all activities to the backends. (This might be the case after rescaling the activities.) More... | |
std::vector< signed > | mChangedActivities |
Stores all clauses in which the activities have been changed. More... | |
VarLemmaMap | mPropagatedLemmas |
Stores for each variable the corresponding formulas which control its value. More... | |
std::vector< int > | mRelevantVariables |
Stores Minisat indexes of all relevant variables. More... | |
Minisat::vec< unsigned > | mNonTseitinShadowedOccurrences |
TseitinVarShadows | mTseitinVarShadows |
carl::FastMap< int, FormulaT > | mTseitinVarFormulaMap |
carl::Bitset | mTseitinVariable |
Stores whether a given variable is a tseitin variable. More... | |
carl::Bitset | mAssumedTseitinVariable |
Stores whether a given tseitin variable was already added to the assumptions. More... | |
carl::Bitset | mNonassumedTseitinVariable |
Stores whether a given tseitin variable was not yet added to the assumptions, but represents a top-level clause. More... | |
std::vector< Minisat::vec< Minisat::Lit > > | mCurrentTheoryConflicts |
std::vector< unsigned > | mCurrentTheoryConflictTypes |
std::map< std::pair< size_t, size_t >, size_t > | mCurrentTheoryConflictEvaluations |
std::unordered_set< int > | mLevelCounter |
size_t | mTheoryConflictIdCounter |
ModuleInput::iterator | mUpperBoundOnMinimal |
std::vector< LiteralClauses > | mLiteralsClausesMap |
std::vector< std::pair< size_t, size_t > > | mLiteralsActivOccurrences |
std::vector< Minisat::Lit > | mPropagationFreeDecisions |
Minisat::vec< Minisat::vec< Minisat::Lit > > | mLemmas |
literals propagated by lemmas More... | |
Minisat::vec< bool > | mLemmasRemovable |
is the lemma removable More... | |
mcsat::MCSATMixin< typename Settings::MCSATSettings > | mMCSAT |
std::map< carl::Variable, std::vector< signed > > | mFutureChangedBooleans |
UnorderedClauseLookup | mUnorderedClauseLookup |
friend | Manager |
std::size_t | mId |
A unique ID to identify this module instance. (Could be useful but currently nowhere used) More... | |
thread_priority | mThreadPriority |
The priority of this module to get a thread for running its check procedure. More... | |
const ModuleInput * | mpReceivedFormula |
The formula passed to this module. More... | |
ModuleInput * | mpPassedFormula |
The formula passed to the backends of this module. More... | |
std::string | mModuleName |
ModuleStatistics & | mStatistics = statistics_get<ModuleStatistics>(moduleName()) |
Friends | |
class | VarSchedulerBase |
class | VarSchedulerMcsatBase |
Implements a module performing DPLL style SAT checking.
It is mainly based on Minisat 2.0 and extends it by enabling the SMT-RAT module interfaces and some optimizations.
Definition at line 60 of file SATModule.h.
|
private |
Maps each Minisat variable to a pair of Abstractions, one contains the abstraction information of the literal being the variable and one contains the abstraction information of the literal being the variables negation.
Definition at line 320 of file SATModule.h.
|
private |
Maps the Boolean variables to their corresponding Minisat variable.
Definition at line 311 of file SATModule.h.
|
private |
A set of vectors of integer representing a set of clauses.
Definition at line 332 of file SATModule.h.
|
private |
A vector of vectors of literals representing a vector of clauses.
Definition at line 329 of file SATModule.h.
|
private |
Maps the constraints occurring in the SAT module to their abstractions.
We store a vector of literals for each constraints, which is only used in the optimization, which applies valid substitutions.
Definition at line 308 of file SATModule.h.
|
private |
Maps the clauses in the received formula to the corresponding Minisat clause.
Definition at line 323 of file SATModule.h.
|
private |
Maps the Minisat variables to their corresponding boolean variable.
Definition at line 314 of file SATModule.h.
typedef Settings smtrat::SATModule< Settings >::SettingsType |
Definition at line 673 of file SATModule.h.
|
private |
Definition at line 335 of file SATModule.h.
|
private |
Maps the minisat variable to the formulas which influence its value.
Definition at line 326 of file SATModule.h.
|
private |
Definition at line 218 of file SATModule.h.
|
stronginherited |
smtrat::SATModule< Settings >::SATModule | ( | const ModuleInput * | _formula, |
Conditionals & | _foundAnswer, | ||
Manager *const | _manager = nullptr |
||
) |
Constructs a SATModule.
_type | The type of this module being SATModule. |
_formula | The formula passed to this module, called received formula. |
_settings | [Not yet used.] |
_foundAnswer | Vector of Booleans: If any of them is true, we have to terminate a running check procedure. |
_manager | A reference to the manager of the solver using this module. |
smtrat::SATModule< Settings >::~SATModule | ( | ) |
Destructs this SATModule.
|
inlineprivate |
Used to represent an abstraction of sets of decision levels.
x | [Minisat related code] |
Definition at line 1592 of file SATModule.h.
|
private |
|
private |
Adapts the passed formula according to the current assignment within the SAT solver.
|
private |
Adapts the passed formula according to the given abstraction information.
_abstr | The information of a Boolean abstraction of a constraint (contains no information, if the Boolean does not correspond to a constraint's abstraction). |
|
inherited |
The module has to take the given sub-formula of the received formula into account.
_subformula | The sub-formula to take additionally into account. |
Definition at line 138 of file Module.cpp.
void smtrat::SATModule< Settings >::addBooleanAssignments | ( | RationalAssignment & | _rationalAssignment | ) | const |
Adds the Boolean assignments to the given assignments, which were determined by the Minisat procedure.
Note: Assignments in the given map are not overwritten.
_rationalAssignment | The assignments to add the Boolean assignments to. |
|
private |
Adds the clause of the given type with the given literals to the clauses managed by Minisat.
_clause | The clause to add. |
_type | The type of the clause (NORMAL_CLAUSE, LEMMA_CLAUSE or CONFLICT_CLAUSE). |
_force | If true backtracking won't stop at the first assumption-decision-level. |
|
inlineprivate |
|
inlineprivate |
Definition at line 961 of file SATModule.h.
|
private |
|
inlinevirtual |
Adds a constraint to the collection of constraints of this module, which are informed to a freshly generated backend.
_constraint | The constraint to add. |
Reimplemented from smtrat::Module.
Definition at line 734 of file SATModule.h.
|
inline |
|
inlineprotectedvirtualinherited |
The module has to take the given sub-formula of the received formula into account.
formula | The sub-formula to take additionally into account. |
Definition at line 706 of file Module.h.
bool smtrat::SATModule< Settings >::addCore | ( | ModuleInput::const_iterator | ) |
The module has to take the given sub-formula of the received formula into account.
_subformula | The sub-formula to take additionally into account. |
|
protectedinherited |
Adds a formula to the InformationRelevantFormula.
formula | Formula to add |
Definition at line 1068 of file Module.cpp.
|
inlineinherited |
|
inlineprotectedinherited |
Adds the given set of formulas in the received formula to the origins of the given passed formula.
_formula | The passed formula to set the origins for. |
_origin | A set of formulas in the received formula of this module. |
Definition at line 798 of file Module.h.
|
inlineprotectedinherited |
Copies the given sub-formula of the received formula to the passed formula.
Note, that there is always a link between sub-formulas of the passed formulas to sub-formulas of the received formulas, which are responsible for its occurrence.
_subformula | The sub-formula of the received formula to copy. |
Definition at line 857 of file Module.h.
|
inlineprotectedinherited |
Adds the given formula to the passed formula with no origin.
Note that in the next call of this module's removeSubformula, all formulas in the passed formula without origins will be removed.
_formula | The formula to add to the passed formula. |
Definition at line 873 of file Module.h.
|
privateinherited |
This method actually implements the adding of a formula to the passed formula.
_formula | The formula to add to the passed formula. |
_hasSingleOrigin | true, if the next argument contains the formula being the single origin. |
_origin | The sub-formula of the received formula being responsible for the occurrence of the formula to add to the passed formula. |
_origins | The link of the formula to add to the passed formula to sub-formulas of the received formulas, which are responsible for its occurrence |
_mightBeConjunction | true, if the formula to add might be a conjunction. |
Definition at line 341 of file Module.cpp.
|
inlineprotectedinherited |
Adds the given formula to the passed formula.
_formula | The formula to add to the passed formula. |
_origin | The sub-formula of the received formula being responsible for the occurrence of the formula to add to the passed formula. |
Definition at line 901 of file Module.h.
|
inlineprotectedinherited |
Adds the given formula to the passed formula.
_formula | The formula to add to the passed formula. |
_origins | The link of the formula to add to the passed formula to sub-formulas of the received formulas, which are responsible for its occurrence |
Definition at line 887 of file Module.h.
|
private |
|
inlineinherited |
|
private |
analyze : (confl : Clause*) (out_learnt : vec<Lit>&) (out_btlevel : int&) -> [void]
Description: Analyze conflict and produce a reason clause.
Pre-conditions:
Post-conditions:
confl | A reference to the conflicting clause. |
out_learnt | The asserting clause derived by this method. |
out_btlevel | The level to backtrack to according the analysis of this method. |
|
inlineprotectedinherited |
|
inlineinherited |
|
private |
Attach a clause to watcher lists.
cr | [Minisat related code] |
|
protectedinherited |
Stores the model of a backend which determined satisfiability of the passed formula in the model of this module.
Definition at line 630 of file Module.cpp.
|
private |
|
inlineprivate |
|
inlineprivate |
|
protectedinherited |
Adds a lemmas which provoke a branching for the given variable at the given value, if this module returns Unknown and there exists a preceding SATModule.
Note that the given value is rounded down and up, if the given variable is integer-valued.
_polynomial | The variable to branch for. |
_integral | A flag being true, if all variables in the polynomial to branch for are integral. |
_value | The value to branch at. |
_premise | The sub-formulas of the received formula from which the branch is followed. Note, that a premise is not necessary, as every branch is a valid formula. But a premise can prevent from branching unnecessarily. |
_leftCaseWeak | true, if a branching in the form of (or (<= p b) (> p b)) is desired. false, if a branching in the form of (or (< p b) (>= p b)) is desired. |
_preferLeftCase | true, if the left case (polynomial less(or equal) 0 shall be chosen first. false, otherwise. |
_useReceivedFormulaAsPremise | true, if the whole received formula should be used as premise |
Definition at line 478 of file Module.cpp.
|
inlineprivate |
[Minisat related code]
Definition at line 1102 of file SATModule.h.
|
private |
Revert the variables assignment until a given level (keeping all assignments at 'level')
level | The level to backtrack to |
|
private |
|
private |
Revert to the state at given level (keeping all assignments at 'level' but not beyond).
level | The level to backtrack to. |
|
virtualinherited |
Checks the received formula for consistency.
Note, that this is an implementation of the satisfiability check of the conjunction of the so far received formulas, which does actually nothing but passing the problem to its backends. This implementation is only used internally and must be overwritten by any derived module.
_final | true, if this satisfiability check will be the last one (for a global sat-check), if its result is SAT |
_full | false, if this module should avoid too expensive procedures and rather return unknown instead. |
_objective | if not set to NO_VARIABLE, the module should find an assignment minimizing this objective variable; otherwise any assignment is good. |
Reimplemented in smtrat::PModule.
Definition at line 86 of file Module.cpp.
|
inlineprivate |
|
virtual |
Checks the received formula for consistency.
Reimplemented from smtrat::Module.
|
private |
Checks the received formula for consistency.
|
inlineprivate |
[Minisat related code]
gf | [Minisat related code] |
Definition at line 1134 of file SATModule.h.
|
inlineprivate |
[Minisat related code]
Definition at line 1143 of file SATModule.h.
|
inherited |
Checks the given infeasible subset for minimality by storing all subsets of it, which have a smaller size which differs from the size of the infeasible subset not more than the given threshold.
_infsubset | The infeasible subset to check for minimality. |
_filename | The name of the file to store the infeasible subsets in order to be able to check their infeasibility. |
_maxSizeDifference | The maximal difference between the sizes of the subsets compared to the size of the infeasible subset. |
Definition at line 1018 of file Module.cpp.
|
protectedinherited |
Definition at line 588 of file Module.cpp.
|
inlineprivate |
Increase a clause with the current 'bump' value.
c | [Minisat related code] |
Definition at line 1492 of file SATModule.h.
|
inlineprivate |
Decay all clauses with the specified factor.
Implemented by increasing the 'bump' value instead.
Definition at line 1483 of file SATModule.h.
|
inlineprotectedinherited |
void smtrat::SATModule< Settings >::cleanUpAfterOptimizing | ( | const std::vector< Minisat::CRef > & | _excludedAssignments | ) |
|
inlineprivate |
Clear interrupt indicator flag.
Definition at line 1118 of file SATModule.h.
|
private |
|
inlineinherited |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
protectedinherited |
|
inherited |
|
inherited |
Collects the formulas in the given formula, which are part of the received formula.
If the given formula directly occurs in the received formula, it is inserted into the given set. Otherwise, the given formula must be of type AND and all its sub-formulas part of the received formula. Hence, they will be added to the given set.
_formula | The formula from which to collect the formulas being sub-formulas of the received formula (origins). |
_origins | The set in which to store the origins. |
Definition at line 960 of file Module.cpp.
void smtrat::SATModule< Settings >::collectStats | ( | ) |
Collects the taken statistics.
|
inherited |
Definition at line 928 of file Module.cpp.
|
private |
|
inlineinherited |
|
private |
|
private |
Creates or simply returns the literal belonging to the formula being the first argument.
_formula | The formula to get the literal for. |
_origin | The origin of the formula to get the literal for. |
_decisionRelevant | true, if the variable of the literal needs to be involved in the decision process of the SAT solving. |
|
inlinevirtualinherited |
Reimplemented in smtrat::LRAModule< Settings >, smtrat::LRAModule< smtrat::LRASettings1 >, and smtrat::LRAModule< smtrat::LRASettingsICP >.
|
inherited |
Definition at line 296 of file Module.cpp.
|
inlineprivate |
Definition at line 1582 of file SATModule.h.
|
private |
[Minisat related code]
|
inlineprivate |
|
inherited |
The inverse of informing about a constraint.
All data structures which were kept regarding this constraint are going to be removed. Note, that this makes only sense if it is not likely enough that a formula with this constraint must be solved again.
_constraint | The constraint to remove from internal data structures. |
Definition at line 124 of file Module.cpp.
|
inlineprotectedvirtualinherited |
The inverse of informing about a constraint.
All data structures which were kept regarding this constraint are going to be removed. Note, that this makes only sense if it is not likely enough that a formula with this constraint must be solved again.
_constraint | The constraint to remove from internal data structures. |
Definition at line 695 of file Module.h.
|
private |
|
protectedinherited |
origins | A vector of sets of origins. |
Definition at line 403 of file Module.cpp.
|
inlinestaticprivate |
seed | [Minisat related code] |
Definition at line 1667 of file SATModule.h.
|
inlineprivate |
Test if fact 'p' contradicts current state, enqueue otherwise.
NOTE: enqueue does not set the ok flag! (only public methods do)
Definition at line 1254 of file SATModule.h.
|
protectedvirtualinherited |
Removes everything related to the sub-formula to remove from the passed formula in the backends of this module.
Afterwards the sub-formula is removed from the passed formula.
_subformula | The sub-formula to remove from the passed formula. |
_ignoreOrigins | True, if the sub-formula shall be removed regardless of its origins (should only be applied with expertise). |
Reimplemented in smtrat::ICPModule< Settings >, smtrat::ICPModule< smtrat::ICPSettings1 >, and smtrat::ICPModule< smtrat::ICPSettings4 >.
Definition at line 807 of file Module.cpp.
|
inherited |
Excludes all variables from the current model, which do not occur in the received formula.
Definition at line 884 of file Module.cpp.
|
private |
|
protectedinherited |
_origins |
Definition at line 691 of file Module.cpp.
|
inlineinherited |
|
inlineinherited |
Sets the solver state to the given answer value.
This method also fires the flag given by the antecessor module of this module to true, if the given answer value is not Unknown.
_answer | The found answer. |
Definition at line 856 of file Module.cpp.
|
inlinestaticinherited |
|
private |
|
private |
|
inlineprotectedinherited |
|
protectedinherited |
Stores all models of a backend in the list of all models of this module.
Definition at line 669 of file Module.cpp.
|
protectedinherited |
|
inlineprivate |
Definition at line 1526 of file SATModule.h.
|
protectedinherited |
Copies the infeasible subsets of the passed formula.
Definition at line 596 of file Module.cpp.
|
protectedinherited |
Get the infeasible subsets the given backend provides.
Note, that an infeasible subset in a backend contains sub formulas of the passed formula and an infeasible subset of this module contains sub formulas of the received formula. In this method the LATTER is returned.
_backend | The backend from which to obtain the infeasible subsets. |
Definition at line 709 of file Module.cpp.
|
protectedinherited |
Gets all InformationRelevantFormulas.
Definition at line 1074 of file Module.cpp.
|
private |
|
virtualinherited |
Partition the variables from the current model into equivalence classes according to their assigned value.
The result is a set of equivalence classes of variables where all variables within one class are assigned the same value. Note that the number of classes may not be minimal, i.e. two classes may actually be equivalent.
Definition at line 308 of file Module.cpp.
|
inlineprotectedinherited |
|
inlineprotectedinherited |
Gets the origins of the passed formula at the given position.
_formula | The position of a formula in the passed formulas. |
Definition at line 808 of file Module.h.
|
virtualinherited |
Reimplemented in smtrat::PModule.
Definition at line 945 of file Module.cpp.
|
private |
Handles conflict.
conf | conflict clause |
|
inlineprivate |
|
inlineinherited |
|
inherited |
Definition at line 1000 of file Module.cpp.
|
inlineinherited |
|
inlineprivate |
|
inlineinherited |
|
inherited |
Informs the module about the given constraint.
It should be tried to inform this module about any constraint it could receive eventually before assertSubformula is called (preferably for the first time, but at least before adding a formula containing that constraint).
_constraint | The constraint to inform about. |
Definition at line 117 of file Module.cpp.
|
inlineprotectedinherited |
|
inlineprotectedvirtualinherited |
Informs the module about the given constraint.
It should be tried to inform this module about any constraint it could receive eventually before assertSubformula is called (preferably for the first time, but at least before adding a formula containing that constraint).
_constraint | The constraint to inform about. |
Definition at line 684 of file Module.h.
|
inlineinherited |
|
virtualinherited |
Informs all backends about the so far encountered constraints, which have not yet been communicated.
This method must not be called twice and only before the first runBackends call.
Reimplemented in smtrat::PBPPModule< Settings >, smtrat::PBGaussModule< Settings >, smtrat::NRAILModule< Settings >, smtrat::NewCoveringModule< Settings >, smtrat::NewCADModule< Settings >, smtrat::LRAModule< Settings >, smtrat::LRAModule< smtrat::LRASettings1 >, smtrat::LRAModule< smtrat::LRASettingsICP >, smtrat::IntBlastModule< Settings >, smtrat::FPPModule< Settings >, smtrat::CurryModule< Settings >, and smtrat::BVModule< Settings >.
Definition at line 234 of file Module.cpp.
|
inlineprivate |
Insert a variable in the decision order priority queue.
x | [Minisat related code] |
Definition at line 1161 of file SATModule.h.
|
inlineprivate |
Trigger a (potentially asynchronous) interruption of the solver.
Definition at line 1110 of file SATModule.h.
|
inlinestaticprivate |
Definition at line 1680 of file SATModule.h.
|
inlineinherited |
|
protectedinherited |
Checks if current lemma level is greater or equal to given level.
level | Level to check. |
Definition at line 1079 of file Module.cpp.
|
inlineinherited |
|
private |
Adds the clauses representing all conflicts generated by all backends.
|
inlineinherited |
|
private |
_clause | The clause to get the highest decision level in which assigned one of its literals has been assigned. |
|
inlineprivate |
x | The variable for which we to get the level in which it has been assigned to a value. |
Definition at line 1611 of file SATModule.h.
|
private |
|
inlineprivate |
c | [Minisat related code] |
Definition at line 1534 of file SATModule.h.
|
staticprivate |
Finite subsequences of the Luby-sequence:
0: 1 1: 1 1 2 2: 1 1 2 1 1 2 4 3: 1 1 2 1 1 2 4 1 1 2 1 1 2 4 8 ...
y | |
x |
|
staticprivate |
|
inlineprivate |
Definition at line 1412 of file SATModule.h.
|
protectedinherited |
Merges the two vectors of sets into the first one.
({a,b},{a,c}) and ({b,d},{b}) -> ({a,b,d},{a,b},{a,b,c,d},{a,b,c})
_vecSetA | A vector of sets of constraints. |
_vecSetB | A vector of sets of constraints. |
Definition at line 377 of file Module.cpp.
|
inlineprivate |
|
inlineinherited |
|
staticprotectedinherited |
Checks whether there is no variable assigned by both models.
_modelA | The first model to check for. |
_modelB | The second model to check for. |
Definition at line 611 of file Module.cpp.
|
inlinevirtualinherited |
Reimplemented in smtrat::VSModule< Settings >, smtrat::STropModule< Settings >, smtrat::SplitSOSModule< Settings >, smtrat::PBPPModule< Settings >, smtrat::PBGaussModule< Settings >, smtrat::NRAILModule< Settings >, smtrat::NewCADModule< Settings >, smtrat::LVEModule< Settings >, smtrat::LRAModule< Settings >, smtrat::LRAModule< smtrat::LRASettings1 >, smtrat::LRAModule< smtrat::LRASettingsICP >, smtrat::IntEqModule< Settings >, smtrat::IntBlastModule< Settings >, smtrat::IncWidthModule< Settings >, smtrat::ICPModule< Settings >, smtrat::ICPModule< smtrat::ICPSettings1 >, smtrat::ICPModule< smtrat::ICPSettings4 >, smtrat::GBModule< Settings >, smtrat::CurryModule< Settings >, smtrat::CubeLIAModule< Settings >, smtrat::CSplitModule< Settings >, smtrat::BVModule< Settings >, and smtrat::BEModule< Settings >.
Definition at line 615 of file Module.h.
|
inlineprivate |
Definition at line 1042 of file SATModule.h.
|
inlineprivate |
Definition at line 1050 of file SATModule.h.
|
inlineprivate |
Begins a new decision level.
Definition at line 1213 of file SATModule.h.
|
private |
Creates a new SAT variable in the solver.
If 'decision' is cleared, variable will not be used as a decision variable (NOTE! This has effects on the meaning of a SATISFIABLE result).
polarity | A flag, which is true, if the variable preferably is assigned to false. |
dvar | A flag, which is true, if the variable to create needs to considered in the solving. |
_activity | The initial activity of the variable to create. |
_tseitinShadowed | A flag, which is true, if the variable to create is a sub-formula of a formula represented by a Tseitin variable. |
|
inlineprivate |
Definition at line 1074 of file SATModule.h.
|
inlineprivate |
Definition at line 1058 of file SATModule.h.
|
inlineprivate |
Definition at line 1066 of file SATModule.h.
|
inlineinherited |
|
inlineprivate |
Definition at line 887 of file SATModule.h.
|
protectedinherited |
|
inlineprotectedinherited |
|
private |
|
inlineprotectedinherited |
|
private |
|
inlineinherited |
|
inlineinherited |
|
inherited |
Prints everything relevant of the solver.
_initiation | The line initiation. |
Definition at line 1085 of file Module.cpp.
void smtrat::SATModule< Settings >::print | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints everything.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
|
inherited |
Prints all assignments of this module satisfying its received formula if it satisfiable and this module could find an assignment.
_out | The stream to print the assignment on. |
Definition at line 1161 of file Module.cpp.
void smtrat::SATModule< Settings >::printBooleanConstraintMap | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints the literal to constraint map.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
void smtrat::SATModule< Settings >::printBooleanVarMap | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints map of the Boolean within the SAT solver to the given Booleans.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
void smtrat::SATModule< Settings >::printClause | ( | const Minisat::vec< Minisat::Lit > & | , |
bool | _withAssignment = false , |
||
std::ostream & | _out = std::cout , |
||
const std::string & | _init = "" |
||
) | const |
Prints the clause resulting from the given vector of literals.
_clause | The reference of the clause. |
_withAssignment | A flag indicating if true, that the assignments should be printed too. |
_out | The output stream where the answer should be printed. |
_init | The prefix of each printed line. |
void smtrat::SATModule< Settings >::printClause | ( | Minisat::CRef | _clause, |
bool | _withAssignment = false , |
||
std::ostream & | _out = std::cout , |
||
const std::string & | _init = "" |
||
) | const |
Prints the clause at the given reference.
_clause | The reference of the clause. |
_withAssignment | A flag indicating if true, that the assignments should be printed too. |
_out | The output stream where the answer should be printed. |
_init | The prefix of each printed line. |
void smtrat::SATModule< Settings >::printClauseInformation | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints the clause information.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
void smtrat::SATModule< Settings >::printClauses | ( | const Minisat::vec< Minisat::CRef > & | _clauses, |
const std::string | _name, | ||
std::ostream & | _out = std::cout , |
||
const std::string & | _init = "" , |
||
int | = 0 , |
||
bool | _withAssignment = false , |
||
bool | _onlyNotSatisfied = false |
||
) | const |
Prints all given clauses.
_clauses | The clauses to print. |
_name | The name of the clauses to print. (e.g. learnts, clauses, ..) |
_out | The output stream where the answer should be printed. |
_init | The prefix of each printed line. |
_from | The position of the first clause to print within the given vector of clauses. |
_withAssignment | A flag indicating if true, that the assignments should be printed too. |
void smtrat::SATModule< Settings >::printConstraintLiteralMap | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints the constraints to literal map.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
void smtrat::SATModule< Settings >::printCurrentAssignment | ( | std::ostream & | = std::cout , |
const std::string & | = "" |
||
) | const |
Prints the current assignment of the SAT solver.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
void smtrat::SATModule< Settings >::printDecisions | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints the decisions the SAT solver has made.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
void smtrat::SATModule< Settings >::printFormulaCNFInfosMap | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints the formulas to clauses map.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
|
inherited |
Prints the infeasible subsets.
_initiation | The line initiation. |
Definition at line 1136 of file Module.cpp.
void smtrat::SATModule< Settings >::printLiteralsActiveOccurrences | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints the literals' active occurrences in all clauses.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
|
inherited |
Prints the assignment of this module satisfying its received formula if it satisfiable and this module could find an assignment.
_out | The stream to print the assignment on. |
Definition at line 1151 of file Module.cpp.
|
inherited |
Prints the vector of passed formula.
_initiation | The line initiation. |
Definition at line 1118 of file Module.cpp.
void smtrat::SATModule< Settings >::printPropagatedLemmas | ( | std::ostream & | _out = std::cout , |
const std::string & | _init = "" |
||
) | const |
Prints the propagated lemmas for each variables which influence its value.
_out | The output stream where the answer should be printed. |
_init | The line initiation. |
|
inherited |
Prints the vector of the received formula.
_initiation | The line initiation. |
Definition at line 1105 of file Module.cpp.
|
private |
|
protectedinherited |
Checks whether given the current branching value and branching variable/polynomial it is (highly) probable that this branching is part of an infinite loop of branchings.
_branchingPolynomial | The polynomial to branch at (in most branching strategies this is just a variable). |
_branchingValue | The value to branch at. |
Definition at line 426 of file Module.cpp.
|
private |
Adds clauses representing the lemmas which should be added to this SATModule.
This may provoke backtracking.
|
private |
|
private |
propagate : [void] -> [Clause*]
Description: Propagates all enqueued facts. If a conflict arises, the conflicting clause is returned, otherwise CRef_Undef.
Post-conditions:
|
private |
Propagate and check the consistency of the constraints, whose abstraction literals have been assigned to true.
_madeTheoryCall | A flag which is set to true, if at least one theory call has been made within this method. |
|
private |
|
private |
x | The variable to get the reason for it's assignment. |
|
private |
[Minisat related code]
|
inlineinherited |
|
inlineprotectedinherited |
|
inlineinherited |
|
private |
reduceDB : () -> [void]
Description: Remove half of the learnt clauses, minus the clauses locked by the current assignment. Locked clauses are clauses that are reason to some assignment. Binary clauses are never removed.
|
private |
|
virtualinherited |
Removes everything related to the given sub-formula of the received formula.
However, it is desired not to lose track of search spaces where no satisfying assignment can be found for the remaining sub-formulas.
_subformula | The sub formula of the received formula to remove. |
Reimplemented in smtrat::PModule.
Definition at line 159 of file Module.cpp.
|
private |
Detach and free a clause.
cr | [Minisat related code] |
|
inlineprotectedvirtualinherited |
Removes everything related to the given sub-formula of the received formula.
However, it is desired not to lose track of search spaces where no satisfying assignment can be found for the remaining sub-formulas.
formula | The sub formula of the received formula to remove. |
Definition at line 729 of file Module.h.
void smtrat::SATModule< Settings >::removeCore | ( | ModuleInput::const_iterator | ) |
Removes everything related to the given sub-formula of the received formula.
_subformula | The sub formula of the received formula to remove. |
|
private |
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
private |
Removes all satisfied clauses from the given vector of clauses, which should only be performed in decision level 0.
cs | The vector of clauses wherein to remove all satisfied clauses. |
|
private |
void smtrat::SATModule< Settings >::removeUpperBoundOnMinimal | ( | ) |
|
private |
|
inlineinherited |
|
inlineinherited |
|
inlineprotectedvirtualinherited |
Reimplemented in smtrat::PModule.
Definition at line 1012 of file Module.h.
|
protectedvirtualinherited |
Runs the backend solvers on the passed formula.
_final | true, if this satisfiability check will be the last one (for a global sat-check), if its result is SAT |
_full | false, if this module should avoid too expensive procedures and rather return unknown instead. |
_objective | if not set to NO_VARIABLE, the module should find an assignment minimizing this objective variable; otherwise any assignment is good. |
Reimplemented in smtrat::PModule.
Definition at line 727 of file Module.cpp.
|
private |
c | [Minisat related code] |
|
private |
search : (nof_conflicts : int) (params : const SearchParams&) -> [lbool]
Description: Search for a model the specified number of conflicts. NOTE! Use negative value for 'nof_conflicts' indicate infinity.
Output: 'l_True' if a partial assignment that is consistent with respect to the clause set is found. If all variables are decision variables, this means that the clause set is satisfiable. 'l_False' if the clause set is unsatisfiable. 'l_Undef' if the bound on number of conflicts is reached.
nof_conflicts | The number of conflicts after which a restart is forced. |
|
inlineprivate |
[Minisat related code]
x | [Minisat related code] |
Definition at line 1085 of file SATModule.h.
|
inlineprivate |
Declare if a variable should be eligible for selection in the decision heuristic.
v | The variable to change the eligibility for selection in the decision heuristic. |
b | true, if the variable should be eligible for selection in the decision heuristic. |
Definition at line 909 of file SATModule.h.
|
inlineinherited |
|
inlineprivate |
Declare which polarity the decision heuristic should use for a variable.
Requires mode 'polarity_user'.
v | The variable to set the polarity for. |
b | true, if the variables should be preferably assigned to false. |
Definition at line 899 of file SATModule.h.
|
inlineprivate |
[Minisat related code]
x | [Minisat related code] |
Definition at line 1094 of file SATModule.h.
|
inlineinherited |
|
private |
Removes already satisfied clauses and performs simplifications on all clauses.
|
inlineinherited |
Definition at line 388 of file Module.h.
|
protectedinherited |
Adds the following lemmas for the given constraint p!=0.
(p!=0 <-> (p<0 or p>0))
and not(p<0 and p>0)
_unequalConstraint | A constraint having the relation symbol !=. |
Definition at line 565 of file Module.cpp.
|
private |
|
inlineprivate |
Definition at line 1703 of file SATModule.h.
|
inlineprivate |
|
private |
|
inlineprivate |
|
inlineprivate |
Definition at line 936 of file SATModule.h.
|
inlineinherited |
|
inlineprivate |
Definition at line 1631 of file SATModule.h.
|
private |
Enqueue a literal.
Assumes value of literal is undefined.
p | The literal to enqueue. (The variable in the literal is set to true, if the literal is positive, and to false, if the literal is negative).s |
from | A reference to the clause, which implied this assignment. |
|
virtual |
Updates all satisfying models, if the solver has detected the consistency of the received formula, beforehand.
Reimplemented from smtrat::Module.
|
private |
void smtrat::SATModule< Settings >::updateInfeasibleSubset | ( | ) |
Updates the infeasible subset found by the SATModule, if the received formula is unsatisfiable.
|
inherited |
Stores all lemmas of any backend of this module in its own lemma vector.
Definition at line 919 of file Module.cpp.
|
virtual |
Updates the model, if the solver has detected the consistency of the received formula, beforehand.
Reimplemented from smtrat::Module.
|
private |
Updates the model, if the solver has detected the consistency of the received formula, beforehand.
model | The model to update with the current assignment |
only_relevant_variables | If true, only variables in mRelevantVariables are part of the model |
|
inlineinherited |
|
inlineprivate |
p | The literal to get its value for. |
Definition at line 1031 of file SATModule.h.
|
inlineprivate |
x | The variable to get its value for. |
Definition at line 928 of file SATModule.h.
|
inlineprivate |
Increase a variable with the current 'bump' value.
v | [Minisat related code] |
Definition at line 1475 of file SATModule.h.
|
inlineprivate |
Increase a variable with the current 'bump' value.
Definition at line 1436 of file SATModule.h.
|
inlineprivate |
Decay all variables with the specified factor.
Implemented by increasing the 'bump' value instead.
Definition at line 1426 of file SATModule.h.
|
inlineprivate |
Definition at line 1655 of file SATModule.h.
|
friend |
Definition at line 68 of file SATModule.h.
|
friend |
Definition at line 69 of file SATModule.h.
|
private |
A heuristic measurement of the activity of a variable.
Definition at line 471 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 513 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 509 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 511 of file SATModule.h.
|
private |
The current assignments.
Definition at line 477 of file SATModule.h.
|
private |
Current set of assumptions provided to solve by the user.
Definition at line 495 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 527 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 503 of file SATModule.h.
|
private |
Controls conflict clause minimization (0=none, 1=basic, 2=deep).
Definition at line 429 of file SATModule.h.
|
private |
Amount to bump next clause with.
Definition at line 469 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 421 of file SATModule.h.
|
private |
List of problem clauses.
Definition at line 461 of file SATModule.h.
|
private |
Definition at line 455 of file SATModule.h.
|
private |
-1 means no budget.
Definition at line 523 of file SATModule.h.
|
private |
Definition at line 453 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 455 of file SATModule.h.
|
private |
Declares if a variable is eligible for selection in the decision heuristic.
Definition at line 481 of file SATModule.h.
|
private |
Definition at line 453 of file SATModule.h.
|
private |
The fraction of wasted memory allowed before a garbage collection is triggered.
Definition at line 437 of file SATModule.h.
|
private |
For temporary usage.
Definition at line 529 of file SATModule.h.
|
private |
List of learned clauses.
Definition at line 465 of file SATModule.h.
|
private |
Definition at line 455 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 519 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 517 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 449 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 447 of file SATModule.h.
|
private |
The initial limit for learned clauses is a factor of the original clauses.(default 1 / 3)
Definition at line 443 of file SATModule.h.
|
private |
The limit for learned clauses is multiplied with this factor each restart.(default 1.1)
Definition at line 445 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 427 of file SATModule.h.
|
private |
Is true, if we have to communicate all activities to the backends. (This might be the case after rescaling the activities.)
Definition at line 588 of file SATModule.h.
|
protectedinherited |
|
mutableprotectedinherited |
|
private |
Stores whether a given tseitin variable was already added to the assumptions.
Definition at line 605 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 515 of file SATModule.h.
|
private |
Definition at line 455 of file SATModule.h.
|
protectedinherited |
|
private |
Maps each Minisat variable to a pair of Abstractions, one contains the abstraction information of the literal being the variable and one contains the abstraction information of the literal being the variables negation.
Definition at line 563 of file SATModule.h.
|
private |
Maps the Boolean variables to their corresponding Minisat variable.
Definition at line 570 of file SATModule.h.
|
private |
Definition at line 543 of file SATModule.h.
|
private |
Stores all clauses in which the activities have been changed.
Definition at line 590 of file SATModule.h.
|
private |
Stores all Literals for which the abstraction information might be changed.
Definition at line 586 of file SATModule.h.
|
private |
A flag, which is set to true, if anything has been changed in the passed formula between now and the last consistency check.
Definition at line 535 of file SATModule.h.
|
private |
Definition at line 580 of file SATModule.h.
|
private |
A flag, which is set to true, if all satisfying assignments should be computed.
Definition at line 537 of file SATModule.h.
|
private |
Maps the constraints occurring in the SAT module to their abstractions.
We store a vector of literals for each constraints, which is only used in the optimization, which applies valid substitutions.
Definition at line 568 of file SATModule.h.
|
protectedinherited |
|
private |
The number of restarts made.
Definition at line 554 of file SATModule.h.
|
private |
Stores gained information about the current assignment's consistency.
If we know from the last consistency check, whether the current assignment is consistent, this member is SAT, if we know that it is inconsistent it is UNSAT, otherwise Unknown.
Definition at line 550 of file SATModule.h.
|
private |
Definition at line 614 of file SATModule.h.
|
private |
Definition at line 610 of file SATModule.h.
|
private |
Definition at line 612 of file SATModule.h.
|
private |
Definition at line 545 of file SATModule.h.
|
protectedinherited |
|
staticinherited |
|
protectedinherited |
|
protectedinherited |
|
private |
Definition at line 574 of file SATModule.h.
|
private |
Maps the clauses in the received formula to the corresponding Minisat clause and Minisat literal.
Definition at line 576 of file SATModule.h.
|
protectedinherited |
|
private |
Definition at line 539 of file SATModule.h.
|
protectedinherited |
|
private |
Definition at line 638 of file SATModule.h.
|
privateinherited |
|
protectedinherited |
|
protectedinherited |
|
staticinherited |
|
private |
If problem is unsatisfiable (possibly under assumptions), this vector represent the final conflict clause expressed in the assumptions.
Definition at line 578 of file SATModule.h.
|
private |
literals propagated by lemmas
Definition at line 628 of file SATModule.h.
|
private |
is the lemma removable
Definition at line 630 of file SATModule.h.
|
private |
Definition at line 616 of file SATModule.h.
|
private |
Definition at line 582 of file SATModule.h.
|
private |
Definition at line 624 of file SATModule.h.
|
private |
Definition at line 622 of file SATModule.h.
|
private |
Definition at line 637 of file SATModule.h.
|
private |
Maps the Minisat variables to their corresponding boolean variable.
Definition at line 572 of file SATModule.h.
|
mutableprotectedinherited |
|
mutableprotectedinherited |
|
private |
Stores whether a given tseitin variable was not yet added to the assumptions, but represents a top-level clause.
Tseitin variables for top-level clauses are only assumed lazily if they occur in another clause.
Definition at line 608 of file SATModule.h.
|
private |
Definition at line 597 of file SATModule.h.
|
private |
The number of full laze calls made.
Definition at line 552 of file SATModule.h.
|
private |
Definition at line 584 of file SATModule.h.
|
private |
The number of theory calls made.
Definition at line 556 of file SATModule.h.
|
staticinherited |
|
protectedinherited |
|
staticinherited |
|
private |
Definition at line 541 of file SATModule.h.
|
protectedinherited |
|
privateinherited |
|
privateinherited |
|
private |
Stores for each variable the corresponding formulas which control its value.
Definition at line 593 of file SATModule.h.
|
private |
Definition at line 626 of file SATModule.h.
|
private |
Definition at line 558 of file SATModule.h.
|
private |
Stores Minisat indexes of all relevant variables.
Definition at line 595 of file SATModule.h.
|
mutableprotectedinherited |
|
protectedinherited |
|
privateinherited |
|
private |
Definition at line 618 of file SATModule.h.
|
protectedinherited |
|
privateinherited |
|
private |
Variable representing true.
Definition at line 531 of file SATModule.h.
|
private |
Definition at line 601 of file SATModule.h.
|
private |
Stores whether a given variable is a tseitin variable.
Definition at line 603 of file SATModule.h.
|
private |
Definition at line 599 of file SATModule.h.
|
private |
Definition at line 670 of file SATModule.h.
|
private |
Definition at line 620 of file SATModule.h.
|
protectedinherited |
|
protectedinherited |
|
private |
If FALSE, the constraints are already unsatisfiable. No part of the solver state may be used!
Definition at line 459 of file SATModule.h.
|
private |
Controls the level of phase saving (0=none, 1=limited, 2=full).
Definition at line 431 of file SATModule.h.
|
private |
The preferred polarity of each variable.
Definition at line 479 of file SATModule.h.
|
private |
Set by 'search()'.
Definition at line 499 of file SATModule.h.
|
private |
-1 means no budget.
Definition at line 525 of file SATModule.h.
|
private |
Definition at line 453 of file SATModule.h.
|
private |
Head of queue (as index into the trail – no more explicit propagation queue in MiniSat).
Definition at line 489 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 425 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 423 of file SATModule.h.
|
private |
Indicates whether possibly inefficient linear scan for satisfied clauses should be performed in 'simplify'.
Definition at line 501 of file SATModule.h.
|
private |
The initial restart limit. (default 100)
Definition at line 439 of file SATModule.h.
|
private |
The factor with which the restart limit is multiplied in each restart. (default 1.5)
Definition at line 441 of file SATModule.h.
|
private |
Definition at line 453 of file SATModule.h.
|
private |
Initialize variable activities with a small random value.
Definition at line 435 of file SATModule.h.
|
private |
Use random polarities for branching heuristics.
Definition at line 433 of file SATModule.h.
|
private |
List of problem clauses.
Definition at line 463 of file SATModule.h.
|
private |
Each variable is prefixed by the method in which it is used, except 'seen' which is used in several places.
Definition at line 507 of file SATModule.h.
|
private |
Number of top-level assignments since last execution of 'simplify()'.
Definition at line 491 of file SATModule.h.
|
private |
Remaining number of propagations that must be made before next execution of 'simplify()'.
Definition at line 493 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 453 of file SATModule.h.
|
private |
Definition at line 453 of file SATModule.h.
|
private |
Definition at line 455 of file SATModule.h.
|
private |
Assignment stack; stores all assignments made in the order they were made.
Definition at line 483 of file SATModule.h.
|
private |
Separator indices for different decision levels in 'trail'.
Definition at line 485 of file SATModule.h.
|
private |
List of clauses which exclude a call resulted in unknown.
Definition at line 467 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 419 of file SATModule.h.
|
private |
Amount to bump next variable with.
Definition at line 473 of file SATModule.h.
|
private |
A priority queue of variables.
Definition at line 497 of file SATModule.h.
|
private |
Stores reason and level for each variable.
Definition at line 487 of file SATModule.h.
|
private |
[Minisat related code]
Definition at line 417 of file SATModule.h.
|
private |
'watches[lit]' is a list of constraints watching 'lit' (will go there if literal becomes true).
Definition at line 475 of file SATModule.h.