The algorithm uses a form of intelligent backtracking, the purpose of which is to avoid backtracking to choice points that cannot possibly cure a detected inconsistency. The algorithm is essentially identical to that developed in [[3]]. To support intelligent backtracking, the implementation maintains dependency information as a bit-mask per cell. This may lead to a loss of precision compared to maintaining dependency information per variable, but we have not experimented with the latter.