code: @Override
  	public void propagate(int evtmask) throws ContradictionException {
  		for (int i = 0; i < n; i++) {
  			for (int j : sets[i].getLB()) {
  				g.enforceArc(i, j, this);
  			}
  			ISet tmp = g.getPotSuccOrNeighOf(i);
  			for (int j : tmp) {
  				if (!sets[i].getUB().contains(j)) {
  					g.removeArc(i, j, this);
  				}
  			}
  		}
  		for (int i = 0; i < n; i++) {
  			sdm[i].unfreeze();
  		}
  	}
docs: ***********************************************************************************