private boolean isGoodSolution(LightRabin lr) {
		if (!lr.initialState.equals(initialState)) {
			return false;
		}

		for (Integer s : lr.states) {
			if (!lr.liveStates.contains(s) && !isInSomeUSet(s)) {
				return false;
			}
		}

		HashSet<Integer> stss = (HashSet<Integer>) lr.states.clone();
		stss.add(lr.initialState);

		stateIter:
		for (Integer s : stss) {
			for (Transition t : transitionRelation) {
				if (t.node.equals(s) && lr.states.contains(t.leftChildren) && lr.states.contains(t.rightChildren)) {
					continue stateIter;
				}
			}
			return false;
		}
		return true;
	}