code: private void enfArc(int from, int to) throws ContradictionException {
  		if (from != to) {
  			ISet ker = g.getMandSuccOrNeighOf(to);
  			ISet env = g.getPotSuccOrNeighOf(to);
  			for (int i : env) {
  				if (i != to && i != from) {
  					if (ker.contains(i)) {
  						if (g.enforceArc(from, i, this)) {
  							arcEnforced(from, i);
  						}
  					} else if (!g.getPotSuccOrNeighOf(from).contains(i)) {
  						if (g.removeArc(to, i, this)) {
  							arcRemoved(to, i);
  						}
  					}
  				}
  			}
  			ker = g.getMandPredOrNeighOf(from);
  			env = g.getPotPredOrNeighOf(from);
  			for (int i : env) {
  				if (i != to && i != from) {
  					if (ker.contains(i)) {
  						if (g.enforceArc(i, to, this)) {
  							arcEnforced(i, to);
  						}
  					} else if (!g.getPotSuccOrNeighOf(i).contains(to)) {
  						if (g.removeArc(i, from, this)) {
  							arcRemoved(i, from);
  						}
  					}
  				}
  			}
  		}
  	}
docs: --- Arc enforcings