public final class TernaryClausesDatabase extends AbstractClausesDatabase
It does not work with watched literals. All literals are watching and if any of them changes then clause is being checked for unit propagation.
Pros : no need to change watches. Cons : need to check the clause every time any literal changes.
TODO, check if this the efficient way of dealing with ternary clauses.
CLAUSE_RATE_AVERAGE, CLAUSE_RATE_I_WANT_THIS_CLAUSE, CLAUSE_RATE_LOW, CLAUSE_RATE_UNSUPPORTED, CLAUSE_RATE_WELL_SUPPORTED, core, databaseIndex, dbStore, MINIMUM_VAR_WATCH_SIZE, pool, trail, watchLists| Constructor and Description |
|---|
TernaryClausesDatabase() |
| Modifier and Type | Method and Description |
|---|---|
int |
addClause(int[] clause,
boolean isModel)
It adds a clause to the database.
|
void |
assertLiteral(int literal)
It informs the ClausesDatabase that this literal is set, so that it
can perform unit propagation.
|
void |
backjump(int level)
Do everything needed to return to the given level.
|
boolean |
canRemove(int clauseId)
It tells if the implementation of ClausesDatabase can remove clauses or not
|
int |
rateThisClause(int[] clause)
Indicates how much this database is optimized for this clause.
|
void |
removeClause(int clauseId)
It removes the clause which unique ID is @param clauseId.
|
MapClause |
resolutionWith(int clauseId,
MapClause clause)
It returns the clause obtained by resolution between clauseIndex and clause.
|
int |
size()
number of clauses in the database
|
void |
toCNF(BufferedWriter output)
It creates a CNF description of the clauses stored in this database.
|
addWatch, doesWatch, ensureWatch, getDatabaseIndex, indexToUniqueId, initialize, removeWatch, setDatabaseIndex, swap, toString, toString, uniqueIdToIndexpublic int addClause(int[] clause,
boolean isModel)
ClauseDatabaseInterfaceclause - the clause to addisModel - defined if the clause is model clausepublic void assertLiteral(int literal)
ClauseDatabaseInterfaceliteral - the literal that is setpublic void removeClause(int clauseId)
ClauseDatabaseInterfaceclauseId - clause idpublic boolean canRemove(int clauseId)
ClauseDatabaseInterfaceclauseId - the unique Id of the clausepublic MapClause resolutionWith(int clauseId, MapClause clause)
ClauseDatabaseInterfaceclauseId - the unique id of the clauseclause - an explanation clause that is modified by resolutionpublic void backjump(int level)
ClauseDatabaseInterfacelevel - the level to return to. Must be < solver.getCurrentLevel().public int rateThisClause(int[] clause)
AbstractClausesDatabaserateThisClause in class AbstractClausesDatabaseclause - a clause to ratepublic int size()
AbstractClausesDatabasesize in interface ClauseDatabaseInterfacesize in class AbstractClausesDatabasepublic void toCNF(BufferedWriter output) throws IOException
AbstractClausesDatabasetoCNF in interface ClauseDatabaseInterfacetoCNF in class AbstractClausesDatabaseoutput - it specifies the target to which the description will be written.IOException - execption from java.io packageCopyright © 2022. All rights reserved.