# HG changeset patch # User Christian Urban # Date 1360019537 0 # Node ID 11fd52dceb9b03e652ccd4a05f45a621e074f34f # Parent 653426ed4b38676f6bd38ef80bd54c1ed8415c84 paper diff -r 653426ed4b38 -r 11fd52dceb9b Paper/Paper.thy --- a/Paper/Paper.thy Mon Feb 04 21:11:43 2013 +0000 +++ b/Paper/Paper.thy Mon Feb 04 23:12:17 2013 +0000 @@ -221,7 +221,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 goto-statement \cite{Dijkstra68}. This +Basic programs containing the infamous goto-statements \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 @@ -1071,7 +1071,7 @@ \end{center} \noindent - Suppose @{thm (prem 1) "tcontra_halt"}. Given the invariants on the + Suppose @{thm (prem 1) "tcontra_halt"} holds. Given the invariants on the left, we can derive the following Hoare-pair for @{term tcontra} on the right. \begin{center}\small @@ -1098,11 +1098,11 @@ This Hoare-pair contradicts our assumption that @{term tcontra} started with @{term "<(code tcontra)>"} halts. - Suppose @{thm (prem 1) "tcontra_unhalt"}. Again given the invariants on the + Suppose @{thm (prem 1) "tcontra_unhalt"} holds. Again given the invariants on the left, we can derive the Hoare-triple for @{term tcontra} on the right. \begin{center}\small - \begin{tabular}{@ {}c@ {\hspace{-17mm}}c@ {}} + \begin{tabular}{@ {}c@ {\hspace{-18mm}}c@ {}} \begin{tabular}[t]{@ {}l@ {}} @{term "Q\<^isub>1 \ \tp. tp = ([]::cell list, )"}\\ @{term "Q\<^isub>2 \ \tp. tp = ([Bk], <(code_tcontra, code_tcontra)>)"}\\ @@ -1139,7 +1139,7 @@ programs. Abacus machines operate over a set of registers $R_0$, $R_1$, \ldots{} each being able to hold an arbitrary large natural number. We use natural numbers to refer to registers; we also use a natural number - to represent a program counter. An abacus + to represent a program counter and jumping ``addresses''. An abacus program is a list of \emph{statements} defined by the datatype: \begin{center} @@ -1162,7 +1162,7 @@ \noindent Running such a program means we start with the first instruction - then execute statements one after the other, unless there is a jump. For + then execute one statements after the other, unless there is a jump. For example the second statement the jump @{term "Goto 0"} in @{term clear} means we jump back to the first statement closing the loop. Like with our Turing machines, we fetch statements from an abacus program such diff -r 653426ed4b38 -r 11fd52dceb9b paper.pdf Binary file paper.pdf has changed