it is the language of a regular expression (by the above definition) it is the language accepted by a nondeterministic finite automaton (NFA)[note 1][note 2] it is the language accepted by a deterministic finite automaton (DFA)[note 3][note 4] it can be generated by a regular grammar[note 5][note 6] it is the language accepted by an alternating finite automaton it is the language accepted by a two-way finite automaton it can be generated by a prefix grammar it can be accepted by a read-only Turing machine it can be defined in monadic second-order logic (Büchi–Elgot–Trakhtenbrot theorem)[5] it is recognized by some finite syntactic monoid M, meaning it is the preimage { w ∈ Σ* | f(w) ∈ S } of a subset S of a finite monoid M under a monoid homomorphism f: Σ* → M from the free monoid on its alphabet[note 7] the number of equivalence classes of its syntactic congruence is finite.[note 8][note 9] (This number equals the number of states of the minimal deterministic finite automaton accepting L.)