Church-Turing
Automata
Sketch
- The Church-Turing Thesis
- The 10th Hilbert Problem
The Church-Turing Thesis
The Thesis
The Church-Turing thesis concerns the concept of an effective or systematic or mechanical method, as used in logic, mathematics and computer science. “Effective” and its synonyms “systematic” and “mechanical” are terms of art in these disciplines: they do not carry their everyday meaning. A method, or procedure, \(M\), for achieving some desired result is called “effective” (or “systematic” or “mechanical”) just in case:
The Thesis
- \(M\) is set out in terms of a finite number of exact instructions (each instruction being expressed by means of a finite number of symbols);
- \(M\) will, if carried out without error, produce the desired result in a finite number of steps;
The Thesis
- \(M\) can (in practice or in principle) be carried out by a human being unaided by any machinery except paper and pencil;
- \(M\) demands no insight, intuition, or ingenuity, on the part of the human being carrying out the method.
Credit
Other Formulations
We shall use the expression “computable function” to mean a function calculable by a machine, and let “effectively calculable” refer to the intuitive idea without particular identification with any one of these definitions.
- Turing, 1938
Other Formulations
No computational procedure will be considered as an algorithm unless it can be represented as a Turing Machine
- Church, apocryphal
Other Formulations
It was stated … that “a function is effectively calculable if its values can be found by some purely mechanical process”. We may take this literally, understanding that by a purely mechanical process one which could be carried out by a machine. The development … leads to … an identification of computability with effective calculability.
- Turing, 1938
Other Formulations
Every effectively calculable function is a computable function
- Robin Gandy, 1980
The Lambda Calculus
Lambda Calculus
\[ \Lambda := \{ \lambda x.M \mid x \in V, M \in \Lambda \} \cup \{ x \mid x \in V \} \]
- \(\lambda x.x\) represents the identity function.
- Term \(x\) a variable in set of variables \(V\)
- Term \(\lambda x. M\) an abstraction (definition)
- Term \(M\space N\) an application (invocation/call)
- It took Church 6 years and Turing’s help to get this logically consistent.
The 10th Hilbert Problem
Hilbert problems
- \(\exists A : |\mathbb{N}| \lt |A| \lt |\mathbb{R}|\)
- Reduces to continuum hypothesis
- Consistency of Axioms of Mathematics
- Provably impossible to prove via Gödel’s incompleteness
- …
- Determine Solvability of a Diophantine equation
Diophantine Equation
- A polynomial. \[ \sum_{k=0}^n a_k x^k \]
- Does it have a solution. \[ \sum_{k=0}^n a_k x^k = 0 \]
Diophantine Equation
- For which all terms are integers \[ \forall k < n : a_k \in \mathbb{Z} : \sum_{k=0}^n a_k x^k = 0 : \]
Results
- 1900
- Problem proposed
- Not defined
- 1937
- Church-Turing Thesis
- 1970
- Matiyasevich proves undecidability
- Note: It is recognizable
- Left to the student.
Notation convenience
- Say we wish to express a polynomial
- We note the polynomial is equivalent to a sequence of values
- That is, an ordered collection
- We note that numerical values are expressible in finite symbols.
- For example, \(\{0, 1\}^n\)
We encode as strings
- Take \(O\) some object, like a number, TM state, or anything else.
- Could be a polynomial!
- Could be a Turing Machine!
- Denote \(\langle O \rangle\) the encoding of \(O\) into a string.
- Denote \(\langle O_1,O_2,\ldots,O_K \rangle\) a list of objects in a string
Understanding check
- Suppose two strings, \(x\) and \(y\)
- Is \(xy = \langle x,y \rangle\)
- Why or why not
Revist
Revist \(B\)
\[ B = \{a^kb^kc^k|k\in\mathbb{N}\} \]
- Check if \(w \in a^ib^jc^k\)
- Count each of
a
,b
,c
- Accept on equal counts.
Rules of thumb
- Ensure that any step is possible
- Ensure that any step is finite
- Ensure than any step halts
- Ensure you can implement any step in e.g. Python
Outcomes
- Three possible outcomes for \(M\) on \(w\)
- Accept \(w\) by halting in \(q_{acc}\)
- Reject \(w\) by halting in \(q_{rej}\)
- Reject \(w\) by looping
Recognize \(\oplus\) Decide
- Turing-recognizable
- \(\exists M : L(M) = \{w | M(w) \rightarrow q_{acc} \}\)
- Turing-decidable
- \(\exists M : L(M) = \{w | M(w) \rightarrow q_{acc} \land \forall w: M(w) \rightarrow \{q_{acc},q_{req}\}\}\)
Strings
- \(\langle x,y \rangle\) is the string of list
x,y
- \(\langle x\rangle, \langle y \rangle\) is the list of strings of
x
andy
Denotation
\(M =\) “On input \(w\)
- Algorithm first step
- Algorithm next step
Stretch Break
- Or work time on
Hilbert[10]
, if fast - Home