toulbar2
Virtual Arc Consistency enforcing

The three phases of VAC are enforced in three different "Pass". Bool(P) is never built. Instead specific functions (getVACCost) booleanize the WCSP on the fly. The domain variables of Bool(P) are the original variable domains (saved and restored using trailing at each iteration) All the counter data-structures (k) are timestamped to avoid clearing them at each iteration.

Note
Simultaneously AC (and potentially DAC, EAC) are maintained by proper queuing.
See also
Soft Arc Consistency Revisited. Cooper et al. Artificial Intelligence. 2010.