add automaton.hpp