package aima.core.search.csp.inference;
import aima.core.search.csp.Assignment;
import aima.core.search.csp.CSP;
import aima.core.search.csp.Variable;
/**
* Defines a common interface for backtracking inference strategies.
*
* @author Ruediger Lunde
*/
public interface InferenceStrategy<VAR extends Variable, VAL> {
/**
* Inference method which is called before backtracking is started.
*/
InferenceLog apply(CSP<VAR, VAL> csp);
/**
* Inference method which is called after the assignment has (recursively) been extended by a value assignment
* for <code>var</code>.
*/
InferenceLog<VAR, VAL> apply(VAR var, Assignment<VAR, VAL> assignment, CSP<VAR, VAL> csp);
}