Directions on creating vicommand text from a transition table. Each line of the table is one transition. The first entry in the line is the current state for the transition, the second the current symbol, the third the new state, the fourth the new symbol, and the fifth the move. The name of a state can be any string which does not contain "<" or ">" or ":" or any symbol that could confuse vi. Using the transition table, a sequence of vi commands can be created. Here is an example of a transition table, the one for the machine tm.double: <0, ,1, ,R> <1,1,1,2,R> <1, ,2,1,L> <2,1,2,1,L> <2,2,3,1,R> <3,1,3,1,R> <3, ,2,1,L> <2, ,h, ,S> When the text is pasted, edit commands are executed that ensure the emulation of exactly one transition of the Turing machine, unless the emulation has either halted or crashed. Keywords "live" "run" "left" "c" and "h" are used. The keyword "live" is inserted just before the state. If the line contains no transition can be emulated. Therefore, the strings is changed back to . When a transition is emulated, "live:" changes to "run:" guaranteeing that no more than one transition can be emulated in one step. The first line is really three commands. Y and then p make a copy of the configuration onto the next line. We do not use these commands if we do not wish to save the sequence of configurations. The remaining command on the first line: :s/// :s/$/> / The next set of commands consist of one vi command for each transition. Each must be enabled by "live" and then destroys that enabler. If the transition move is either S or R, the keyword "run" is inserted before the state name. If the transition move is L, then the keyword "left" is inserted. :s/ / / :s/1/2/ :s/ / / :s/1/1/ :s/2/1/ :s/1/1/ :s/ /1/ :s/ / / The next set of commands are needed for L moves. The problem is that since the configuration is written with the state designator before (and not after) the current symbol, a left move must be emulated by exchanging the state designator with they symbol on the cell to the left. In doing so, the keyword "left" is replaced by "run" so that the exchange cannot occur more than once: :s/ / / :s/1/1/ :s/2/2/ If no transition was emulated, that means that the machine must crash. The enabler "live" will still be present, and is now replaces by the keyword "c" indicating that a crash has occured: :s/