AIMA.Core.Search.CSP.AC3Strategy.revise C# (CSharp) Method

revise() private method

private revise ( Variable xi, Variable xj, Constraint constraint, CSP csp, DomainRestoreInfo info ) : bool
xi Variable
xj Variable
constraint Constraint
csp CSP
info DomainRestoreInfo
return bool
        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;
        }
    }