-record(automaton, { initial_state :: any(), transition :: fun((any(), any()) -> any()), accepting :: fun((any()) -> boolean()) }).