Introduction This chapter gives an overview on what is often called the algebraic theory of finite automata. It deals with languages, automata and semigroups, and has connections with model theory in logic, boolean circuits, symbolic dynamics and topology. Kleene's theorem [70] is usually considered as the foundation of this theory. It shows that the class of recognizable languages (i.e. recognized by finite automata), coincides with the class of rational languages, which are given by...