Substitution systems [from cellular automata]

Given a substitution system with rules in the form such as {1->{0}, 0->{0, 1}} used on page 889, the rules for a cellular automaton which emulates it are obtained from

SSToCA[rules_] := {{b, b, p[x_,_]} -> s[x], {_, s[v:0|1], p[x_,_]} -> p[v,x], {_, p[_,y_], _} -> s[y], {_, s[v:0|1], _m} -> m[v], {s[0|1], m[v:0|1], _} -> s[v], {b, m[v:0|1], _} -> r[v], {_, r[v:0|1], _} :> (Replace[v, rules] /. {{x_}->s[x], {x_,y_}->p[x,y]}), {_r, s[v:0|1], _} -> r[v], {_r, b, _} -> m[b], {s[0|1], m[b], _} -> b, {_, v_, _} -> v}

where specific values for cells can be obtained from

{b->0, s[0]->1, m[0]->2, p[0,0]->3, r[0]->4, p[0,1]->5, p[1,0]->6, r[1]->7, p[1,1]->8, m[1]->9, m[b]->10, s[1]->11}

An initial condition consisting of a single element with color i in the substitution system is represented by m[i] surrounded by b's in the cellular automaton. The specific definition given above works for neighbor-independent substitution systems whose elements have two possible colors, and in which each element is replaced at each step by at most two new elements.