[an error occurred while processing this directive]
What is a model?
What do we need to model computation?
FSM ::= <Alphabet, States, InitialState, HaltingStates, TransitionRules>What does this FSM do?
Alphabet ::= { Symbol* } A set of symbols for the input.
States ::= { StateName* }
InitialState ::= StateName
Must be one of the states in States.
HaltingStates ::= { StateName* }
Must all be states in States.
TransitionRules ::= { TransitionRule* }
TransitionRule ::= < StateName, Symbol, StateName>
StateName X Symbol → StateName
One step:
TM ::= <Alphabet, Tape, TFSM>
Alphabet ::= { Symbol*}
A set of symbols for the tape.
Tape ::= < LeftSide, OneSquare, RightSide >
OneSquare ::= Symbol | #
LeftSide ::= [ Squares* ]
Everything to left of LeftSide is #.
RightSide ::= [ Squares* ]
Everything to right of RightSide is #.
Squares ::= OneSquare, Squares
Squares ::=
TFSM ::= <States, InitialState, HaltingStates, TransitionRules>
Like a FSM, except the transition rules write to
the tape and move the tape head.
States ::= { StateName* }
InitialState ::= StateName Must be one of the states in States.
HaltingStates ::= { StateName* } Must all be states in States.
TransitionRules ::= { TransitionRule* }
TransitionRule ::= < StateName, OneSquare,
StateName, OneSquare, Direction>
StateName X OneSquare → StateName X OneSquare X Direction
Since we can write down a complete description or any Turing Machine using this grammar, we can also assign every TM a unique number that identifies it.
A Turing Machine that can simulate any other Turing Machine on an input:
TMU (P, I) = the output of running TM-P on input I
There are many different ways of stating the Church-Turing thesis:
How do we prove a programming language is a universal programming language?
How do we prove a programming language is not a universal programming
language?
What must a programming language provide to be able to simulate a Turing
machine?
Is Charme a universal programming language?
The behaviour of the computer at any moment is determined by the symbols which he is observing. and his “state of mind” at that moment. We may suppose that there is a bound B to the number of symbols or squares which the computer can observe at one moment. If he wishes to observe more, he must use successive observations. We will also suppose that the number of states of mind which need be taken into account is finite. The reasons for this are of the same character as those which restrict the number of symbols. If we admitted an infinity of states of mind, some of them will be “arbitrarily close” and will be confused. Again, the restriction is not one which seriously affects computation, since the use of more complicated states of mind can be avoided by writing more symbols on the tape. ...
We may now construct a machine to do the work of this computer. To each state of mind of the computer corresponds an “m-configuration” of the machine. The machine scans B squares corresponding to the B squares observed by the computer. In any move the machine can change a symbol on a scanned square or can change anyone of the scanned squares to another square distant not more than L squares from one of the other scanned squares. The move which is done, and the succeeding configuration, are determined by the scanned symbol and the m-configuration....
Alan Turing, On computable numbers, with an application to the Entscheidungsproblem, 1936. [an error occurred while processing this directive]