/*
* Copyright © 2010 by Ondrej Skalicka. All Rights Reserved
*/
package cz.cvut.felk.cig.jcop.problem.sat;
import cz.cvut.felk.cig.jcop.problem.Configuration;
import java.util.ArrayList;
import java.util.List;
/**
* Formula of {@link SAT} problem.
* <p/>
* Formula consists of {@link Clause clauses}.
*
* @author Ondrej Skalicka
*/
public class Formula {
/**
* List of all clauses in this formula
*/
protected List<Clause> clauses;
/**
* Creates new empty (eg. without clauses) formula
*/
public Formula() {
this.clauses = new ArrayList<Clause>();
}
/**
* Adds clause to formula
*
* @param clause clause to be added
*/
public void addClause(Clause clause) {
this.clauses.add(clause);
}
/**
* Checks if formula evaluates to true.
* <p/>
* Formula evaluates to true iff all its clauses evaluates to true.
*
* @param configuration configuration for which to evaluate
* @return formula evaluations
*/
public boolean isTrue(Configuration configuration) {
for (Clause clause : this.clauses) {
if (!clause.isTrue(configuration)) return false;
}
return true;
}
/**
* Returns list of all clauses in current formula
*
* @return list of clauses in formula
*/
public List<Clause> getClauses() {
return clauses;
}
}