Algorithms for ω-Automata
Using this tool, you can apply several algorithms to a given ω-automaton. The ω-automaton can either be given in a symbolic representation as shown with the example below or in an explicit representation (see examples below). Allowed acceptance conditions are G,F,FG and GF.
The tool can convert symbolic to explicit representations and vice versa, can trim the given automaton, i.e., restrict it to states which are reachable and have infinite outgoing paths (reactive states). Clearly, the tool also draws the state transition diagram for both explicit and symbolic representations. In the generated figures, initial states are drawn with double lines and accepting states are given in a green color.
The next set of operations is the change of acceptance conditions from G to any other one and from F and FG to F,FG,GF (it is in general not possible to reduce GF to others). The tool can also determinize these automata (except for GF acceptance), and it also simply applies the subset and breakpoint construction (make sure that this makes sense for you since the generated automaton may not be equivalen to the given one).
The tool can also check the emptiness of the automaton and can compute a word with an accepting run in case the language of the automaton is not empty.
In addition to the associated Kripke structure of the automaton, the tool can also compute the transition monoid of the automaton and checks whether it is aperiodic. If so, the automaton can be described in temporal logic, otherwise, this is impossible.
Please note that the automaton is given in an explicit form, i.e., the automaton given above has two inputs a1 and 2 and two possible outputs b1 and b2 (it is not a boolean encoding). So, in any state the automaton may read either the input a1 or a2 and can then react by transitions with corresponding outputs and a target state. If a transition is taken, there must be one of the two outputs b1 or b2.
An explicit representation of the example automaton above is as follows:
inputs a,b,c,d;
init 0;
trans
(0,a,0); (0,a,2); (0,c,0);
(1,a,0); (1,a,1); (1,a,2); (1,a,3);
(1,b,0); (1,b,1); (1,b,2); (1,b,3);
(1,c,0); (1,c,1);
(2,a,0); (2,a,2);
(2,c,0); (2,c,2);
(3,a,0); (3,a,1); (3,a,2); (3,a,3);
(3,b,0); (3,b,1); (3,b,2); (3,b,3);
(3,c,0); (3,c,1); (3,c,2); (3,c,3);
(3,d,0); (3,d,1); (3,d,2); (3,d,3);
accept 2,3;
acpTy FG;