code: @Override
  	public void propagate(int evtmask) throws ContradictionException {
  		if (waitFirstSol && model.getSolver().getSolutionCount() == 0) {
  			return;//the UB does not allow to prune
  		}
  		// initialisation
  		mandatoryArcsList.clear();
  		for (int i = 0; i < n; i++) {
  			Dmin[i] = D[i].getLB();
  			Dmax[i] = D[i].getUB();
  		}
  		for (int i = 0; i < n; i++) {
  			ISet nei = gV.getMandNeighOf(i);
  			for (int j : nei) {
  				if (i < j) {
  					mandatoryArcsList.add(i * n + j);
  				}
  			}
  		}
  		updateCosts();
  		lagrangianRelaxation();
  	}
docs: ***********************************************************************************