1363 *) |
1363 *) |
1364 |
1364 |
1365 section {* Conclusion *} |
1365 section {* Conclusion *} |
1366 |
1366 |
1367 text {* |
1367 text {* |
1368 We have formalised the main computability results from Chapters 3 to 8 in the |
1368 In previous works we were unable to formalise results about |
1369 textbook by Boolos et al \cite{Boolos87}. Following in the |
1369 computability because in a Isabelle/HOL we cannot represent the |
1370 footsteps of another paper \cite{Nipkow98} formalising the results |
1370 decidability of a predicate @{text P}, say, as the formula @{term "P |
1371 from a semantics textbook, we could have titled our paper ``Boolos et al are |
1371 \<or> \<not>P"}. For reasoning about computability we need to formalise a |
1372 (almost) Right''. We have not attempted to formalise everything |
1372 concrete model of computations. We could have followed Norrish |
1373 precisely as Boolos et al present it, but use definitions that make |
1373 \cite{Norrish11} using the $\lambda$-calculus as the starting point, |
1374 mechanised proofs manageable. For example our definition of the |
1374 but then we would have to reimplement his infrastructure for |
1375 halting state performing @{term Nop}-operations seems to be non-standard, |
1375 reducing $\lambda$-terms on the ML-level. We would still need to |
1376 but very much suited to a formalisation in a theorem prover where |
1376 connect his work to Turing machines for proofs that make use of them |
1377 the @{term steps}-function need to be total. We have found an |
1377 (for example the proof of Wang's tiling problem \cite{Robinson71}). |
1378 inconsistency in |
1378 |
1379 Bolos et al's usage of definitions of \ldots |
1379 We therefore have formalised Turing machines and the main |
1380 Our interest in Turing machines |
1380 computability results from Chapters 3 to 8 in the textbook by Boolos |
1381 arose from correctness proofs about algorithms where we were unable |
1381 et al \cite{Boolos87}. For this we did not need to implement |
1382 to formalise arguments about decidability but also undecidability |
1382 anything on the ML-level of Isabelle/HOL. While formalising |
1383 proofs in general (for example Wang's tiling problem \cite{Robinson71}). |
1383 \cite{Boolos87} have found an inconsistency in Bolos et al's usage |
|
1384 of definitions of what function a Turing machine calculates. In |
|
1385 Chapter 3 they use a definition such that the function is undefined |
|
1386 if the Turing machine loops \emph{or} halts with a non-standard |
|
1387 tape. Whereas in Chapter 8 about the universal Turing machine, the |
|
1388 Turing machines will \emph{not} halt unless the tape is in standard |
|
1389 form. Following in the footsteps of another paper \cite{Nipkow98} |
|
1390 formalising the results from a semantics textbook, we could |
|
1391 therefore have titled our paper ``Boolos et al are (almost) |
|
1392 Right''. We have not attempted to formalise everything precisely as |
|
1393 Boolos et al present it, but use definitions that make our |
|
1394 mechanised proofs manageable. For example our definition of the |
|
1395 halting state performing @{term Nop}-operations seems to be |
|
1396 non-standard, but very much suited to a formalisation in a theorem |
|
1397 prover where the @{term steps}-function need to be total. |
1384 |
1398 |
1385 The most closely related work is by Norrish \cite{Norrish11}, and |
1399 The most closely related work is by Norrish \cite{Norrish11}, and |
1386 Asperti and Ricciotti \cite{AspertiRicciotti12}. Norrish formalises |
1400 Asperti and Ricciotti \cite{AspertiRicciotti12}. Norrish formalises |
1387 computability theory using $\lambda$-terms. For this he introduced a |
1401 computability theory using $\lambda$-terms. For this he introduced a |
1388 clever rewriting technology based on combinators and de-Bruijn |
1402 clever rewriting technology based on combinators and de-Bruijn |