public Automaton minus(Automaton a) {
		if (isEmpty() || a == this)
			return Automaton.makeEmpty();
		if (a.isEmpty())
			return clone();
		if (a == this)
			return Automaton.makeEmpty();
		if (isSingleton()) {
			if (a.run(singleton))
				return makeEmpty();
			else
				return clone();
		}
		return intersection(a.complement());
	}