File | Line |
---|
org/sat4j/tools/encoding/Ladder.java | 79 |
org/sat4j/tools/encoding/Ladder.java | 164 |
for (int i = 1; i <= n - 2; i++) {
clause.push(-y[i]);
clause.push(y[i - 1]);
group.add(solver.addClause(clause));
clause.clear();
}
// Constraint \bigwedge_{i=2}{n-1} (\neg y_{i-1} \vee y_i \vee x_i)
for (int i = 2; i <= n - 1; i++) {
clause.push(-y[i - 2]);
clause.push(y[i - 1]);
clause.push(literals.get(i - 1));
group.add(solver.addClause(clause));
clause.clear();
}
// Constraint \bigwedge_{i=2}{n-1} (\neg x_i \vee y_{i-1)})
for (int i = 2; i <= n - 1; i++) {
clause.push(-literals.get(i - 1));
clause.push(y[i - 2]);
group.add(solver.addClause(clause));
clause.clear();
}
// Constraint \bigwedge_{i=2}{n-1} (\neg x_i \vee \neg y_i)
for (int i = 2; i <= n - 1; i++) {
clause.push(-literals.get(i - 1));
clause.push(-y[i - 1]);
group.add(solver.addClause(clause));
clause.clear();
}
// Constraint y_1 \vee x_1
clause.push(y[0]);
clause.push(literals.get(0));
group.add(solver.addClause(clause));
clause.clear();
// Constraint \neg y_1 \vee \neg x_1
clause.push(-y[0]);
clause.push(-literals.get(0));
group.add(solver.addClause(clause));
clause.clear();
// Constraint \neg y_{n-1} \vee x_n
clause.push(-y[n - 2]);
clause.push(literals.get(n - 1)); |
File | Line |
---|
org/sat4j/tools/xplain/InsertionStrategy.java | 92 |
org/sat4j/tools/xplain/QuickXplainStrategy.java | 88 |
results.push(-firstExplanation.get(0));
return results;
}
if (solver.isVerbose()) {
System.out.print(solver.getLogPrefix() + "initial unsat core ");
firstExplanation.sort();
for (IteratorInt it = firstExplanation.iterator(); it.hasNext();) {
System.out.print(constrs.get(-it.next()));
System.out.print(" ");
}
System.out.println();
}
for (int i = 0; i < firstExplanation.size();) {
if (assumps.contains(firstExplanation.get(i))) {
firstExplanation.delete(i);
} else {
i++;
}
}
Set<Integer> constraintsVariables = constrs.keySet();
IVecInt remainingVariables = new VecInt(constraintsVariables.size());
for (Integer v : constraintsVariables) {
remainingVariables.push(v);
}
int p;
for (IteratorInt it = firstExplanation.iterator(); it.hasNext();) {
p = it.next();
if (p < 0) {
p = -p;
}
remainingVariables.remove(p);
encodingAssumptions.push(p);
} |
File | Line |
---|
org/sat4j/tools/xplain/HighLevelXplain.java | 119 |
org/sat4j/tools/xplain/Xplain.java | 153 |
explanation.add(getConstrs().get(it.next()));
}
return explanation;
}
/**
* @since 2.1
*/
public void cancelExplanation() {
this.xplainStrategy.cancelExplanationComputation();
}
@Override
public int[] findModel() throws TimeoutException {
this.assump = VecInt.EMPTY;
return super.findModel();
}
@Override
public int[] findModel(IVecInt assumps) throws TimeoutException {
this.assump = assumps;
return super.findModel(assumps);
}
@Override
public boolean isSatisfiable() throws TimeoutException {
this.assump = VecInt.EMPTY;
return super.isSatisfiable();
}
@Override
public boolean isSatisfiable(boolean global) throws TimeoutException {
this.assump = VecInt.EMPTY;
return super.isSatisfiable(global);
}
@Override
public boolean isSatisfiable(IVecInt assumps) throws TimeoutException {
this.assump = assumps;
return super.isSatisfiable(assumps);
}
@Override
public boolean isSatisfiable(IVecInt assumps, boolean global)
throws TimeoutException {
this.assump = assumps;
return super.isSatisfiable(assumps, global);
}
@Override
public String toString(String prefix) {
System.out.println(prefix + "Explanation (MUS) enabled solver"); |
File | Line |
---|
org/sat4j/tools/xplain/DeletionStrategy.java | 48 |
org/sat4j/tools/xplain/QuickXplainStrategy.java | 66 |
public class QuickXplainStrategy implements MinimizationStrategy {
/**
*
*/
private static final long serialVersionUID = 1L;
private boolean computationCanceled;
public void cancelExplanationComputation() {
this.computationCanceled = true;
}
public IVecInt explain(ISolver solver, Map<Integer, ?> constrs,
IVecInt assumps) throws TimeoutException {
this.computationCanceled = false;
IVecInt encodingAssumptions = new VecInt(constrs.size()
+ assumps.size());
assumps.copyTo(encodingAssumptions);
IVecInt firstExplanation = solver.unsatExplanation();
IVecInt results = new VecInt(firstExplanation.size());
if (firstExplanation.size() == 1) {
results.push(-firstExplanation.get(0));
return results;
}
if (solver.isVerbose()) {
System.out.print(solver.getLogPrefix() + "initial unsat core ");
firstExplanation.sort();
for (IteratorInt it = firstExplanation.iterator(); it.hasNext();) {
System.out.print(constrs.get(-it.next()));
System.out.print(" ");
}
System.out.println(); |
File | Line |
---|
org/sat4j/minisat/constraints/MixedDataStructureDanielWL.java | 49 |
org/sat4j/minisat/constraints/MixedDataStructureSingleWL.java | 48 |
public class MixedDataStructureSingleWL extends AbstractDataStructureFactory {
private static final long serialVersionUID = 1L;
/*
* (non-Javadoc)
*
* @see
* org.sat4j.minisat.DataStructureFactory#createCardinalityConstraint(org
* .sat4j.datatype.VecInt, int)
*/
@Override
public Constr createCardinalityConstraint(IVecInt literals, int degree)
throws ContradictionException {
return AtLeast.atLeastNew(this.solver, getVocabulary(), literals,
degree);
}
@Override
public Constr createUnregisteredCardinalityConstraint(IVecInt literals,
int degree) {
return new AtLeast(getVocabulary(), literals, degree);
}
/*
* (non-Javadoc)
*
* @see
* org.sat4j.minisat.DataStructureFactory#createClause(org.sat4j.datatype
* .VecInt)
*/
public Constr createClause(IVecInt literals) throws ContradictionException {
IVecInt v = Clauses.sanityCheck(literals, getVocabulary(), this.solver);
if (v == null) {
// tautological clause
return null;
}
if (v.size() == 1) {
return new UnitClause(v.last());
}
if (v.size() == 2) {
return OriginalBinaryClause.brandNewClause(this.solver,
getVocabulary(), v);
}
return OriginalWLClause.brandNewClause(this.solver, getVocabulary(), v);
}
public Constr createUnregisteredClause(IVecInt literals) { |
File | Line |
---|
org/sat4j/minisat/constraints/MixedDataStructureDanielHT.java | 51 |
org/sat4j/minisat/constraints/MixedDataStructureDanielWL.java | 49 |
public class MixedDataStructureDanielWL extends AbstractDataStructureFactory {
private static final long serialVersionUID = 1L;
/*
* (non-Javadoc)
*
* @see
* org.sat4j.minisat.DataStructureFactory#createCardinalityConstraint(org
* .sat4j.datatype.VecInt, int)
*/
@Override
public Constr createCardinalityConstraint(IVecInt literals, int degree)
throws ContradictionException {
return AtLeast.atLeastNew(this.solver, getVocabulary(), literals,
degree);
}
@Override
public Constr createUnregisteredCardinalityConstraint(IVecInt literals,
int degree) {
return new AtLeast(getVocabulary(), literals, degree);
}
/*
* (non-Javadoc)
*
* @see
* org.sat4j.minisat.DataStructureFactory#createClause(org.sat4j.datatype
* .VecInt)
*/
public Constr createClause(IVecInt literals) throws ContradictionException {
IVecInt v = Clauses.sanityCheck(literals, getVocabulary(), this.solver);
if (v == null) {
// tautological clause
return null;
}
if (v.size() == 1) {
return new UnitClause(v.last());
}
if (v.size() == 2) {
return OriginalBinaryClause.brandNewClause(this.solver,
getVocabulary(), v);
}
return OriginalWLClause.brandNewClause(this.solver, getVocabulary(), v); |
File | Line |
---|
org/sat4j/minisat/constraints/ClausalDataStructureWL.java | 58 |
org/sat4j/minisat/constraints/MixedDataStructureSingleWL.java | 79 |
public Constr createClause(IVecInt literals) throws ContradictionException {
IVecInt v = Clauses.sanityCheck(literals, getVocabulary(), this.solver);
if (v == null) {
// tautological clause
return null;
}
if (v.size() == 1) {
return new UnitClause(v.last());
}
if (v.size() == 2) {
return OriginalBinaryClause.brandNewClause(this.solver,
getVocabulary(), v);
}
return OriginalWLClause.brandNewClause(this.solver, getVocabulary(), v);
}
public Constr createUnregisteredClause(IVecInt literals) {
return new LearntWLClause(literals, getVocabulary());
}
@Override
protected ILits createLits() {
return new Lits();
}
} |
File | Line |
---|
org/sat4j/tools/xplain/DeletionStrategy.java | 81 |
org/sat4j/tools/xplain/InsertionStrategy.java | 102 |
System.out.println();
}
for (int i = 0; i < firstExplanation.size();) {
if (assumps.contains(firstExplanation.get(i))) {
firstExplanation.delete(i);
} else {
i++;
}
}
Set<Integer> constraintsVariables = constrs.keySet();
IVecInt remainingVariables = new VecInt(constraintsVariables.size());
for (Integer v : constraintsVariables) {
remainingVariables.push(v);
}
int p;
for (IteratorInt it = firstExplanation.iterator(); it.hasNext();) {
p = it.next();
if (p < 0) {
p = -p;
}
remainingVariables.remove(p); |
File | Line |
---|
org/sat4j/reader/AAGReader.java | 60 |
org/sat4j/reader/AIGReader.java | 59 |
AIGReader(ISolver s) {
this.solver = new GateTranslator(s);
}
@Override
public String decode(int[] model) {
StringBuffer stb = new StringBuffer();
for (int i = 0; i < this.nbinputs; i++) {
stb.append(model[i] > 0 ? 1 : 0);
}
return stb.toString();
}
@Override
public void decode(int[] model, PrintWriter out) {
for (int i = 0; i < this.nbinputs; i++) {
out.print(model[i] > 0 ? 1 : 0);
}
} |
File | Line |
---|
org/sat4j/minisat/constraints/ClausalDataStructureWL.java | 58 |
org/sat4j/minisat/constraints/MixedDataStructureDanielWL.java | 80 |
public Constr createClause(IVecInt literals) throws ContradictionException {
IVecInt v = Clauses.sanityCheck(literals, getVocabulary(), this.solver);
if (v == null) {
// tautological clause
return null;
}
if (v.size() == 1) {
return new UnitClause(v.last());
}
if (v.size() == 2) {
return OriginalBinaryClause.brandNewClause(this.solver,
getVocabulary(), v);
}
return OriginalWLClause.brandNewClause(this.solver, getVocabulary(), v);
}
public Constr createUnregisteredClause(IVecInt literals) { |
File | Line |
---|
org/sat4j/minisat/constraints/cnf/BinaryClause.java | 85 |
org/sat4j/minisat/constraints/cnf/HTClause.java | 106 |
}
if (this.voc.isFalsified(this.tail)) {
outReason.push(neg(this.tail));
}
}
/*
* (non-Javadoc)
*
* @see Constr#remove(Solver)
*/
public void remove(UnitPropagationListener upl) {
this.voc.watches(neg(this.head)).remove(this);
this.voc.watches(neg(this.tail)).remove(this);
}
/*
* (non-Javadoc)
*
* @see Constr#simplify(Solver)
*/
public boolean simplify() {
if (this.voc.isSatisfied(this.head) || this.voc.isSatisfied(this.tail)) {
return true;
} |
File | Line |
---|
org/sat4j/tools/encoding/Binary.java | 184 |
org/sat4j/tools/encoding/Binomial.java | 96 |
}
return group;
}
@Override
public IConstr addExactlyOne(ISolver solver, IVecInt literals)
throws ContradictionException {
ConstrGroup group = new ConstrGroup();
group.add(addAtLeastOne(solver, literals));
group.add(addAtMostOne(solver, literals));
return group;
}
@Override
public IConstr addExactly(ISolver solver, IVecInt literals, int degree)
throws ContradictionException {
ConstrGroup group = new ConstrGroup();
group.add(addAtLeast(solver, literals, degree));
group.add(addAtMost(solver, literals, degree));
return group;
}
} |
File | Line |
---|
org/sat4j/minisat/constraints/cnf/BinaryClause.java | 120 |
org/sat4j/minisat/constraints/cnf/HTClause.java | 175 |
}
/*
* For learnt clauses only @author leberre
*/
public boolean locked() {
return this.voc.getReason(this.head) == this
|| this.voc.getReason(this.tail) == this;
}
/**
* @return the activity of the clause
*/
public double getActivity() {
return this.activity;
}
@Override
public String toString() {
StringBuffer stb = new StringBuffer();
stb.append(Lits.toString(this.head));
stb.append("["); //$NON-NLS-1$
stb.append(this.voc.valueToString(this.head));
stb.append("]"); //$NON-NLS-1$
stb.append(" "); //$NON-NLS-1$ |
File | Line |
---|
org/sat4j/tools/encoding/Commander.java | 150 |
org/sat4j/tools/encoding/Sequential.java | 126 |
return addAtMost(solver, literals, 1);
}
@Override
public IConstr addExactlyOne(ISolver solver, IVecInt literals)
throws ContradictionException {
ConstrGroup group = new ConstrGroup();
group.add(addAtLeastOne(solver, literals));
group.add(addAtMostOne(solver, literals));
return group;
}
@Override
public IConstr addExactly(ISolver solver, IVecInt literals, int degree)
throws ContradictionException {
ConstrGroup group = new ConstrGroup();
group.add(addAtLeast(solver, literals, degree));
group.add(addAtMost(solver, literals, degree));
return group;
}
} |
File | Line |
---|
org/sat4j/minisat/core/Solver.java | 2563 |
org/sat4j/minisat/core/Solver.java | 2595 |
- degree);
this.sharedConflict.register();
addConstr(this.sharedConflict);
// backtrack to the first decision level with a reason
// for falsifying that constraint
IVecInt reason = new VecInt();
this.sharedConflict.calcReasonOnTheFly(ILits.UNDEFINED, trail, reason);
Set<Integer> subset = fromLastDecisionLevel(reason);
while (!trail.isEmpty() && !subset.contains(trail.last())) {
undoOne();
if (!trailLim.isEmpty() && trailLim.last() == trail.size()) {
trailLim.pop();
}
}
return this.sharedConflict;
} |
File | Line |
---|
org/sat4j/minisat/core/Solver.java | 1584 |
org/sat4j/minisat/core/Solver.java | 1646 |
}
}
for (; i < Solver.this.learnts.size(); i++) {
Solver.this.learnts.set(j++, Solver.this.learnts.get(i));
}
if (Solver.this.verbose) {
Solver.this.out.log(getLogPrefix()
+ "cleaning " + (Solver.this.learnts.size() - j) //$NON-NLS-1$
+ " clauses out of " + Solver.this.learnts.size()); //$NON-NLS-1$
// out.flush();
}
Solver.this.learnts.shrinkTo(j);
}
public ConflictTimer getTimer() { |
File | Line |
---|
org/sat4j/tools/encoding/Binary.java | 187 |
org/sat4j/tools/encoding/Commander.java | 151 |
}
@Override
public IConstr addExactlyOne(ISolver solver, IVecInt literals)
throws ContradictionException {
ConstrGroup group = new ConstrGroup();
group.add(addAtLeastOne(solver, literals));
group.add(addAtMostOne(solver, literals));
return group;
}
@Override
public IConstr addExactly(ISolver solver, IVecInt literals, int degree)
throws ContradictionException {
ConstrGroup group = new ConstrGroup();
group.add(addAtLeast(solver, literals, degree));
group.add(addAtMost(solver, literals, degree));
return group;
}
} |
File | Line |
---|
org/sat4j/minisat/core/VoidTracing.java | 60 |
org/sat4j/tools/SearchListenerAdapter.java | 61 |
public void learn(IConstr c) {
}
public void learnUnit(int p) {
}
public void delete(int[] clause) {
}
public void conflictFound(IConstr confl, int dlevel, int trailLevel) {
}
public void conflictFound(int p) {
}
public void solutionFound(int[] model, RandomAccessModel lazyModel) {
}
public void beginLoop() {
}
public void start() {
}
public void end(Lbool result) {
}
public void restarting() {
}
public void backjump(int backjumpLevel) {
}
public void cleaning() { |