code: func minus(a1, a2 *Automaton) *Automaton {
  	if isEmpty(a1) || a1 == a2 {
  		return MakeEmpty()
  	}
  	if isEmpty(a2) {
  		return a1
  	}
  	return intersection(a1, complement(a2))
  }
docs: /*
  Returns a (deterministic) automaton that accepts the intersection of
  the language of a1 and the complement of the language of a2. As a
  side-effect, the automata may be determinized, if not already
  deterministic.
  
  Complexity: quadratic in number of states (if already deterministic).
  */