math0003117/sim.tex
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: