code: private void checkAtMost(int i) throws ContradictionException {
  		ISet ker = target.getMandSet(g, i);
  		ISet env = target.getPotSet(g, i);
  		int size = ker.size();
  		if (size > degrees[i]) {
  			g.removeNode(i, this);
  		} else if (size == degrees[i] && env.size() > size) {
  			for (int other : env) {
  				if (!ker.contains(other)) {
  					target.remove(g, i, other, this);
  				}
  			}
  		}
  	}
docs: When a node has more than N successors/predecessors/neighbors then it must be removed,
  (which results in a failure)
  If it has N successors/predecessors/neighbors in the kernel then other incident edges
  should be removed