Finite automata theory and formal languages