A (finite non-deterministic) automaton is a quintuple M = (Q,Act,q0,F,T), where: - Q is the set of states - Act is the set of actions - q0 is the starting state - F is the set of final states - T is the transition relation (T ⊆ Q × Act × Q) Automata Behaviour: language equivalence (where L(M) is the set of all the sequences of input characters that bring the automaton M from its starting state to a final one) >[!note] Language equivalence >M1 and M2 are *language equivalent* if and only if L(M1)=L(M2) ![](../../Pasted%20image%2020250408091924.png) By considering the starting states as also final, they both generate the same language, i.e.: $$(20.(tea + 20.coffee))∗ = (20.tea + 20.20.coffee)∗$$ But, do they behave the same from the point of view of an external observer?? ![](../../Pasted%20image%2020250408092853.png) The essence of the difference is WHEN the decision to branch is taken - language equivalence gets rid of branching points - it is too coarse for our purposes!