automata and FSM theory