Synthesizing nonblocking distributed supervision based on automata abstraction