AC3
Set Q = List of all arcs (directed constraints)
While (Q not empty)
- remove the first arc y-x from Q
- revise the arc y-x
- I.e. if all values in Dx supported by element of Dy do nothing
- else remove any values from Dx not supported by y
- for all constraints involving x (including x-y)
- add the arc x-y to Q if not already a member
- If Dx empty, fail (domain wipe out)
If no Domain empty, succeed (established AC)