private bool revise(Variable xi, Variable xj, Constraint constraint,
CSP csp, DomainRestoreInfo info)
{
bool revised = false;
Assignment assignment = new Assignment();
foreach (Object iValue in csp.getDomain(xi))
{
assignment.setAssignment(xi, iValue);
bool consistentExtensionFound = false;
foreach (Object jValue in csp.getDomain(xj))
{
assignment.setAssignment(xj, jValue);
if (constraint.isSatisfiedWith(assignment))
{
consistentExtensionFound = true;
break;
}
}
if (!consistentExtensionFound)
{
info.storeDomainFor(xi, csp.getDomain(xi));
csp.removeValueFromDomain(xi, iValue);
revised = true;
}
}
return revised;
}
}