Machinist is a tool for building finite state machines.
A finite state machine maps simple, symbolic inputs to simple, symbolic outputs. In this context, symbolic means that nothing differentiates the values from each other apart from their identity.
The mapping from inputs to outputs also includes definitions for state transitions. The current state of the machine changes to a new value each time an input is mapped to an output (though the new value may be the same as the old value).