  A straightforward solution to the problem would be simply to gather all the constraints downstream from the cycle and pass these to the cycle solver. However, in general this will result in larger cycles than necessary. Another approach would be first to partition the constraint graph into cyclic and acyclic regions, based on its topology.  Next we would process all the required constraints in all regions (communicating variable values between regions as they become known), then all the constraints at the next strongest level, and so forth.  (This is the approach taken in the <a href="http://www.cs.washington.edu/research/projects/weird/www/ultraviolet-cp-95.html"> UltraViolet algorithm</a>; the approach could also be adapted for use with SkyBlue.)  <P>
