1: \section{Some simulations}\label{s.sim}
2:
3: \subsection{Simulating a cellular automaton by a variable-period medium}
4: \label{ss.asynch-sim}
5:
6: The random nature of the switching times of a variable-period medium is a
7: tame kind of nondeterminism; any deterministic cellular automaton can be
8: simulated by a variable-period medium.
9: To prove this we first introduce an auxiliary concept.
10: Let us define the \df{totally asynchronous cellular
11: automaton}\index{cellular automaton!totally asynchronous}%
12: \glo{aca@$\ACA$}%
13: \[
14: \ACA(\trans)=\ACA(\trans,1,1)
15: \]
16: associated with transition function $\trans$ as follows: $\eta$ is a
17: trajectory if for all $x,t$ we have either $\eta(x,t+1)=\eta(x,t)$ or the
18: usual
19: \[
20: \eta(x,t+1)=\trans(\eta(x-1,t),\eta(x,t),\eta(x+1,t)).
21: \]
22: A site $x$ is \df{free}\index{site!free} in a configuration $\xi$ if
23: $\trans(\xi(x-1),\xi(x),\xi(x+1))\ne \xi(x)$.
24: The set of free sites will be denoted by $L(\xi)$\glo{l.cap@$\L(\xi)$}.
25: For a space configuration $\xi$ and a set $E$ of sites, let us define the
26: new configuration $\trans(\xi,E)$\glo{tr@$\trans(\xi,E)$} by
27: \[
28: \trans(\xi,E)(x) = \begin{cases}
29: \trans(\xi(x-1),\xi(x),\xi(x+1)) &\text{if $x\in E$}
30: \\ \xi(x) &\text{otherwise.}
31: \end{cases}
32: \]
33: Now we can express the condition that $\eta$ is a trajectory of
34: $\ACA(\trans)$ by saying that for every $t$ there is a set $U$ with
35: \begin{equation}\label{e.asynch.traj}
36: \eta(\cdot,t+1)=\trans(\eta(\cdot,t),U).
37: \end{equation}
38: Let the \df{update set}\index{update!set}%
39: \glo{u.cap@$U(t,\eta)$}%
40: \begin{equation}\label{e.asynch-sim.ute}
41: U(t,\eta)
42: \end{equation}
43: be the set of sites $x$ with $\eta(x,t+1)\ne \eta(x,t)$.
44: The initial configuration and the update sets $U(t,\eta)$ determine
45: $\eta$.
46: For any set $A$, let us use the indicator function%
47: \glo{h.greek@$\chi(x,A)$}%
48: \[
49: \chi(x,A)=\begin{cases}
50: 1 &\text{if $x\in A$,}
51: \\ 0 &\text{otherwise.}
52: \end{cases}
53: \]
54: For given $\eta$ we define the function
55: $\tau(x,t)=\tau(x,t,\eta)$\glo{t.greek@$\tau(x,t)$} as follows:
56: \begin{equation}\label{e.tau-x-t}
57: \begin{aligned}
58: \tau(x,0) &= 0,
59: \\ \tau(x,t+1) &= \tau(x,t)+ \chi(x,U(t,\eta)).
60: \end{aligned}
61: \end{equation}
62: We can call $\tau(x,t)$ the \df{effective age}\index{age!effective} of
63: $x$ in $\eta$ at time $t$: this is the number of effective updatings that
64: $x$ underwent until time $t$.
65: Given a transition function $\trans$ and an initial configuration $\xi$,
66: we say that the function \df{has invariant histories}\index{invariant
67: histories} if there is a function $\zg(x,u)=\zg(x,u,\xi)$ such that for all
68: trajectories $\eta(x,t)$ of $\ACA(\trans)$ with $\eta(\cdot,0)=\xi$ we have
69: \begin{equation}\label{e.t.commut}
70: \eta(x,t) = \zg(x,\tau(x,t,\eta),\xi).
71: \end{equation}
72: This means that after eliminating repetitions, the sequence
73: $\zg(x,1),\zg(x,2),\ldots$ of values that a site $x$ will go through during
74: some trajectory, does not depend on the update sets, only on the initial
75: configuration (except that the sequence may be finite if there is only a
76: finite number of successful updates).
77: The update sets influence only the delays in going through this
78: sequence.
79: Let
80: \[
81: \trans(\xi,E,F)=\trans(\trans(\xi,E),F).
82: \]
83: We call a transition function $\trans$
84: \df{commutative}\index{transition function!commutative} if for all
85: configurations $\xi$ and all distinct pairs $x,y\in L(\xi)$ we have
86: $\trans(\xi,\{x\},\{y\}) = \trans(\xi,\{y\},\{x\})$.
87: The paper ~\cite{GacsCommut95} proves the theorem that if a transition
88: function is commutative then it has invariant histories.
89: In Theorem ~\ref{t.asynch-sim} below, we will give a simple example
90: of a universal commutative transition function.
91: For that example, the theorem can be proved much easier.
92:
93: %{\small
94: % \begin{remark}
95: % For a nearest-neighbor one-dimensional function $\trans$ the condition
96: %is equivalent to saying that if $\trans(r_{0},r_{1},r_{2})\ne r_{1}$ and
97: %$\trans(r_{1},r_{2},r_{3})\ne r_{2}$ then
98: % \begin{align*}
99: % \trans(\trans(r_{0},r_{1},r_{2}),r_{2},r_{3}) &= \trans(r_{1},r_{2},r_{3})
100: %\\ \trans(r_{0},r_{1},\trans(r_{1},r_{2},r_{3})) &= \trans(r_{0},r_{1},r_{2}).
101: % \end{align*}
102: %\end{remark}
103: %}%small
104:
105: Below, we will use the smallest absolute-value remainders%
106: \glo{amod@$\amod$}%
107: \begin{equation}\label{e.amod}
108: b \amod m
109: \end{equation}
110: with respect to a positive integer $m>2$, defined by the requirement
111: $-m/2< b \amod m \le m/2$.
112:
113: \begin{theorem}[Commutative Simulation]\label{t.asynch-sim}
114: \index{theorem@Theorem!Asynchronous Simulation}
115: Let $\trans_{2}$ be an arbitrary transition function with state space
116: $\SS_{2}$.
117: Then there is a commutative transition function $\trans_{1}$ with state
118: space $\SS_{1}=\SS_{2}\times R$ (for an appropriate finite set $R$) with
119: the following property.
120: Each state $s\in \SS_{1}$ can be represented as $(s.\F,s.\G)$ where
121: $s.\F\in \SS_{2}$, $s.\G\in R$.
122: Let $\xi_{2}$ be an arbitrary configuration of $\SS_{2}$ and let $\xi_{1}$
123: be a configuration of $\SS_{1}$ such that for all $x$ we have
124: $\xi_{1}(x).\F=\xi_{2}(x)$, $\xi_{1}(x).\G=0\cdots 0\in R$.
125: Then for the trajectory $\eta_{1}$ of $\CA(\trans_{1})$, with initial
126: configuration $\xi_{1}$, the function $\eta_{1}(x,t).\F$ is a trajectory of
127: $\CA(\trans_{2})$.
128: Moreover, in $\eta_{1}$, the state of each cell changes in each step.
129: \end{theorem}
130:
131: In other words, the function $\trans_{1}$ behaves in its field $\F$ just
132: like the arbitrary transition function $\trans_{2}$, but it also supports
133: asynchronous updating.
134:
135: \begin{proof}
136: Let $U>2$ be a positive integer and%
137: \glo{cur@$\Cur$}%
138: \glo{prev@$\Prev$}%
139: \[
140: \Cur,\Prev,\Age
141: \]
142: be three fields of the states of $\SS_{1}$, where $\F=\Cur$,
143: $\G=(\Prev,\Age)$.
144: The field $\Age$ represents numbers mod $U$.
145: It will be used to keep track of the time of the simulated cells mod
146: $U$, while $\Prev$ holds the value of $\Cur$ for the previous value of
147: $\Age$.
148:
149: Let us define $s' = \trans_{1}(s_{-1},s_{0},s_{1})$.
150: If there is a $j\in\{-1,1\}$ such that
151: $(s_{j}.\Age-s_{0}.\Age) \amod U < 0$ (i.e.~some neighbor lags behind)
152: then $s'=s_{0}$ i.e.~there is no effect.
153: Otherwise, let $r_{0}=s_{0}.\Cur$, and for $j=-1,1$, let $r_{j}$ be equal
154: to $s_{j}.\Cur$ if $s_{j}.\Age=s_{0}.\Age$, and $s_{j}.\Prev$ otherwise.
155: \begin{align*}
156: s'.\Cur &= \trans_{2}(r_{-1},r_{0},r_{1}),
157: \\ s'.\Prev &= s_{0}.\Cur,
158: \\ s'.\Age &= s_{0}.\Age + 1 \bmod U.
159: \end{align*}
160: Thus, we use the $\Cur$ and $\Prev$ fields of the neighbors
161: according to their meaning and update the three fields according to
162: their meaning.
163: It is easy to check that this transition function simulates $\trans_{2}$
164: in the $\Cur$ field if we start it by putting 0 into all other fields.
165:
166: Let us check that $\trans_{1}$ is commutative.
167: If two neighbors $x,x+1$ are both allowed to update then neither of them
168: is behind the other modulo $U$, hence they both have the same $\Age$ field.
169: Suppose that $x$ updates before $x+1$.
170: In this case, $x$ will use the $\Cur$ field of $x+1$ for
171: updating and put its own $\Cur$ field into $\Prev$.
172: Next, since now $x$ is ``ahead'' according to $\Age$, cell $x+1$
173: will use the $\Prev$ field of $x$ for updating: this was the $\Cur$
174: field of $x$ before.
175: Therefore the effect of consecutive updating is the same as that of
176: simultaneous updating.%
177: \end{proof}
178:
179: The commutative medium of the above proof will be called the
180: \df{marching soldiers}\index{marching soldiers} scheme since its handling
181: of the $\Age$ field reminds one of a chain of soldiers marching ahead in
182: which two neighbors do not want to be separated by more than one step. %?
183: \begin{figure}
184: \setlength{\unitlength}{1mm}
185: \[
186: \begin{picture}(100, 35)(15, 0)
187: \put(0,0){\circle*{1}}
188: \put(0,0){\line(1,1){5}}
189: \put(5,5){\circle*{1}}
190: \put(5,5){\line(1,1){5}}
191: \put(10,10){\circle*{1}}
192: \put(10,10){\line(1,1){5}}
193: \put(15,15){\circle*{1}}
194: \put(15,15){\line(1,1){5}}
195: \put(20,20){\circle*{1}}
196: \put(20,20){\line(1,-1){5}}
197: \put(25,15){\circle*{1}}
198: \put(25,15){\line(1,-1){5}}
199: \put(30,10){\circle*{1}}
200: \put(30,10){\line(1, 0){5}}
201: \put(35,10){\circle*{1}}
202: \put(35,10){\line(1, 0){5}}
203: \put(40,10){\circle*{1}}
204: \put(40,10){\line(1, 1){5}}
205: \put(45,15){\circle*{1}}
206: \put(45,15){\line(1, 0){5}}
207: \put(50,15){\circle*{1}}
208: \put(50,15){\line(1, -1){5}}
209: \put(55,10){\circle*{1}}
210: \put(55,10){\line(1, -1){5}}
211: \put(60, 5){\circle*{1}}
212: \put(60, 5){\line(1, 1){5}}
213: \put(65,10){\circle*{1}}
214: \put(65,10){\line(1, -1){5}}
215: \put(70, 5){\circle*{1}}
216: \put(70, 5){\line(1, 1){5}}
217: \put(75, 10){\circle*{1}}
218: \put(75, 10){\line(1, 0){5}}
219: \put(80, 10){\circle*{1}}
220: \put(80, 10){\line(1, 0){5}}
221: \put(85, 10){\circle*{1}}
222: \put(85, 10){\line(1, 1){5}}
223: \put(90, 15){\circle*{1}}
224: \put(90, 15){\line(1, 1){5}}
225: \put(95, 20){\circle*{1}}
226:
227: \put(105, 0){\vector(0,1){30}}
228: \put(108, 15){\makebox(0,0)[l]{effective age}}
229:
230: \end{picture}
231: \]
232: \caption[The Marching Soldiers scheme]{The Marching Soldiers scheme.
233: The effective age of neighbor sites differs by at most 1.}
234: \end{figure}
235: \label{f.marching}
236: \begin{remark}
237: In typical cases of asynchronous computation, there are more efficient
238: ways to build a commutative transition function than to store the whole
239: previous state in the $\Prev$ field.
240: Indeed, the transition function typically has a bandwidth (see
241: ~\ref{sss.bandwidth}) smaller than $\nm{\SS}$.
242: \end{remark}
243:
244: \begin{corollary}[Variable-period simulation]\label{c.var-sim}
245: For every deterministic transition function $\trans_{2}$ over some
246: state-space $\SS_{2}$, there is a set of states $\SS_{1}$, a transition
247: function $\trans_{1}$ \\
248: over $\SS_{1}$, and a code that for any values $\Tl_{1}\le\Tu_{1}$,
249: is a simulation of $\CA(\trans_{2})$ by
250: $\Prim-var(\trans_{1},1,\Tl_{1},\Tu_{1},0)$.
251: \end{corollary}
252:
253: \begin{proof}
254: Let $\trans_{1}$ be the commutative transition function given by
255: Theorem ~\ref{t.asynch-sim}, with the fields $\F,\G$.
256: Let $\xi_{2}$ be an arbitrary configuration of $S_{2}$ and let $\xi_{1}$
257: be a configuration of $S_{1}$ defined in the statement of the same
258: theorem.
259: Let $\eta_{1}$ be a trajectory of
260: $\Prim-var(\trans_{1},1,\Tl_{1},\Tu_{1},0)$, with the starting configuration
261: $\xi_{1}$.
262:
263: An update set $U(t,\eta_{1})$ similar to~\eqref{e.asynch-sim.ute} can be
264: defined now for the trajectory $\eta_{1}$ as follows: $x$ is in
265: $U(t,\eta_{1})$ iff $t$ is a switching time of $\eta_{1}$.
266: Similarly, $\tau(x,t,\eta_{1})$ can be defined as in~\eqref{e.tau-x-t}:
267: \begin{align*}
268: \tau(x,0) &= 0,
269: \\ \tau(x,t) &= \tau(x,t-)+ \chi(x,U(t,\eta_{1})).
270: \end{align*}
271: With these, let us define
272: \begin{align*}
273: \sg(x,s,\xi) &= \bigwedge\setof{t:\tau(x,t,\eta')=s},
274: \\ \eta_{2}(x,s,\xi) &= \eta_{1}(x,\sg(x,s)).\F
275: \end{align*}
276: By the cited theorem, $\eta_{2}$ is a trajectory of $\CA(\trans_{2})$.%
277: \end{proof}
278:
279: The simulation in this theorem is not a local
280: one\index{simulation!non-local} in the sense defined in Subsection
281: ~\ref{ss.gen-sim} since it changes the time scale.
282: For an analysis of such simulations, see ~\cite{BermSim88}.
283:
284:
285: \subsection {Functions defined by programs}
286: \label{ss.func-prog}
287:
288: Let us recall the definition of a standard computing transition function
289: as introduced in Subsection ~\ref{ss.1dim.comp}, and let us call a cellular
290: automaton with such a transition function a
291: \df{standard computing medium}\index{medium!standard computing}.
292: For a standard computing transition function $\trans$, integers $s$ and $t$
293: and string $X$ consider a trajectory $\eta$ of $\CA(\trans)$ over the rectangle
294: $[0,s]\times[0,t]$ with an initial configuration in which
295: $\eta(0,0)=\eta(s,0)=\#\cdots \#$, further $X$ is on the input track on
296: $[1,s-1]$ (padded with $*$'s to fill up $[1,s-1]$), $*$'s on the output
297: track and 0's on the other tracks.
298: This defines a trajectory $\eta$ since the $\#$'s on the input field
299: in cells 0 and $s$ imply that the cells outside the interval $[0,s]$
300: will have no effect.
301:
302: Assume that at time $t$, the $\Output$ track has no $*$ on
303: $[1, s-1]$.
304: Then the output never changes anymore (it is monotonic in standard
305: computing media).
306: The string $w$ on the $\Output$ track on $[1,s-1]$ will be called the
307: \df{result}\index{computation!result} of the computation, denoted by%
308: \glo{tr@$\trans(X; s, t)$}%
309: \[
310: w= \trans(X; s, t).
311: \]
312: \begin{figure}
313: \setlength{\unitlength}{1mm}
314: \[
315: \begin{picture}(100, 100)
316: \put(40, 0){\framebox(60, 80){$\nearrow\uparrow\nwarrow \trans$}}
317: \put(45,0){\line(0, 1){80}}
318: \put(95,0){\line(0, 1){80}}
319:
320: \put(45,0){\makebox(50, 5){$X$ on $\var{Input}$}}
321: \put(45,5){\line(1, 0){50}}
322:
323: \put(45, 75){\makebox(50, 5){$\trans(X; s, t)$ on $\var{Output}$}}
324: \put(45, 75){\line(1, 0){50}}
325:
326: \multiput(40, 0)(0, 5){3}{\makebox(5, 5){\#}}
327: \multiput(40, 75)(0, -5){3}{\makebox(5, 5){\#}}
328:
329: \multiput(95,0)(0, 5){3}{\makebox(5, 5){\#}}
330: \multiput(95, 75)(0, -5){3}{\makebox(5, 5){\#}}
331:
332: \multiput(40, 40)(55, 0){2}{\makebox(5, 5){$\vdots$}}
333:
334: \put(42.5, -4){\makebox(0,0)[t]{0}}
335: \put(97.5, -4){\makebox(0,0)[t]{$s$}}
336:
337: \put(36, 2.5){\makebox(0,0)[r]{0}}
338: \put(36, 77.5){\makebox(0,0)[r]{$t$}}
339:
340: \put(0, 30){\vector(0, 1){20}}
341: \put(4, 40){\makebox(0,0)[l]{time}}
342:
343: \end{picture}
344: \]
345: \caption{Definition of $\text{\rmfamily\slshape\mdseries trans}(X; s, t)$}
346: \label{f.def-of-tr-X}
347: \end{figure}
348:
349:
350: \subsubsection{Efficient universality} \label{sss.effic-univ}
351: We say that the standard computing transition function $\trans_{0}$ is
352: \df{efficiently universal\/}\index{transition function!universal!efficiently}
353: if for every standard computing transition function $\trans$, there is a
354: string $\rul{prog}$ and constant $c$ such that for all strings $X$ and
355: positive integers $s,t$ we have%
356: \glo{prog@$\rul{prog}$}%
357: \[
358: \trans(X; s, t) = \trans_{0}(\rul{prog}\cc X; c s, c(s+t))
359: \]
360: whenever the left-hand side is defined.
361: In other words, $\trans_{0}$ can simulate the computation of any other
362: standard computing transition $\trans$ if we prepend a ``program of
363: $\trans$''\index{transition function!program of}.
364: The space and time needed for this simulation can only be a constant
365: factor greater than those of the simulated computation.
366:
367: \begin{theorem}
368: There are efficiently universal standard computing transition functions.
369: \end{theorem}
370:
371: \begin{proof}[Sketch of the proof]
372: This theorem can be proven similarly to Theorem ~\ref{t.univ}.
373: The main addition to the construction is that before $\trans_{0}$ starts
374: a block simulation of $\trans$ the input will be distributed bit-by-bit to
375: the colonies simulating the cells of $\trans$.
376: At the end, the output will be collected from these colonies.%
377: \end{proof}
378:
379: We fix an efficiently universal standard computing transition function%
380: \glo{univ@$\univ$}%
381: \begin{equation}\label{e.univ}
382: \univ
383: \end{equation}
384: for the definition of various string functions.
385: In view of Theorem ~\ref{t.asynch-sim}, we can (and will) also assume that
386: $\univ$ is commutative.
387: For a string function $f(X)$ defined over some domain $E$ we will say
388: that $\rul{prog}$ is a program for $f$ with
389: \df{time complexity bound $t$ and space complexity bound $s$ over $E$} if
390: we have
391: \[
392: \univ(\rul{prog}\cc X;s,t) = f(X).
393: \]
394: It is often convenient to define a finite function (like a
395: transition function of some medium, or a code) by its program (for
396: $\univ$) rather than its transition table, since for many interesting
397: functions, the program can be given in a more concise form.
398:
399:
400: \subsection{The rule language}\label{ss.rule-lang}
401:
402: This subsection defines a language for describing a transition function
403: that is more convenient than giving a complete transition table.
404: A transition function will generally be defined by a set of
405: \df{rules}\index{rule} which impose some conditions on it.
406: In case some rules are contradictory and no precedence is stated between
407: them then rules given later override the ones given earlier.
408: Rules are sometimes associated with certain fields.
409: The lowest-priority rule referring to a field is called the
410: \df{default}\index{rule!default}.
411:
412: Some rules will not be applicable directly, but will rather be used by
413: other rules: these will be called \df{subrules}\index{rule!sub-}.
414: A subrule $\rul{R}$ is just like other rule, except that, typically,
415: there is some other rule saying in which time interval of the work period
416: to invoke $\rul{R}$.
417:
418: Our use of the rule language will not be completely formal but it will be
419: evident how to make it formal.
420: In a semi-formal description of a rule, $\x$\glo{x@$\x$} refers to the
421: cell to which it is applied.
422: This is only a convenient shorthand that can be replaced with references
423: to fields of the cell and its neighbors.
424: We will write%
425: \glo{th.greek@$\thg_{j}(x)$}%
426: \[
427: \thg_{j}(x) = x + jB
428: \]
429: for the site $j$ steps from $x$.
430: In the condition as well as the action of the rule, a field $\F(\x)$
431: will simply be written as $\F$.
432: We will often write%
433: \glo{f.cap@$\F^{j}$}%
434: \[
435: \F^{j}=\eta.\F(\thg_{j}(\x)) .
436: \]
437: For example, for field $\Addr$, instead of writing
438: ``\texttt{if $\eta.\Addr(\x)=0$ and $\Addr(\thg_{j}(\x))=1$}'' we will write
439: ``\texttt{if $\Addr=0$ and $\Addr^{j}=1$}''.
440:
441: The simplest possible rule is an assignment of the form
442: $\F:=g$\glo{:=@$:=$} where $\F$ is a field and $g$ is a function of some
443: fields, e.g.~$\F:=G^{-1}+H^{1}$.
444: Another possible rule is the conditional:%
445: \glo{cond@\texttt{cond}}%
446: \glo{?@\texttt{?,"!,?"!}}%
447: \begin{program}
448: cond\0{
449: \\ ? $C_{1}$
450: \\ ! $A_{1}$
451: \\ $\ldots$
452: \\ ? $C_{k}$
453: \\ ! $A_{k}$
454: \\\relax [?! $A_{k+1}$]
455: \\ }
456: \end{program}
457: Here, $C_{1},C_{2},\ldots$ are \df{conditions}: inequalities and equations in
458: terms of the states of $\thg_{j}(\x)$, and $A_{1},\ldots,A_{k+1}$ are possible
459: \df{actions} each of which can be another rule.
460: We can use logical connectives, even (finite) quantifiers in the
461: conditions.
462: The above rule says that if condition $C_{1}$ is satisfied then the
463: action $A_{1}$ must be performed.
464: Else if $C_{2}$ holds then action $A_{2}$ must be performed, etc.
465: Finally, and optionally, (this is meant by ``[,]'') if all
466: conditions fail then we may require a default action $A_{k+1}$ to be
467: performed.
468: The symbols \texttt{?}, \texttt{!}, \texttt{?!} abbreviate
469: \df{condition}, \df{action} and \df{default} respectively.
470: An alternative way of writing would be
471: \begin{program}
472: if $C_{1}$ \0{
473: \\ then $A_{1}$
474: \\ else if $C_{2}$
475: \\ then $A_{2}$
476: \\ $\ldots$
477: \\ else $A_{k+1}$
478: \\ }
479: \end{program}
480: \begin{remark}
481: We prefer the first form (borrowed from the programming language LISP)
482: only in order to put all conditions formally on the same level.
483: \end{remark}
484: The rule%
485: \glo{"+@$\texttt{;},\prl$}%
486: \[
487: \rul{R}_{1}\prl \rul{R}_{2}
488: \]
489: is a combination of two rules.
490: It says that both rules must be carried out simultaneously.
491: In case the two rules are just two assignments we will sometimes omit the
492: sign $\prl$.
493: The rule
494: \[
495: \rul{R}_{1};\rul{R}_{2}
496: \]
497: asks for carrying out the rules $\rul{R}_{1}$ and $\rul{R}_{2}$
498: consecutively.
499: This informal notation can be understood in terms of a field $\Age$ which
500: we are always going to have and can be replaced with a conditional.
501: E.g., whenever we write
502: \begin{program}
503: $\Retrieve$;
504: \\ $\Eval$
505: \end{program}
506: then this can be replaced, using appropriate constants $t_{i}$, with
507: \begin{program}
508: cond \0{
509: \\ ? $t_{1}\le\Age< t_{2}$
510: \\ ! $\Retrieve$
511: \\ ? $t_{2}\le\Age< t_{3}$
512: \\ ! $\Eval$
513: \\ }
514: \end{program}
515: We will also use the construct%
516: \glo{for@\texttt{for}}%
517: \begin{program}
518: for $i=a$ to $b$ $\ang{\text{ some rule referring to } i}$.
519: \end{program}
520: The construct%
521: \glo{repeat@\texttt{repeat}}%
522: \begin{program}
523: repeat $k$ times $\ang{\cdots}$
524: \end{program}
525: is a special case.
526:
527: A subrule can have parameters (arguments).
528: Subrule $P(i)$ with parameter $i$ can be viewed as a different rule for
529: each possible value of $i$.
530: An example could be a simple subrule $\rul{Read-Mail}(j)$ which for
531: $j\in\{-1,1\}$ has the form
532: \[
533: \Mail:=\Mail^{j}
534: \]
535: for the field $\Mail$.
536: We will also have \df{functions}: these are defined by the
537: information available in the arguments of the transition function, and can
538: always be considered a shorthand notation: e.g., we could denote
539: \[
540: f(i)=\Addr+\Age^{i}.
541: \]
542: The construct%
543: \glo{let@\texttt{let}}%
544: \begin{program}
545: let $k=\ldots$
546: \end{program}
547: can be understood as notational shorthand (though could also be
548: incorporated into the rule language).
549:
550: \begin{example}
551: Here is a description of the transition function given in the proof
552: of Theorem ~\ref{t.asynch-sim} (Asynchronous Simulation).%
553: \glo{march@$\rul{March}$}%
554: \begin{program}
555: rule $\rul{March}$ \0{
556: \\ for $j\in\{-1,0,1\}$, \0{
557: \\ let $r(j)=\Cur^{j}$ if $\Age^{j}=\Age$, and $\Prev^{j}$ otherwise;
558: }
559: \\ cond \0{
560: \\ ? $\forall j\in\{-1,1\}$ $(\Age^{j}-\Age) \amod U \ge 0$
561: \\ ! \0{
562: \\ $\Prev := \Cur$;
563: \\ $\Cur := \trans_{2}(r(-1),r(0),r(1))$ \prl
564: \\ $\Age := \Age + 1 \bmod U$
565: \\ }}}
566: \end{program}
567: \end{example}
568: We will also have a field $\Addr$.
569: A \df{colony}\index{colony} is a segment of cells with addresses growing
570: from 0 to $Q-1$ modulo some constant $Q$.
571:
572: A \df{location}\index{location} is a pair $(\F,I)$ where $\F$ is a field,
573: and $I$ is an interval of addresses in the colony.
574: We will denote it as%
575: \glo{f.cap@$\F(I)$}%
576: \[
577: \F(I).
578: \]
579: As an element of the language, of course, a location is simply a triple
580: consisting of the field, and the numbers determining the endpoints of the
581: interval.
582: A location is meant to specify a sequence of symbols on track $\F$.
583: If a shorthand name is given a location, this will generally begin with a
584: minus sign, like%
585: \glo{info@$\fld{-Info}$}%
586: \[
587: \fld{-Info}.
588: \]
589: \begin{remark}
590: Occasionally, we may treat the union of two or three locations as one.
591: It is easy to generalize the rules dealing with locations to this case.
592: \end{remark}
593:
594: Let us be given a string $S$ consisting of a constant number of runs
595: of the same symbol.
596: For example, $0^{m}1^{n}$ has one run of 0's and a run of 1's.
597: Let us also be given a location $\loc$.
598: Then a rule $\Write(S,\loc)$\glo{write@$\Write$}, writing the string $S$
599: to the location $\loc$, can be written as a conditional rule, as long as
600: there are runs of 0's and 1's:
601: \begin{program}
602: subrule $\Write(0^{m}1^{n},\F([a,a+m+n-1]))$\0{
603: \\ cond \0{
604: \\ ? $a\le\Addr < Q\wedge(a+m)$
605: \\ ! $\F:=0$
606: \\ ? $a+m\le\Addr < Q\wedge(a+m+n)$
607: \\ ! $\F:=1$
608: \\ }}
609: \end{program}
610: The rule language can contain some definitions of names for constant
611: strings of symbols, of the form%
612: \glo{param@$\Param$}%
613: \begin{equation}\label{e.Param}
614: \Param_{0} = s_{0}, \Param_{1}=s_{1},\;\Param_{2}=s_{2},\ldots.
615: \end{equation}
616: where $s_{i}$ are some strings.
617: The names $\Param_{i}$ are allowed to be used in the rules.
618: Let us even agree that the whole program is nothing but a sequence of
619: such definitions, where the first string $s_{0}$ is the sequence of all the
620: rules.
621: In this case, using the name $\Param_{0}$ in the rules is a kind of
622: self-reference\index{self!reference}, but its interpretation is clear since
623: it denotes a definite string.
624:
625: \begin{theorem}[Rule Language]\label{t.rule-lang}
626: \index{theorem@Theorem!Rule Language}
627: There is a string $\rul{Interpr}$\glo{interpr@$\rul{Interpr}$} and an
628: integer $\cns{interpr-coe}$\glo{interpr@$\cns{interpr-coe}$} such that the
629: following holds.
630: If string $P$ is a description of a transition rule $\trans$ over state
631: set $\SS$ in the above language (along with the necessary parameters) then
632: the machine $\univ$ defined in~\eqref{e.univ} computes
633: $\trans(r_{-1},r_{0},r_{1})$ (possibly padded with $*$'s) from
634: \[
635: \rul{Interpr}\cc P\cc r_{-1}\cc r_{0}\cc r_{1}
636: \]
637: within computation time $\cns{interpr-coe}(|P|+1)^{2}\nm{\SS}$ and space
638: $\cns{interpr-coe}(|P|+\nm{\SS}+1)$.
639: \end{theorem}
640:
641: \begin{proof}[Sketch of proof]
642: A detailed proof would be tedious but routine.
643: Essentially, each line of a rule program is some comparison involving
644: some fields: substrings of a state argument $r_{i}$.
645: We have $(|P|+1)$ squared in the time upper bound since we may have to
646: look up some parameter repeatedly.
647: \end{proof}
648:
649: From now on, by a \df{rule program}\index{program!rule}
650: $\rul{Trans-prog}$\glo{trans-prog@$\rul{Trans-prog}$} of the transition
651: function $\trans$, we will understand some string to be interpreted by
652: $\rul{Interpr}$.
653:
654:
655: \subsection {A basic block simulation}
656: \label{ss.simp-sim}
657:
658: The simulation described here is used just to demonstrate the use of the
659: notation and to introduce some elements of the later construction in a
660: simple setting.
661: Let a transition function $\trans_{2}$ be given.
662: We want to define a cellular automaton $M_{1}=\CA(\trans_{1})$, whose
663: trajectories simulate the trajectories of $M_{2}=\CA(\trans_{2},Q,U)$,
664: with appropriate $Q,U$.
665: Of course, there is a trivial simulation, when $M_{1}=M_{2}$, but a
666: more general scheme will be set up here.
667: This simulation is not one of the typical simulations by a universal
668: medium: the cell-size of $M_{1}$ depends on $M_{2}$ as in Example
669: ~\ref{x.block-code}.
670: The construction will be summarized in Theorem ~\ref{t.simp-sim}
671: below.
672:
673: In the construction, we introduce some more notation that can be
674: considered a shorthand in writing the rules but can also be incorporated
675: into the rule language (without invalidating Theorem ~\ref{t.rule-lang} (Rule
676: Language)).
677:
678: \subsubsection{Overall structure}
679: The transition function $\trans_{2}:\SS_{2}^3\to\SS_{2}$ to be simulated is
680: given by a rule program $\rul{Trans-prog}_{2}$.
681: To perform a simulated state transition of $M_{2}$, a colony of $M_{1}$
682: must do the following:
683: \begin{description}
684: \item[Retrieve] Retrieve the states of the represented neighbor
685: cells from the neighbor colonies;
686: \item[Evaluate] Compute the new state using $\trans_{2}$;
687: \item[Update] Replace the old represented state with the new one.
688: \end{description}
689:
690: The field $\Addr$ holds a number between 0 and $Q-1$, as discussed
691: in Subsection ~\ref{ss.col}.
692: The default operation is to keep this field unchanged.
693: The time steps within a work period of a colony are numbered
694: consecutively from 0 to $U-1$.
695: The field $\Age$ holds a number between 0 and $U-1$ intended to be
696: equal to this number.
697: The default operation is to increase this by 1 modulo $U$.
698: These default operations will not be overridden in the simple,
699: fault-free simulations.
700: Using these fields, each cell knows its role at the current stage of
701: computation.
702:
703: On the track $\Info$\glo{info@$\Info$}, each colony holds a binary string of
704: length $\nm{\SS_{2}}$.
705: For a string $S\in\SS_{1}^{Q}$, the decoded value $\fg^{*}(S)$ is obtained by
706: taking this binary string. The encoding will be defined later.
707: The default operation on the information field is to leave it
708: unchanged.
709: It will be overridden only in the last, updating step.
710: For simplicity, let us take $|\Info|=2$, i.e.~the $\Info$ track contains
711: only symbols from the standard alphabet.
712: The field $\Cpt$\glo{cpt@$\Cpt$} will be used much of the time like the
713: cells of a standard computing medium, so its size is the capacity
714: $|\univ|=\nm{\SS_{\univ}}$ of the fixed efficiently universal standard
715: computing medium.
716: It has subfields $\Input$, $\Output$.
717: The field $\Cpt.\Input$ is under the control of the rule
718: $\Retrieve$\glo{retrieve@$\Retrieve$}, while rest of $\Cpt$ is under the
719: control of the rule $\Eval$\glo{eval@$\Eval$}.
720:
721: The whole program can be summarized as%
722: \glo{update@$\rul{Update}$}%
723: \begin{program}
724: $\Retrieve$;
725: \\ $\Eval$;
726: \\ $\rul{Update}$
727: \end{program}
728:
729:
730: \subsubsection{Mail movement}\label{sss.mail-movement}
731: Let $x$ be the base of the current colony under consideration.
732: For $i=-1,0,1$, we will indicate how to write a subrule%
733: \glo{copy@$\Copy$}%
734: \[
735: \Copy(i,\loc_{1},\loc_{2})
736: \]
737: that copies, from the colony with base $x-iQ$, the location
738: $\loc_{1}$\glo{loc@$\loc$} to location $\loc_{2}$ of the current colony.
739:
740: \begin{remark}\label{r.narrow-mail}
741: In the present section, for convenience, we assume that the tracks in
742: $\loc_{1}$ and $\loc_{2}$ have the same width.
743: Similarly, we assume that the mail track is at least as wide than any of
744: the tracks that it serves during copying.
745: This assumption might not be valid if the transition function we are
746: designing is separable with some small bandwidth (as in
747: ~\ref{sss.bandwidth}) since the mail field must be part of $\Buf$.
748:
749: Copying can be organized also without the assumption.
750: Suppose e.g. that the mail track and $\loc_{2}$ is narrow, and the track
751: of $\loc_{1}$ is wider by a factor $k_{1}$ than these.
752: Then $\loc_{1}$ can be considered to be the union of $k_{1}$ locations of
753: smaller width and the copying of $\loc_{1}$ into $\loc_{2}$ will need
754: $k_{1}$ separate copying operations.
755: \end{remark}
756:
757: With the help of this rule, we will have, with appropriate locations
758: $\fld{-Retrieved}_{m}$\glo{retrieved@$\fld{-Retrieved}_{m}$},
759: \begin{program}
760: subrule $\Retrieve$ \0{
761: \\ for $m\in\{-1,0,1\}$ do \0{
762: \\ $\Copy(m, \fld{-Info}, \fld{-Retrieved}_{m})$
763: \\ }}
764: \end{program}
765: here $\fld{-Info}$\glo{info@$\fld{-Info}$} is the location on the $\Info$
766: track containing the represented string.
767: For the rule $\Copy$ we use a framework a little more general than what
768: would be needed here, with a variable-time version in mind.
769: Let%
770: \glo{nb-ind@$\Nb-ind$}%
771: \glo{mail-ind@$\var{Mail-ind}$}%
772: \begin{align}\label{e.nb-ind.1}
773: \Nb-ind &= \{-1,0,1\},
774: \\\label{e.Mail-ind} \var{Mail-ind} &= \{-1.1,-0.1,0.1,1.1\}.
775: \end{align}
776: In colony with base $x$, track
777: \[
778: \Mail_{k},\ k\in\var{Mail-ind}.
779: \]
780: is for passing information to colony with base $x+\sign(k)\flo{|k|} B$,
781: in direction $\sign(k)$.
782: Field $\Mail_{k}$ has subfields%
783: \glo{fromaddr@$\Fromaddr$}%
784: \glo{fromnb@$\Fromnb$}%
785: \glo{status@$\Status$}%
786: \[
787: \Fromaddr, \Fromnb, \Info, \Status.
788: \]
789: For simplicity, let $|\Mail_{k}.\Info|=|\Info|$.
790: The field $\Status$ can have the symbolic values%
791: \glo{normal@$\var{Normal}$}%
792: \glo{undef@$\Undef$}%
793: \[
794: \var{Normal}, \Undef.
795: \]
796: The default value of $\Mail_{k}.\Status$ is $\var{Normal}$.
797: When $\Mail_{k}.\Status=\Undef$ then the other subfields of $\Mail_{k}$
798: will play no role therefore we will, informally, also write
799: $\Mail_{k}=\Undef$.
800: For adjacent cells $x,y$ with $j=y-x$, and their colonies $x^{*}$ and
801: $y^{*}$ (defined from their $\Addr$ field) we define the predicate%
802: \glo{edge@$\Edge_{j}(x)$}%
803: \[
804: \Edge_{j}(x)=\begin{cases}
805: 0 &\text{if $x^{*}=y^{*}$,}
806: \\ 1 &\text{if $x$ and $y$ are endcells of two adjacent colonies,}
807: \\ \infty &\text{otherwise.}
808: \end{cases}
809: \]
810: The mail track\index{track!mail} $\Mail_{k}$ of cell $x$ will cooperate,
811: in direction $j$, with mail track $\peer(k,j)$ where%
812: \glo{peer@$\peer(k, j)$}
813: \[
814: \peer(k,j) = k - j\Edge_{j}(x)
815: \]
816: if the latter is in $\var{Mail-ind}$.
817: For $j = -\sign(k)$, we define
818: \[
819: \var{Mail-to-receive}(k) = \Mail_{\peer(k,j)}^{j}.
820: \]
821: as the mail to be received into $\Mail_{k}$ provided
822: $\peer(k,j)\in\var{Mail-ind}$ and $\Undef$ otherwise.
823: The one-step rule $\rul{Move-mail}$ gets mail from the neighbor cell:%
824: \glo{move-mail@$\rul{Move-mail}$}%
825: \begin{program}
826: subrule $\rul{Move-mail}$ \0{
827: \\ pfor $k$ in $\var{Mail-ind}$ do \0{
828: \\ $\Mail_{k}:=\var{Mail-to-receive}(k)$
829: \\ }}
830: \end{program}
831: Here, $\texttt{pfor}$\glo{pfor@$\texttt{pfor}$} is a ``parallel
832: $\texttt{for}$'': the rule is carried out simultaneously for all $k$
833: (i.e.~for all fields indexed by $k$).
834: A cell will typically copy the information to be sent into
835: $\Mail_{k}.\Info$ and at the same time, its own address into
836: $\Mail_{k}.\Fromaddr$, and $-\sign(k)\flo{|k|}$ into $\Mail_{k}.\Fromnb$.
837: In the copy rule here, $i\in\{-1,0,1\}$ refers to the direction of the
838: sending colony as seen from the receiving colony.
839: The next argument is the location of origin in the sending colony, the
840: one following is the location to receive the information in the receiving
841: colony.
842: \begin{program}
843: subrule $\Copy(i,\F_{1}([a_{1}, a_{1} + n - 1]),
844: \F_{2}([a_{2}, a_{2} + n - 1]))$ \0{
845: \\ let $k=1.1i$ if $i\ne 0$ and $0.1\sign(a_{2}-a_{1})$ otherwise
846: \\ let $l=0.1\sign(k)$
847: \\ $\Mail_{k}.\Fromaddr := \Addr$
848: \\ \prl $\Mail_{k}.\Fromnb := -i$
849: \\ \prl $\Mail_{k}.\Info := \F_{1}$;
850: \\ repeat $2Q$ times \0{
851: \\ $\rul{Move-mail}$
852: \\ \prl cond \0{
853: \\ ? $\Addr\in[a_{2},a_{2}+n-1]$ and \2{
854: \\ $\Addr - a_{2} = \Mail_{l}.\Fromaddr - a_{1}$ and
855: $-i = \Mail_{l}.\Fromnb$
856: }
857: \\ ! $\F_{2}:=\Mail_{l}.\Info$
858: \\ }}}
859: \end{program}
860: \begin{figure}
861: \setlength{\unitlength}{0.2mm}
862: \[
863: \begin{picture}(600,150)
864: \put(0, 0){\framebox(600, 120){}}
865:
866: \put(300, 0){\line(0, 1){120}}
867:
868: \put(0,20){\line(1,0){600}}
869:
870: \put(610, 0){\makebox(0,20)[l]{$\var{Mail}$}}
871: \put(610, 40){\makebox(0,20)[l]{$\var{F}_{1}$}}
872: \put(610, 60){\makebox(0,20)[l]{$\var{F}_{2}$}}
873:
874: \put(30, 40){\framebox(140, 20){}}
875: \put(370, 60){\framebox(140, 20){}}
876:
877: \put(30, 125){\makebox(0,0)[b]{$a_{1}$}}
878: \put(170, 125){\makebox(0,0)[b]{$a_{1}+n$}}
879: \put(370, 125){\makebox(0,0)[b]{$a_{2}$}}
880: \put(510, 125){\makebox(0,0)[b]{$a_{2}+n$}}
881:
882: \multiput(20, 0)(60,0){10}{\makebox(20,20){$\to$}}
883: \end{picture}
884: \]
885: \caption{$\text{\rmfamily\slshape\mdseries Copy}(-1,
886: F_{1}([a_{1}, a_{1} + n - 1]),
887: F_{2}([a_{2}, a_{2} + n - 1]))$}
888: \end{figure}
889: \label{f.Copy}
890: \begin{remark}[Indirectly given locations]\label{r.indirect-copy}
891: The description $\F_{1}([a_{1},a_{2}])$ of a location can fit into a
892: single field $\F_{0}$ of some cell.
893: We will allow that some argument $\loc_{j}$ of the rule
894: $\Copy(i,\loc_{1},\loc_{2})$ is given by a field $\F_{0}$ this way.
895: This will be done only if $i=0$, i.e.~the copying proceeds within one
896: colony.
897: When executing the copy rule, it will be assumed that field $\F_{0}$ of
898: each cell of the colony contains the same information $\loc_{j}$.
899: Therefore the rule can be written just as above, except that
900: some of its parameters are read now from $\F_{0}$.
901: \end{remark}
902:
903:
904: \subsubsection {The evaluation rule} \label{sss.block-sim-eval}
905: The subrule $\Eval$ controls the track $\Cpt\xcpt\Cpt.\Input$.
906: The first steps of $\Eval$ write the interpreter, and the program of the
907: transition function to be simulated into appropriate locations on the
908: $\Cpt.\Input$ track, followed by writing the program $\rul{Trans-prog}_{2}$
909: found as $\Param_{1}$ after the present rules (see ~\eqref{e.Param}):%
910: \glo{prog@$\fld{-Prog}$}%
911: \glo{interpr@$\fld{-Interpr}$}%
912: \begin{program}
913: $\Write(\rul{Interpr}, \fld{-Interpr})$;
914: \\ $\Write(\Param_{1}, \fld{-Prog})$.
915: \proglb{pg.Prog-loc}
916: \end{program}
917: (If $\trans_{1}=\trans_{2}$ (self-simulation) is desired then write
918: $\Write(\Param_{0}, \fld{-Prog})$ in part ~\eqref{pg.Prog-loc} above, and
919: $\Param_{1}$, after it.)
920: Then $\Param_{2}, \ldots$ will be written after $\Param_{1}$.
921: Next, the rule $\Eval$ executes%
922: \glo{arg@$\fld{-Arg}_{m}$}%
923: \[
924: \Copy(0,\fld{-Retrieved}_{m}, \fld{-Arg}_{m})
925: \]
926: for $m\in\Nb-ind$ where $\fld{-Arg}_{m}$ are locations for the
927: arguments of the transition function on the $\Cpt.\Input$ track.
928: For initialization, the rule writes $*\cdots *$ to the $\Output$ track
929: and the rest of the cells (including the endcells) of the $\Cpt.\Input$
930: track, and 0's to the track $\Cpt\xcpt(\Cpt.\Input\cup\Cpt.\Output)$.
931: Then for a sufficient number of steps, the transition function $\univ$
932: will be applied to the $\Cpt$ track.
933: According to Theorem ~\ref{t.rule-lang} (Rule Language), the computation
934: finishes in
935: \[
936: \cns{interpr-coe}(|\rul{Trans-prog}_{2}|+1)^{2}\nm{\SS_{2}}
937: \]
938: steps, so this number of iterations is sufficient.
939:
940: \begin{remark}\label{r.target-addr}
941: If the transition function to be simulated is separable as defined in
942: ~\ref{sss.bandwidth} then what has been computed is not $\trans_{2}$ but
943: the auxiliary function $\trans_{2}^{(\bw)}$.
944: In this, the meaning of field $[3\bw, 4\bw - 1]$ is an address, of a target
945: field to be changed in the simulated cell.
946: The evaluation rule will broadcast this number into the field
947: $\fld{Target-addr}$\glo{target-addr@$\fld{Target-addr}$} of each cell of
948: the colony (it fits into a single field) to be used eventually in
949: $\rul{Update}$.
950: \end{remark}
951:
952: The subrule
953: \[
954: \rul{Update}
955: \]
956: copies the track $\Cpt.\Output$ into track $\Info$.
957:
958: \begin{remark}
959: When the transition rule $\trans_{2}$ to be simulated is separable (as in
960: ~\ref{sss.bandwidth}) then the appropriate locations of $\Cpt.\Output$ must
961: be copied to the appropriate locations of $\Info$.
962: Some of this copying uses locations defined in an indirect way as in
963: Remark ~\ref{r.indirect-copy}, using the field $\fld{Target-addr}$
964: mentioned in Remark ~\ref{r.target-addr}.
965: \end{remark}
966:
967:
968: \subsubsection{Summary in a theorem}
969: The encoding $\fg_{*}$ of a cell state $v$ of $M_{2}$ into a colony of
970: $M_{1}$ is defined as follows.
971: The string $v$ is written into $\fld{-Info}$.
972: The $\Cpt$ track and the mail tracks are set to all 1's.
973: Each $\Age$ field is set to 0.
974: For all $i$, the $\Addr$ field of cell $i$ of the colony is set to
975: $i$.
976:
977: The theorem below states the existence of the above simulation.
978: As a condition of this theorem, the parameters
979: \begin{equation}\label{e.sim-params}
980: \rul{Trans-prog}_{2}, \nm{\SS_{1}}, \nm{\SS_{2}}, Q, U
981: \end{equation}
982: will be restricted by the following inequalities.
983: \begin{description}
984:
985: \item[Cell Capacity Lower Bound]\index{lower@Lower Bound!Cell Capacity}
986: \[
987: \nm{\SS_{1}} \ge c_{1}\cei{\log U}+ |\univ| + c_{2}
988: \]
989: where $c_{1},c_{2}$ can be easily computed from the following
990: consideration.
991: What we really need is
992: $\nm{\SS_{1}} \ge |\Addr|+|\Age|+|\Info|+|\Mail|+|\Cpt|$ where the following
993: choices can be made:
994: \begin{align*}
995: |\Info| &= 2,
996: \\ |\Mail_{i}| &= |\Mail_{i}.\Fromaddr| + |\Mail_{i}.\Fromnb|
997: + |\Mail_{i}.\Info| = \cei{\log Q} + 2 + 2,
998: \\ |\Cpt| &= |\univ|,
999: \\ |\Addr| &= |\Age| = \cei{\log U}.
1000: \end{align*}
1001:
1002: \item[Colony Size Lower Bound]\index{lower@Lower Bound!Colony Size}
1003: \[
1004: Q \ge \cns{interpr-coe}(\nm{\SS_{2}} + |\rul{Trans-prog}_{2}|
1005: + \log U + 1).
1006: \]
1007: With the field sizes as agreed above, this provides sufficient space in
1008: the colony for information storage and computation.
1009:
1010: \item[Work Period Lower Bound]\index{lower@Lower Bound!Work Period}
1011: \[
1012: U \ge 3Q+\cns{interpr-coe}(|\rul{Trans-prog}_{2}| + 1)^{2}\nm{\SS_{2}}.
1013: \]
1014: With the field sizes above, this allows sufficient time for the above
1015: program to be carried out.
1016: \end{description}
1017:
1018: It is not difficult to find parameters satisfying the above inequalities
1019: since $\log Q\ll Q$.
1020:
1021: \begin{theorem}[Basic Block Simulation] \label{t.simp-sim}
1022: \index{theorem@Theorem!Basic Block Simulation}
1023: There are strings $\rul{Sim-prog}_{0}$\glo{sim-prog@$\rul{Sim-prog}$},
1024: $\rul{Sim-prog}_{1}$ such that the following holds.
1025: If $\rul{Trans-prog}_{2}$, $\nm{\SS_{1}}$, $\nm{\SS_{2}}$, $Q$ , $U$ satisfy
1026: the above inequalities then
1027: \begin{align*}
1028: \Param_{0} &= \rul{Sim-prog}_{1},\qq \Param_{1}=\rul{Trans-prog}_{2},
1029: \\ \Param_{2} &= \nm{\SS_{1}},\qq \Param_{3}=\nm{\SS_{2}},
1030: \\ \Param_{4} &= Q,\qq \Param_{5}=U
1031: \end{align*}
1032: is a rule program of a transition function $\trans_{1}$ such that
1033: $\CA(\trans_{1})$ has a block simulation of $\CA(\trans_{2},Q,U)$.
1034: Also, if $\nm{\SS_{1}},\nm{\SS_{2}},Q,U$ satisfy the above inequalities
1035: with $\SS_{1}=\SS_{2}$ and $\rul{Trans-prog}_{2}=\rul{Sim-prog}_{0}$ then
1036: \begin{align*}
1037: \Param_{0} &= \rul{Sim-prog}_{0},\qq \Param_{1}=\text{empty string},
1038: \\ \Param_{2} &= \nm{\SS_{1}},\qq \Param_{3}=\nm{\SS_{1}},
1039: \\ \Param_{4} &= Q,\qq \Param_{5}=U
1040: \end{align*}
1041: is a rule program of a transition function $\trans_{1}$ such that
1042: $\CA(\trans_{1})$ has a block simulation of $\CA(\trans_{1},Q,U)$.
1043: \end{theorem}
1044:
1045: The given construction is essentially the proof.
1046: Its complete formalization would yield $\var{Sim-prog}_{0}$ and
1047: $\var{Sim-prog}_{1}$ explicitly.
1048:
1049:
1050: