updated paper
authorChristian Urban <christian dot urban at kcl dot ac dot uk>
Thu, 07 Feb 2013 00:46:04 +0000
changeset 141 4d7a568bd911
parent 140 7f5243700f25
child 142 21c7139ffa07
updated paper
Paper/Paper.thy
paper.pdf
thys/uncomputable.thy
--- a/Paper/Paper.thy	Wed Feb 06 14:14:35 2013 +0000
+++ b/Paper/Paper.thy	Thu Feb 07 00:46:04 2013 +0000
@@ -229,7 +229,7 @@
 of register machines) and recursive functions. To see the difficulties
 involved with this work, one has to understand that Turing machine
 programs can be completely \emph{unstructured}, behaving similar to
-Basic programs containing the infamous gotos \cite{Dijkstra68}. This
+Basic programs containing the infamous goto \cite{Dijkstra68}. This
 precludes in the general case a compositional Hoare-style reasoning
 about Turing programs.  We provide such Hoare-rules for when it
 \emph{is} possible to reason in a compositional manner (which is
@@ -318,22 +318,25 @@
 
 \smallskip
 \noindent
-{\bf Contributions:} We formalised in Isabelle/HOL Turing machines following the
-description of Boolos et al \cite{Boolos87} where tapes only have blank or
-occupied cells. We mechanise the undecidability of the halting problem and
-prove the correctness of concrete Turing machines that are needed
-in this proof; such correctness proofs are left out in the informal literature.  
-For reasoning about Turing machine programs we derive Hoare-rules.
-We also construct the universal Turing machine from \cite{Boolos87} by
-translating recursive functions to abacus machines and abacus machines to
-Turing machines. Since we have set up in Isabelle/HOL a very general computability
-model and undecidability result, we are able to formalise other
-results: we describe a proof of the computational equivalence
-of single-sided Turing machines, which is not given in \cite{Boolos87},
-but needed for example for formalising the undecidability proof of 
-Wang's tiling problem \cite{Robinson71}.
-%We are not aware of any other
-%formalisation of a substantial undecidability problem.
+{\bf Contributions:} We formalised in Isabelle/HOL Turing machines
+following the description of Boolos et al \cite{Boolos87} where tapes
+only have blank or occupied cells. We mechanise the undecidability of
+the halting problem and prove the correctness of concrete Turing
+machines that are needed in this proof; such correctness proofs are
+left out in the informal literature.  For reasoning about Turing
+machine programs we derive Hoare-rules.  We also construct the
+universal Turing machine from \cite{Boolos87} by translating recursive
+functions to abacus machines and abacus machines to Turing
+machines. When formalising the universal Turing machine,
+we stumbled upon an inconsistence use of the definition of
+what function a Turing machine calculates. Since we have set up in
+Isabelle/HOL a very general computability model and undecidability
+result, we are able to formalise other results: we describe a proof of
+the computational equivalence of single-sided Turing machines, which
+is not given in \cite{Boolos87}, but needed for example for
+formalising the undecidability proof of Wang's tiling problem
+\cite{Robinson71}.  %We are not aware of any other %formalisation of a
+substantial undecidability problem.
 *}
 
 section {* Turing Machines *}
@@ -747,7 +750,8 @@
   \end{equation}
   %
   \noindent
-  A \emph{standard tape} is then of the form @{text "(Bk\<^isup>l,\<langle>[n\<^isub>1,...,n\<^isub>m]\<rangle>)"} for some @{text l} 
+  A \emph{standard tape} is then of the form @{text "(Bk\<^isup>k,\<langle>[n\<^isub>1,...,n\<^isub>m]\<rangle> @ Bk\<^isup>l)"} for some @{text k}, 
+  @{text l} 
   and @{text "n\<^bsub>1...m\<^esub>"}. Note that the head in a standard tape ``points'' to the 
   leftmost @{term "Oc"} on the tape. Note also that the natural number @{text 0} 
   is represented by a single filled cell on a standard tape, @{text 1} by two filled cells and so on.
@@ -977,7 +981,7 @@
 
   \noindent
   This invariant depends on @{term n} representing the number of
-  @{term Oc}s@{text "+1"} (or encoded number) on the tape. It is not hard (26
+  @{term Oc}s on the tape. It is not hard (26
   lines of automated proof script) to show that for @{term "n >
   (0::nat)"} this invariant is preserved under the computation rules
   @{term step} and @{term steps}. This gives us partial correctness
Binary file paper.pdf has changed
--- a/thys/uncomputable.thy	Wed Feb 06 14:14:35 2013 +0000
+++ b/thys/uncomputable.thy	Thu Feb 07 00:46:04 2013 +0000
@@ -996,7 +996,7 @@
 
 definition haltP :: "tprog0 \<Rightarrow> nat list \<Rightarrow> bool"
   where
-  "haltP p ns \<equiv> {(\<lambda>tp. tp = ([], <ns>))} p {(\<lambda>tp. (\<exists>k n. tp = (Bk \<up> k,  <n::nat>)))}"
+  "haltP p ns \<equiv> {(\<lambda>tp. tp = ([], <ns>))} p {(\<lambda>tp. (\<exists>k n l. tp = (Bk \<up> k,  <n::nat> @ Bk \<up> l)))}"
 
 lemma [intro, simp]: "tm_wf0 tcopy"
 by (auto simp: tcopy_def)
@@ -1108,7 +1108,7 @@
     apply(drule_tac x = n in spec)
     apply(case_tac "steps0 (Suc 0, [], <code tcontra>) tcontra n")
     apply(auto simp add: tape_of_nl_abv)
-    done
+    by (metis append_Nil2 replicate_0)
 qed
 
 (* asumme tcontra halts on its code *)