Appendix A CAEditor

The design of our novel self-replicating automaton (subsection 3.4.3) posed a considerable technical challenge, mostly because hardly any existing software package is well suited to the task. Most "conventional" applications of cellular automata (e.g., the modelization of physical or chemical processes) assume that the transition rules governing the behavior of the automaton are known, or in any case can be determined independently of the automaton itself. The design of a self-replicating automaton, on the other hand, requires that the rules be determined so as to model a given process (self-replication).

In order to efficiently investigate different self-replication strategies, we needed a tool which would allow us to easily alter or redesign complex structures (e.g., loops) capable of complex behavior. After experimenting with existing design methods, we decided to develop our own software package, known as CAEditor. In this appendix we will describe the operation of CAEditor (section A.1), introduce the transition rules of some of the automata we discussed in the previous chapters (section A.2), and conclude with a few technical considerations and the instruction on how to obtain a copy of our software (section A.3).

A.1 The CAEditor Design Tool

In this section, we will introduce the main features of our software tool, starting with a general overview of the system (subsection A.1.1), through a basic tutorial on its use (subsection A.1.2), and finishing with a brief description of some more "advanced" features (subsection A.1.3 and subsection A.1.4).

A.1.1 Overview

The main screen of CAEditor (Fig. A-1) can be subdivided into four areas: the configuration area, the cellular space area, the state area, and the rule area.

The configuration area displays the basic parameters of the automaton: the number of states, the size of the cellular space, the size of neighborhood, the initial configuration, etc. (for more details, see the sample configuration file in section A.2). It also allows the user to modify these parameters and save/load a configuration to/from a file.

This area also contains a set of buttons allowing the user to load/save a set of transition rules from/to an external file (see the sample rule files in section A.2), as well as to reset the rules currently in use. Also, a button allows the user to quit the CAEditor program.

The CALL CA PLAYERbutton launches a subprogram (the CA player ) dedicated to the high-speed execution of the automata developed using the editor. Unlike the main program, which is optimized for design, the player is heavily optimized for execution: it accesses the same data structures as the main program, but exploits a high-performance engine to determine and display the next state of the elements.

The cellular space area is the heart of the system, and reflects the philosophy underlying our approach to the design of complex automata. Since the aim of our tool is to allow the user to find the rules allowing an automaton to behave according to a predetermined process (e.g., self-replication), we developed an approach based on an incremental definition of the transition rules. In order to clarify this concept, let us examine the contents of this area.

On the left, a display shows the present state of the automaton, that is, the state of its elements at a given iteration N. This display is passive: it cannot be modified. On the right, a second display shows the next state of the automaton, that is, the state of its elements at iteration N+1, given the current transition rules. Unlike the present state, the next state can be modified by the user. By imposing a given state (selected in the state area) to any of the elements in this display, the user can automatically add the corresponding rule to the transition table (for a more detailed description of this process, see the next subsection). The user can thus define the rules which implement a given process through incremental steps (iteration by iteration).

Between the two main displays, a set of buttons allow the user to advance to the next iteration, come back to the previous one, etc., as well as perform the standard graphical operations on the display (zoom in, zoom out, move in the four directions, etc.).

The state area displays the available states, and is used to select an "active" state which will be applied in order to find a given rule (as seen above).

Finally, the rule area is used to handle all the operations related to the insertion of a rule in the transition table. On the top left, a display shows the present state of the chosen element's neighborhood (9, as in this case, or 5), alongside the selected next state. Both displays are active, and can be manually altered by the user, who can set any one of the elements either to an available state, including the special state which represents the border of the cellular space (SET TO BORD ), or else to a state variable (SET TO VARIABLE, see subsection A.1.4 below). A set of four buttons allows the user to automatically or manually add the rotated versions of the transition rule.

Selecting a next state for a given neighborhood is, unfortunately, not the only operation required to add a rule to the transition table. In fact, before a rule can be added (ADD RULE), it is necessary to check that no conflictexists with previously-inserted rules, that is, that the addition will not invalidate one of the rules which have already been used in the development of the automaton. This is the function of the CHECKbutton. Whenever the user attempts to add a rule, the program will examine all the iterations leading to the present state to ensure that the selected neighborhood has never occurred in the past. If it finds that the rule is "safe" (that is, that it will not generate any conflict in past iterations), the rule is added to the transition table, and the displays in the cellular space area are updated. If, on the other hand, the program finds that the selected neighborhood has already occurred in earlier iterations, it will display the number of the first such iteration, as well as the coordinates of the conflict area. At this point, the user can either give up the attempt to add the new rule, or else access the conflicting iteration (GO TO FIRST CONFLICT).

Finally, the last two buttons in the rule area allow the user to access two subprograms: the rule editor(subsection A.1.3) and the variable editor, which allow the definition of state variables (subsection A.1.4).

A.1.2 Operation

The design of a new automaton begins with the definition of the global parameters (number of states, neighborhood, etc.). These parameters can be altered at a later stage, so it is not necessary to know the correct values at the beginning of the design: generally, it is better to begin with the lowest possible values for the number of states and especially the size of the array, which have a major impact on the amount of memory required by the program and on its speed of execution.

The next step is to define the initial configuration, that is, the state of the elements at iteration 0. This operation is performed by selecting a state and using the cursor in the cellular space area to assign it to the appropriate elements in the cellular space (it might be useful, depending on the size of the space, to zoom in on a particular area).

At this point, all the data required by the program to begin operating are present, and it is advisable to save the configuration to file.

Advancing to the next iteration, the cellular space area will display two identical copies of the initial configuration: since no transition rules have been specified, the program assumes that all elements will remain in the same state.

The user can now begin to modify the next state display to obtain the desired behavior: selecting a state and clicking on an element in the display (again, the zoom might be useful) will cause a new transition rule to appear in the rule area. An attempt to add the rule will then undoubtedly succeed, since no conflict can be generated (no other rule is present).

As soon as the rule is added to the transition table, the cellular space area is updated to reflect the change, displaying the updated present and next states. The user can then keep inserting additional rules, and the program will automatically assure that no conflict exists.

Once the first iteration has been completely defined, the user can advance to the next, add the rules necessary to implement the desired behavior, and so on. The user can thus iteratively define the states of the automaton until the transition table has been completely defined.

A.1.3 The Rule Editor

In certain cases, and notably if a set of rules is known to be correct, it might be desirable to insert the rules directly, without going through the graphical interface and the verification process.

To this end, we introduced a sub-program, known as the rule editor , which allows the list of transition rules to be accessed directly: the user can than add, remove or find rules directly from the list without going through the "standard" process.

The rule editor is a powerful but "dangerous" tool, as it allows rules to be added and discarded without considering the effect of such operations on the automaton: there is no guarantee that no conflicts will be generated or that all necessary rules will be preserved.

Also accessible through the rule editor is the cleanupfeature. When this process is activated, the program will analyze all the current transition rules and discard all those which are either covered (i.e., superseded by other rules) or redundant. In the process of designing of complex automata, such rules are anything but rare, often a consequence of run-time modifications to the behavior of the automaton.

A.1.4 State Variables

A peculiar feature of our tool is the use of state variables, that is, symbols (usually letters of the alphabet) used to represent a set of states. For example, suppose we define two variables

A={1,2}

and

B={1,3,4}

and assume that rules for a neighborhood of 5 are defined as

PS,N,E,S,W=NS

where PSis the present state of the element, N , E, S, and Ware the present states of the neighbors to the north, east, south, and west respectively, and NSis the next state of the element.
Then the rule

A,0,B,A,0=1

will expand into the following rules:

1,0,1,1,0=1
1,0,3,1,0=1
1,0,4,1,0=1
2,0,1,2,0=1
2,0,3,2,0=1
2,0,4,2,0=1

Variable are a useful tool for achieving a more compact representation of the transition rules of an automaton (for example, they are very helpful in designing loops and dynamic data storage in general), but should not be abused: a transition rule containing 4 different variables of 5 states each will expand to 5 4 =625 actual rules!

Sample Transition Tables

CAEditor requires two files for each automaton. The first is a configuration file, containing general information such as the number of states, the size of the cellular space, the size of the neighborhood (5 or 9), as well as a list of all the elements which are not in the quiescent state at iteration 0 (i.e., the initial configurationof the automaton).

As an example, Table A-1 shows the configuration file for our self-replicating loop (see Fig. 3.13). It defines the number of states (NST), the size of the cellular space ( CSXand CSY), and the neighborhood (HOOD). It also defines (BORD) whether the cellular space should be considered bounded (i.e., have borders) or toroidal.

NST=7; 
CSX=94; 
CSY=94; 
BORD=Y; 
HOOD=9; 
RULEFILE="ok.rules"; 
REPORTFILE="ok.report"; 
(41,50)=1; 
(42,42)=6; 
(42,43)=5; 
(42,44)=6; 
(42,45)=5; 
(42,46)=2; 
(42,47)=5; 
(42,48)=6; 
(42,49)=5; 
(42,50)=6; 
(42,51)=5; 
(43,41)=1; 
(43,42)=5; 
(43,43)=1; 
(43,44)=1; 
(43,45)=1; 
(43,46)=1; 
(43,47)=1; 
(43,48)=1; 
(43,49)=1; 
(43,50)=1; 
(43,51)=6; 
(44,42)=6; 
(44,43)=1; 
(44,50)=1; 
(44,51)=5; 
(45,42)=5; 
(45,43)=1; 
(45,50)=1; 
(45,51)=6; 
(46,42)=6; 
(46,43)=1; 
(46,50)=1; 
(46,51)=2; 
(47,42)=2; 
(47,43)=1; 
(47,50)=1; 
(47,51)=6; 
(48,42)=6; 
(48,43)=1; 
(48,50)=1; 
(48,51)=5; 
(49,42)=5; 
(49,43)=1; 
(49,50)=1; 
(49,51)=6; 
(50,42)=6; 
(50,43)=1; 
(50,44)=1; 
(50,45)=1; 
(50,46)=1; 
(50,47)=1; 
(50,48)=1; 
(50,49)=1; 
(50,50)=1; 
(50,51)=5; 
(50,52)=1; 
(51,42)=5; 
(51,43)=6; 
(51,44)=5; 
(51,45)=6; 
(51,46)=5; 
(51,47)=2; 
(51,48)=5; 
(51,49)=6; 
(51,50)=5; 
(51,51)=6;
(52,43)=1; 
Table A-1: The configuration file for our self-replicating loop.

The initial configuration is specified by a set of directives in the form


(X,Y)=S;

where Xis the horizontal coordinate of the element in the cellular space, Yis its vertical coordinate, and S is its initial state.

The configuration file also contains the name of the rule file, a file containing the transition rules which govern the behavior of the automaton (the two files are kept separate to allow multiple initial configurations for a single set of transition rules).

As an example of a typical rule file, Table A-2 shows the transition rules for Langton's loop 39.

0,0,0,0,1=2; 
0,0,0,0,6=3; 
0,0,0,0,7=1; 
0,0,0,1,1=2; 
0,0,0,1,2=2; 
0,0,0,1,3=2; 
0,0,0,2,1=2; 
0,0,0,2,6=2; 
0,0,0,2,7=2; 
0,0,0,5,2=5; 
0,0,0,6,2=2; 
0,0,0,7,2=2; 
0,0,1,0,2=2; 
0,0,2,1,2=5; 
0,0,2,3,2=2; 
0,0,5,2,2=2; 
0,1,2,3,2=1; 
0,1,2,4,2=1; 
0,1,2,5,2=5; 
0,1,2,6,2=1; 
0,1,2,7,2=1; 
0,1,2,7,5=1; 
0,1,4,2,2=1; 
0,1,4,3,2=1; 
0,1,4,4,2=1; 
0,1,4,7,2=1; 
0,1,6,2,5=1; 
0,1,7,2,2=1; 
0,1,7,2,5=5; 
0,1,7,5,2=1; 
0,1,7,6,2=1; 
0,1,7,7,2=1; 
0,2,5,2,7=1; 
1,0,0,0,7=7; 
1,0,0,2,4=4; 
1,0,0,2,7=7; 
1,0,1,2,4=4; 
1,0,1,2,7=7; 
1,0,2,0,2=6; 
1,0,2,2,4=4; 
1,0,2,2,6=3; 
1,0,2,2,7=7; 
1,0,2,3,2=7; 
1,0,2,4,2=4; 
1,0,2,6,2=6; 
1,0,2,6,4=4; 
1,0,2,6,7=7; 
1,0,2,7,1=0; 
1,0,2,7,2=7; 
1,0,5,4,2=7; 
1,1,1,2,4=4; 
1,1,1,2,7=7; 
1,1,1,5,2=2; 
1,1,2,2,4=4; 
1,1,2,2,7=7; 
1,1,2,4,2=4; 
1,1,2,7,2=7; 
1,2,2,2,4=4; 
1,2,2,2,7=7; 
1,2,2,4,3=4; 
1,2,2,5,4=7; 
1,2,3,2,4=4; 
1,2,3,2,7=7; 
1,2,4,2,5=5; 
1,2,4,2,6=7; 
1,2,5,2,7=5; 
2,0,0,0,7=1; 
2,0,0,2,5=0; 
2,0,0,3,2=6; 
2,0,0,4,2=3; 
2,0,0,5,1=7; 
2,0,0,5,7=5; 
2,0,2,0,7=3; 
2,0,2,3,2=1; 
2,0,2,5,2=0; 
2,0,3,2,1=6; 
2,0,3,2,2=6; 
2,0,5,5,2=1; 
2,0,5,7,2=5; 
2,1,1,2,6=1; 
3,0,0,0,2=2; 
3,0,0,0,4=1; 
3,0,0,0,7=6; 
3,0,0,4,2=1; 
3,0,0,6,2=2; 
3,0,1,0,2=1; 
3,0,1,2,2=0; 
3,0,2,5,1=1; 
4,0,1,1,2=0; 
4,0,1,2,2=0; 
4,0,1,2,5=0; 
4,0,2,1,2=0; 
4,0,2,2,2=1; 
4,0,2,3,2=6; 
4,0,2,5,2=0; 
4,0,3,2,2=1; 
5,0,0,0,2=2; 
5,0,0,2,3=2; 
5,0,0,2,7=2; 
5,0,0,5,2=0; 
5,0,2,0,2=2; 
5,0,2,1,2=2; 
5,0,2,1,5=2; 
5,0,2,2,2=0; 
5,0,2,2,4=4; 
5,0,2,7,2=2; 
5,1,2,1,2=2; 
5,1,2,2,2=0; 
5,1,2,4,2=2; 
5,1,2,7,2=2; 
6,0,0,0,1=1; 
6,0,0,0,2=1; 
6,0,2,1,2=0; 
6,1,2,1,2=5; 
6,1,2,1,3=1; 
6,1,2,2,2=5; 
7,0,1,1,2=0; 
7,0,1,2,2=0; 
7,0,1,2,5=0; 
7,0,2,1,2=0; 
7,0,2,2,2=1; 
7,0,2,2,5=1; 
7,0,2,3,2=1; 
7,0,2,5,2=5; 
7,0,2,7,2=0; 
Table A-2: The 125 transition rules for Langton's Loop. [PS,N,E,S,W=NS;]

The transition rules for a neighborhood of 5 are in the form

PS,N,E,S,W=NS;

where PSis the present state of the element, N , E, S, and Ware the present states of the neighbors to the north, east, south, and west respectively, and NSis the next state of the element.

Similarly, the transition rules for a neighborhood of 9 are in the form


PS,N,NE,E,SE,S,SW,W,NW=NS;

where PSis the present state of the element, N, NE, E, SE, S, SW, W, and NWare the present states of the neighbors to the north, northeast, east, southeast, south, southwest, west, and northwest respectively, and NS is the next state.

Finally, the configuration file specifies a report file , used by the program to print out information concerning its operation, such as a report of its activities, as well as eventual error messages.

Table A-3 shows the transition rules for our novel self-replicating automaton (subsection 3.4.3), including four variables associated with the data states, while Table A-4 lists the 330 additional rules required by the embarked program to write "LSL" in the interior of the loop (Subsection 3.4.5).

VAR a = {5,6}; 
VAR b = {5,6}; 
VAR c = {5,6}; 
VAR d = {5,6}; 
2,1,b,0,0,0,a,1,1=a; 
a,0,0,0,b,1,1,1,2=b; 
b,0,0,1,c,1,1,1,a=c; 
b,0,1,0,c,d,1,1,a=c; 
b,1,0,0,0,0,c,1,a=c; 
c,a,b,0,0,0,d,1,1=d; 
b,1,a,0,0,0,2,1,1=2; 
b,0,0,0,c,1,1,1,a=c; 
c,a,b,0,0,0,2,1,1=2; 
b,1,0,0,0,0,2,1,a=2; 
2,c,b,0,0,0,a,1,1=a; 
b,0,1,0,c,2,1,1,a=c; 
b,a,2,0,0,0,c,1,1=c; 
b,0,1,0,2,c,1,1,a=2; 
2,1,0,0,0,0,b,1,a=b; 
0,0,0,0,0,0,2,a,1=2; 
b,0,0,1,2,1,1,1,a=2; 
b,2,c,0,0,0,a,1,1=a; 
2,0,1,2,b,c,1,1,a=b; 
a,1,2,0,0,0,b,1,2=b; 
0,0,0,0,0,2,2,0,0=2; 
2,0,0,0,0,0,a,2,2=0; 
2,0,0,1,b,1,1,1,a=b; 
a,0,1,0,b,c,1,1,2=b; 
0,0,0,0,0,0,0,1,2=2; 
a,0,0,1,b,1,1,1,2=b; 
2,0,0,0,0,0,0,1,2=0; 
0,1,0,0,0,0,2,a,1=2; 
2,1,0,0,0,0,a,2,1=0; 
0,1,0,0,0,0,2,1,1=2; 
2,1,0,0,0,0,0,1,1=0; 
0,2,2,0,0,0,2,1,1=2; 
0,2,0,0,0,0,2,1,1=3; 
0,0,0,0,0,3,3,0,0=3; 
3,0,0,0,0,0,0,1,3=0; 
3,0,0,0,3,0,1,0,0=1; 
0,0,0,0,0,0,0,1,3=3; 
0,3,3,0,0,0,2,1,1=2; 
0,3,0,0,0,0,2,1,1=2; 
3,0,3,2,1,0,0,0,3=2; 
3,0,0,3,2,0,0,0,0=1; 
0,3,2,1,0,0,0,0,0=3; 
2,0,3,2,1,0,0,0,3=3; 
1,3,2,0,1,0,0,0,2=3; 
3,0,0,0,2,3,3,1,0=0; 
2,0,0,0,0,1,3,3,3=0; 
3,0,3,2,3,0,3,0,1=0; 
0,3,3,1,0,0,0,0,3=3; 
3,3,2,0,1,0,0,3,3=1; 
3,0,1,1,0,0,0,0,3=1; 
3,1,0,1,3,0,0,0,0=0; 
0,0,0,0,2,1,1,0,0=2; 
0,0,0,0,2,1,0,1,0=2; 
0,0,2,0,1,1,0,0,1=2; 
0,1,2,1,1,1,0,0,0=2; 
2,0,0,0,0,1,2,1,0=0; 
2,1,0,1,1,1,0,0,0=0; 
0,1,1,1,0,3,3,0,0=1; 
0,1,1,1,1,1,0,0,2=3; 
1,0,0,1,1,1,0,2,1=3; 
1,3,1,0,0,0,1,0,3=3; 
1,0,1,0,0,0,1,3,3=3; 
3,1,3,1,1,1,0,0,0=0; 
3,0,0,1,1,1,3,0,1=1; 
0,3,0,0,0,0,2,1,3=3; 
3,1,3,0,0,2,1,0,0=1; 
2,3,0,0,0,0,0,1,1=0; 
0,1,0,0,0,0,3,1,3=2; 
3,3,0,0,0,0,0,1,1=0; 
3,0,1,0,0,3,1,0,1=1; 
0,1,3,0,0,0,0,1,1=3; 
3,1,0,0,0,0,0,1,1=0; 
3,1,0,0,0,0,2,1,1=2; 
2,1,3,0,0,0,0,1,1=3;
3,1,2,0,0,0,0,1,1=0; 
2,1,0,0,0,0,3,1,1=0; 
0,0,a,b,1,1,3,0,0=3; 
a,0,2,1,b,1,3,0,0=2; 
b,2,1,1,c,0,1,3,a=a; 
b,a,1,1,c,0,1,3,2=2; 
3,0,2,a,1,1,0,0,0=2; 
2,0,b,1,a,1,3,0,0=b; 
1,2,a,b,0,0,1,0,3=2; 
0,0,2,2,1,1,0,0,0=2; 
2,0,a,2,2,1,0,0,0=a; 
a,0,b,1,2,2,2,0,0=b; 
a,2,2,1,1,1,b,0,0=2; 
2,b,1,1,c,0,2,2,a=a; 
2,a,2,b,0,0,1,0,2=1; 
2,0,a,1,1,1,0,0,0=a; 
a,0,b,a,1,1,2,0,0=b; 
a,c,1,1,2,0,1,a,b=b; 
b,0,c,1,a,1,a,0,0=c; 
b,0,c,b,1,1,a,0,0=c; 
a,c,1,1,d,0,1,a,b=b; 
2,0,a,1,1,1,3,0,0=a; 
2,0,a,1,1,3,0,0,0=a; 
3,0,a,1,1,3,0,0,0=a; 
a,0,b,1,1,1,3,0,0=b; 
b,0,2,1,a,1,a,0,0=3; 
b,2,1,1,c,0,1,b,a=a; 
b,0,3,c,1,1,a,0,0=3; 
a,c,1,1,b,0,1,a,3=2; 
3,0,a,1,b,1,b,0,0=a; 
a,0,b,1,1,c,3,0,0=b; 
b,0,3,1,1,1,a,0,0=3; 
2,c,1,1,a,0,1,3,b=b; 
a,0,b,1,2,1,3,0,0=b; 
3,0,b,2,1,1,a,0,0=b; 
3,0,b,1,1,1,a,0,0=b; 
a,0,b,a,1,1,3,0,0=b; 
2,0,a,1,1,0,0,0,0=a; 
a,0,b,1,1,0,2,0,0=b; 
2,0,a,1,0,1,0,0,0=a; 
0,a,1,1,0,0,1,0,2=2; 
a,0,b,1,2,1,0,0,0=b; 
2,b,1,1,0,0,1,0,a=a; 
2,1,1,1,0,0,0,1,a=a; 
c,0,3,1,1,a,b,0,0=2; 
0,1,0,0,0,a,3,1,1=4; 
3,1,0,0,a,1,3,1,1=a; 
a,0,0,0,b,1,1,3,3=b; 
3,1,3,a,1,0,0,1,1=1; 
1,3,1,4,c,1,1,a,b=c; 
a,1,4,0,b,1,1,1,1=b; 
b,4,0,0,c,1,1,1,a=c; 
1,b,1,0,4,b,1,a,3=4; 
4,1,0,0,0,b,a,1,1=0; 
3,0,b,4,b,1,a,0,0=b; 
4,a,1,0,0,a,b,3,b=0; 
b,b,4,0,c,1,1,a,3=c; 
a,0,b,1,4,a,3,0,0=0; 
1,c,1,0,0,0,4,a,b=4; 
3,0,b,c,1,1,a,0,0=b; 
a,0,0,0,b,1,3,0,0=b; 
b,0,0,0,c,1,1,3,a=c; 
a,0,b,1,4,0,0,0,0=0; 
4,b,1,0,0,0,0,0,a=0; 
0,0,0,0,a,3,0,0,0=1; 
a,1,b,c,1,1,3,0,0=b; 
b,0,0,0,c,1,a,0,1=c; 
b,1,c,d,1,1,a,0,0=c; 
1,3,1,0,0,0,4,a,b=4; 
b,0,c,1,1,4,a,0,0=c; 
b,0,c,b,1,4,a,0,0=1; 
1,c,b,a,0,0,4,a,b=0; 
a,0,2,1,b,0,1,0,0=2; 
b,2,1,1,c,0,0,1,a=a; 
1,2,a,b,0,0,0,0,0=2; 
2,a,2,b,0,0,0,0,2=1; 
2,0,2,0,1,0,0,0,0=1; 
1,2,1,0,0,0,2,0,0=3; 
2,0,3,3,2,0,0,0,0=3; 
2,3,3,0,0,0,0,0,2=3; 
3,0,1,0,0,0,2,2,3=1; 
3,0,0,1,3,2,2,0,0=0; 
0,0,3,3,2,0,0,0,0=3; 
2,3,3,0,0,0,0,0,0=3; 
3,0,1,0,0,0,2,0,3=1; 
3,0,0,1,3,2,0,0,0=0; 
2,0,0,1,1,0,0,0,0=0; 
2,0,1,1,0,0,1,0,2=0; 
2,0,a,1,b,0,1,0,0=a; 
b,a,1,1,c,0,0,1,2=2; 
a,0,b,1,2,0,1,0,0=b; 
2,c,1,1,a,0,0,1,b=b; 
a,c,1,1,2,0,0,1,b=b; 
1,0,1,0,0,0,0,0,0=4; 
2,0,0,1,1,4,0,0,0=0; 
4,0,1,0,0,0,0,0,0=0; 
1,0,1,0,0,0,4,0,0=4; 
0,0,a,b,1,4,0,0,0=1; 
1,a,b,c,0,0,4,0,0=0; 
2,0,a,2,1,4,0,0,0=0; 
1,a,b,2,0,0,4,0,0=0; 
Table A-3: The 179 transition rules (including variables) for our novel automaton. [PS,N,NE,E,SE,S,SW,W,NW=NS]
VAR a = {5,6,7,8,9}; 
VAR b = {5,6,7,8,9}; 
VAR c = {5,6,7,8,9}; 
VAR d = {5,6,7,8,9}; 
1,5,7,2,1,0,0,1,1=5; 
7,0,0,0,2,5,1,5,5=2;
2,0,0,0,7,1,5,1,7=7; 
1,2,7,5,1,0,0,0,5=5; 
5,7,2,7,1,0,0,1,1=1; 
7,0,0,0,5,5,1,1,2=5; 
5,0,0,0,6,1,5,1,7=6; 
1,5,6,6,1,0,0,0,5=6; 
0,1,5,6,0,0,0,0,0=5; 
0,5,6,1,0,0,0,0,5=6; 
0,0,5,6,0,0,0,0,0=5; 
0,5,6,0,0,0,0,0,5=6; 
6,0,0,0,7,1,6,5,6=7; 
6,6,7,6,1,0,6,5,5=7; 
6,0,0,0,7,6,5,1,6=7; 
7,0,0,0,6,1,6,5,6=6; 
7,7,6,6,1,0,6,5,5=6; 
6,5,7,1,0,0,6,5,5=7; 
6,0,0,0,9,1,6,5,6=9;
7,5,6,1,0,0,6,5,5=6; 
6,5,7,0,0,0,6,5,5=7; 
7,5,6,0,0,0,6,5,5=6; 
6,0,0,0,9,6,5,1,6=9; 
6,6,9,6,1,0,6,5,5=9; 
9,0,0,0,6,1,6,5,6=6; 
9,0,0,0,6,9,5,1,6=6; 
6,5,9,1,0,0,6,5,5=9;
9,5,6,1,0,0,6,5,5=6; 
6,5,9,0,0,0,6,5,5=9; 
9,5,6,0,0,0,6,5,5=6; 
2,0,0,0,6,1,6,5,6=6; 
2,0,0,0,6,6,5,1,6=6; 
9,9,6,2,1,0,6,5,5=6; 
6,0,0,0,2,1,9,5,9=2; 
6,0,0,0,2,6,5,1,9=2; 
6,5,7,0,0,0,0,5,5=7; 
6,5,7,0,0,0,0,0,5=7; 
5,0,5,7,0,0,0,0,0=7; 
0,5,7,0,0,0,0,0,5=7; 
0,6,0,0,0,0,0,0,7=7; 
7,5,6,0,0,0,0,5,5=6; 
6,5,9,0,0,7,6,5,5=9; 
7,6,0,0,0,0,0,7,6=6; 
7,0,5,6,7,0,0,0,0=5; 
7,5,6,7,0,0,0,0,7=5; 
0,6,7,0,0,0,0,0,7=5; 
0,6,0,0,0,0,0,0,5=5; 
9,5,6,0,0,6,6,5,5=6; 
6,5,9,0,6,5,5,5,5=9; 
6,0,0,0,8,1,6,5,6=8; 
6,6,8,6,1,0,6,5,5=8; 
6,0,0,0,8,6,5,1,6=8; 
8,0,0,0,6,1,6,5,6=6; 
0,0,0,0,0,0,5,5,6=6; 
6,6,0,0,0,5,5,5,9=9; 
9,5,6,0,6,5,5,5,5=6; 
6,5,8,1,0,0,6,5,5=8; 
8,0,0,0,6,8,5,1,6=6; 
8,8,6,6,1,0,6,5,5=6; 
6,5,8,0,0,0,6,5,5=8; 
8,5,6,1,0,0,6,5,5=6; 
8,5,6,0,0,0,6,5,5=6; 
6,0,0,0,0,0,5,5,9=9; 
9,6,0,0,6,5,5,5,6=6; 
9,0,0,0,0,5,5,5,6=6; 
5,9,0,0,0,0,0,0,5=7; 
0,0,0,0,0,0,5,5,9=9; 
6,5,7,0,0,6,6,5,5=7; 
9,0,0,0,0,0,7,5,6=6; 
0,9,0,0,0,0,0,0,7=6; 
7,6,9,0,0,0,0,0,5=0; 
7,5,6,0,0,6,6,5,5=6; 
6,5,7,0,6,5,5,5,5=7; 
0,0,0,0,0,0,6,0,6=6; 
7,5,6,0,6,5,5,5,5=6; 
6,6,0,0,6,5,5,5,7=7; 
6,6,6,0,0,0,0,0,0=5; 
6,0,0,0,6,0,5,5,7=7; 
7,6,0,0,6,5,5,5,6=6; 
6,5,7,0,0,7,6,5,5=7; 
6,0,0,0,6,5,0,5,7=7; 
7,0,0,0,6,0,5,5,6=6; 
7,0,0,0,6,5,0,5,6=6; 
6,0,0,0,6,5,5,0,7=7; 
6,5,8,0,0,7,6,5,5=8; 
7,0,0,0,6,5,5,0,6=6; 
6,0,0,0,0,5,5,5,7=7; 
6,6,9,2,1,0,6,5,5=9; 
9,0,0,0,2,1,6,5,6=2; 
9,0,0,0,2,9,5,1,6=2; 
2,0,0,0,6,1,9,5,9=6; 
9,9,2,6,1,0,6,5,5=6; 
2,0,0,0,6,6,5,1,9=6; 
7,0,0,0,6,5,5,5,6=6; 
6,0,0,0,0,0,5,5,7=7; 
0,0,0,0,0,0,5,5,7=7; 
5,7,0,0,0,0,0,0,5=7; 
0,0,0,0,0,0,7,6,0=7; 
7,0,0,0,0,5,5,5,6=6; 
7,0,0,0,0,7,6,6,0=6; 
6,0,0,7,6,5,5,5,7=7; 
7,7,0,0,0,0,7,5,6=5; 
7,6,7,0,0,0,0,0,5=5; 
0,0,0,0,0,0,7,6,7=5; 
0,0,0,0,0,0,5,6,0=5; 
6,0,6,5,5,5,5,5,7=7; 
7,0,0,6,6,5,5,5,6=6; 
6,5,8,0,6,5,5,5,5=8; 
8,5,6,0,0,6,6,5,5=6; 
6,6,0,0,6,5,5,5,8=8; 
8,5,6,0,6,5,5,5,5=6; 
8,6,0,0,6,5,5,5,6=6; 
6,0,0,0,6,0,5,5,8=8; 
6,0,0,0,6,5,0,5,8=8; 
8,0,0,0,6,0,5,5,6=6; 
8,0,0,0,6,5,0,5,6=6; 
7,0,6,5,5,5,5,5,6=6; 
0,0,0,0,5,5,6,0,0=6; 
6,0,0,5,5,5,7,6,0=7; 
6,0,0,0,6,5,5,0,8=8; 
6,5,8,0,0,6,6,5,5=8; 
6,0,0,7,6,5,5,5,8=8; 
6,0,0,0,5,5,7,0,0=7; 
7,0,6,5,5,5,6,6,0=6; 
8,0,0,0,6,5,5,0,6=6; 
0,0,0,0,5,5,7,0,0=7; 
5,0,0,0,0,0,5,7,0=7; 
0,0,0,0,7,6,0,0,0=7; 
7,0,0,5,5,5,6,0,0=6; 
6,0,6,5,5,5,5,5,8=8; 
8,0,0,6,6,5,5,5,6=6; 
0,0,0,0,7,6,7,0,0=5; 
7,0,0,0,7,5,6,7,0=5; 
7,0,0,0,0,0,5,6,7=5; 
7,0,0,7,6,6,0,0,0=6; 
8,0,6,5,5,5,5,5,6=6; 
6,7,6,5,5,5,8,6,0=8; 
6,5,5,5,5,5,8,0,6=8; 
8,6,6,5,5,5,6,6,0=6; 
0,0,0,0,5,6,0,0,0=5; 
6,0,0,0,8,1,6,5,2=8; 
6,0,0,0,8,6,5,1,2=8; 
6,0,0,0,8,5,1,1,2=8; 
6,5,5,5,8,6,0,0,0=8; 
0,0,5,5,6,0,0,0,0=6; 
8,5,5,5,5,5,6,0,6=6; 
6,5,9,0,0,6,6,5,5=9; 
6,0,5,5,8,0,0,0,0=8; 
6,0,0,6,6,5,5,5,8=8; 
6,6,0,0,6,5,5,5,9=9; 
8,5,5,5,6,6,0,0,6=6; 
6,0,0,0,6,0,5,5,9=9; 
0,0,5,5,8,0,0,0,0=8; 
6,5,8,0,0,9,6,5,5=8; 
8,5,5,5,6,0,0,0,0=6; 
5,0,0,0,5,6,8,0,0=8; 
6,6,6,5,5,5,8,6,0=8; 
6,0,0,0,6,5,0,5,9=9; 
9,0,0,0,6,0,5,5,6=6; 
8,0,5,5,6,0,0,0,0=6; 
6,0,0,0,6,5,5,0,9=9; 
8,0,0,0,5,6,6,0,0=6; 
9,0,0,0,6,5,0,5,6=6; 
0,0,0,0,0,5,5,8,0=5; 
6,0,0,0,5,1,6,5,6=5; 
6,5,5,5,8,6,0,0,6=8; 
6,0,0,6,6,5,5,5,9=9; 
9,0,0,0,6,5,5,0,6=6; 
6,0,0,0,5,6,5,1,6=5; 
6,6,5,5,1,0,6,5,5=5; 
6,6,5,5,8,0,0,0,6=8; 
9,0,0,6,6,5,5,5,6=6; 
6,0,6,5,5,5,5,5,9=9; 
6,5,5,1,0,0,6,5,5=5; 
6,5,5,0,0,0,6,5,5=0; 
5,0,5,5,6,6,5,0,0=0; 
5,5,5,1,0,0,6,5,5=0; 
5,1,5,5,5,6,5,0,0=0; 
6,0,6,5,8,0,0,0,0=8; 
6,6,6,5,5,5,9,6,0=9; 
8,6,5,5,6,0,0,0,6=6; 
9,0,6,5,5,5,5,5,6=6; 
6,0,0,0,0,0,6,5,5=0; 
6,0,6,5,5,6,8,0,0=8; 
6,0,0,9,6,5,5,5,8=8; 
6,5,5,5,5,5,9,0,6=9; 
9,6,6,5,5,5,6,6,0=6; 
8,0,6,5,6,0,0,0,0=6; 
6,5,0,0,0,0,6,5,5=0; 
6,5,5,5,9,6,0,0,6=9; 
6,0,6,5,5,5,8,0,0=8; 
8,0,6,5,5,6,6,0,0=6; 
9,5,5,5,5,5,6,0,6=6; 
8,0,6,5,5,5,6,0,0=6; 
9,5,5,5,6,6,0,0,6=6; 
6,9,6,5,5,5,8,6,0=8; 
6,6,5,5,9,0,0,0,6=9; 
6,0,0,5,5,5,8,0,0=8; 
6,0,6,5,9,0,0,0,0=9; 
9,6,5,5,6,0,0,0,6=6; 
6,0,0,0,5,5,8,0,0=8; 
6,0,6,5,5,6,9,0,0=9; 
9,0,6,5,6,0,0,0,0=6; 
0,0,0,0,5,5,8,0,0=8; 
6,0,6,5,5,5,9,0,0=9; 
6,9,5,5,8,0,0,0,6=8; 
9,0,6,5,5,6,6,0,0=6; 
8,0,0,5,5,5,6,0,0=6; 
8,0,0,0,5,5,6,0,0=6; 
9,0,6,5,5,5,6,0,0=6; 
5,0,0,0,0,0,5,6,8=8; 
8,0,0,0,0,0,5,6,6=6; 
0,8,0,0,0,0,0,5,5=5; 
6,5,0,0,0,7,6,5,5=0; 
6,5,0,0,6,5,5,5,5=0; 
6,0,6,6,5,5,9,0,0=9; 
6,0,0,0,6,5,9,0,0=9; 
9,0,6,6,5,5,6,0,0=6; 
6,0,0,0,6,5,5,5,0=0; 
6,0,0,0,6,0,5,5,0=0; 
6,0,0,6,6,5,5,5,7=7; 
6,0,0,0,6,5,5,6,9=9; 
9,0,0,0,6,5,6,0,0=6; 
9,0,0,0,6,5,5,6,6=6; 
6,0,0,0,6,5,5,5,9=9; 
6,0,6,9,5,5,8,0,0=8; 
6,0,0,0,6,5,0,5,0=0; 
6,6,6,5,5,5,7,6,0=7; 
6,0,0,0,6,5,5,0,0=0; 
6,0,0,0,6,5,8,0,0=8; 
6,0,0,0,0,5,5,5,9=9; 
8,0,6,6,5,5,6,0,0=6; 
9,0,0,0,6,5,5,5,6=6; 
6,0,0,0,6,5,5,6,8=8; 
8,0,0,0,6,5,6,0,0=6; 
8,0,0,0,6,5,5,6,6=6; 
7,6,6,5,5,5,6,6,0=6; 
6,5,5,5,5,5,7,0,6=7; 
6,0,0,0,6,5,5,5,8=8; 
6,0,0,7,6,5,5,5,0=0; 
6,0,6,5,5,5,5,5,0=0; 
6,5,5,5,7,6,0,0,6=7; 
8,0,0,0,6,5,5,5,6=6; 
7,5,5,5,5,5,6,0,6=6; 
6,6,5,5,7,0,0,0,6=7; 
7,5,5,5,6,6,0,0,6=6; 
6,7,6,5,5,5,0,0,0=0; 
6,0,0,0,6,6,0,5,8=8; 
6,0,6,5,7,0,0,0,0=7; 
7,6,5,5,6,0,0,0,6=6; 
6,5,5,5,5,5,0,0,6=0; 
6,0,0,0,0,0,5,0,8=8; 
6,0,6,5,5,6,7,0,0=7; 
7,0,6,5,6,0,0,0,0=6; 
6,5,5,5,0,0,0,0,6=0; 
0,0,0,0,0,0,5,5,8=8; 
8,0,0,0,0,5,5,0,6=6; 
5,6,8,0,0,0,0,0,5=8; 
8,0,0,0,0,0,5,5,6=6; 
8,6,6,0,0,0,0,0,5=6; 
0,0,5,8,0,0,0,0,0=5; 
6,0,6,5,5,5,7,0,0=7; 
7,0,6,5,5,6,6,0,0=6; 
6,7,5,5,0,0,0,0,6=0; 
6,0,6,5,0,0,0,0,0=0; 
7,0,6,5,5,5,6,0,0=6; 
6,0,6,5,5,0,0,0,0=0; 
6,0,6,5,5,5,0,0,0=0; 
6,0,6,6,5,5,7,0,0=7; 
6,0,0,0,6,5,7,0,0=7; 
7,0,6,6,5,5,6,0,0=6; 
7,0,0,0,6,5,6,0,0=6; 
6,0,0,0,6,5,5,6,7=7; 
7,0,0,0,6,6,0,0,0=0; 
6,7,6,7,5,5,0,0,0=0; 
7,0,0,0,6,5,5,6,6=6; 
6,0,0,0,6,5,5,5,7=7; 
6,0,0,0,6,5,0,0,0=0; 
6,0,0,0,6,6,5,0,7=7; 
6,0,0,0,0,0,6,5,7=7; 
7,0,0,0,6,6,5,0,6=6; 
7,0,0,0,0,0,6,5,6=6; 
6,6,7,0,0,0,6,5,5=7; 
7,6,6,0,0,0,6,5,5=6; 
6,0,0,0,6,7,5,0,0=0; 
6,0,0,0,0,0,6,5,0=0; 
6,0,0,0,0,0,5,5,0=0; 
6,0,0,0,0,5,5,5,0=0; 
5,5,5,5,1,0,5,5,5=7; 
5,0,0,0,2,1,7,5,5=2; 
5,0,0,0,2,7,5,1,5=2; 
2,0,0,0,5,1,7,5,5=5; 
2,0,0,0,5,7,5,1,5=5; 
a,0,0,0,b,1,7,5,c=b; 
a,0,0,0,b,7,5,1,c=b; 
7,0,0,0,2,1,7,5,5=2; 
7,0,0,0,2,7,5,1,5=2; 
2,0,0,0,7,1,7,5,7=7; 
2,0,0,0,7,7,5,1,7=7; 
7,0,0,0,5,1,7,5,2=5; 
7,0,0,0,5,7,5,1,2=5; 
6,0,0,0,2,1,7,5,9=2; 
6,0,0,0,2,7,5,1,9=2; 
2,0,0,0,6,1,7,5,6=6; 
2,0,0,0,6,7,5,1,6=6; 
9,0,0,0,2,1,7,5,6=2; 
9,0,0,0,2,7,5,1,6=2; 
2,0,0,0,6,1,7,5,9=6; 
2,0,0,0,6,7,5,1,9=6; 
6,0,0,0,8,1,7,5,2=8; 
6,0,0,0,8,7,5,1,2=8; 
6,0,0,0,7,5,1,1,6=7; 
7,0,0,0,6,5,1,1,6=6; 
6,0,0,0,9,5,1,1,6=9; 
9,0,0,0,6,5,1,1,6=6; 
6,0,0,0,2,5,1,1,9=2; 
2,0,0,0,6,5,1,1,6=6; 
6,0,0,0,8,5,1,1,6=8; 
8,0,0,0,6,5,1,1,6=6; 
9,0,0,0,2,5,1,1,6=2; 
2,0,0,0,6,5,1,1,9=6; 
6,0,0,0,5,5,1,1,6=5; 
5,0,0,0,2,5,1,1,5=2; 
2,0,0,0,5,5,1,1,5=5; 
7,0,0,0,2,5,1,1,5=2; 
2,0,0,0,7,5,1,1,7=7; 
Table A-4: The 330 additional rules required for the embarked program. [PS,N,NE,E,SE,S,SW,W,NW=NS]

Table A-5 shows the rules required by the first version of our membrane builder (subsection 3.5.1), while in Table A-6 we introduce the transition rules of the augmented version (subsection 4.3.3).

Note the considerable number of states required by this automaton (23, including the quiescent state), as well as the important increase in the number of rules compared to the first version (207 versus 49). We will see that, fortunately, the increase in complexity of the automaton is much greater than that of the hardware (Subsection B.1.2), another indication of the poor correlation between cellular automata and digital hardware.

2,0,0,0,4=6; 
4,0,4,0,5=5; 
5,0,4,0,4=4; 
6,0,0,0,4=4; 
0,0,0,0,6=2; 
4,0,6,0,5=5; 
4,0,2,0,5=5; 
6,0,0,0,5=5; 
5,0,6,0,4=4; 
2,0,0,0,5=3; 
5,0,2,0,4=4; 
3,0,0,0,4=4; 
0,0,0,3,0=2; 
0,0,0,0,3=2; 
2,0,0,4,0=7; 
7,0,0,4,0=4; 
0,0,0,7,0=2; 
4,4,4,0,5=5; 
5,4,4,0,4=4; 
4,7,0,5,0=5; 
4,2,0,5,0=5; 
5,4,0,4,0=4; 
5,7,0,4,0=4; 
7,0,0,5,0=5; 
5,2,0,4,0=4; 
2,0,0,5,0=3; 
4,4,0,5,0=5; 
3,0,0,4,0=4; 
4,4,4,5,0=5; 
5,4,4,4,0=4; 
0,0,0,7,6=2; 
2,0,0,5,5=3; 
3,0,0,4,4=4; 
4,4,4,5,5=5; 
5,4,4,4,4=4; 
4,7,6,0,5=5; 
4,7,6,5,0=5; 
4,7,6,5,5=5; 
4,5,1,4,0=5; 
5,4,1,4,0=4; 
4,0,1,4,0=0; 
4,5,4,0,0=5; 
5,4,4,0,0=4; 
4,1,4,0,5=5; 
5,1,4,0,4=4; 
4,0,4,0,0=0; 
4,1,4,0,0=0; 
1,0,0,1,4=0; 
1,0,0,4,4=0; 
Table A-5: The 49 transition rules of the original membrane builder. [PS,N,E,S,W=NS;]
4,5,4,0,0=5; 
5,6,1,4,0=6; 
6,5,1,5,0=5; 
5,6,1,5,0=6; 
6,3,1,5,0=3; 
3,4,1,6,0=4; 
4,5,1,4,0=5; 
3,0,1,6,0=0; 
3,0,0,0,4=8; 
0,0,0,8,0=4; 
5,6,4,0,0=6; 
4,1,4,0,5=5; 
4,0,0,8,0=12; 
4,0,8,0,5=5; 
6,5,5,0,0=5; 
5,1,4,0,6=6; 
0,0,0,12,0=4; 
6,1,5,0,5=5; 
5,0,8,0,6=6; 
8,12,0,0,5=9; 
4,0,0,12,0=12; 
12,4,0,9,0=4; 
0,0,0,0,9=5; 
9,12,0,0,6=10; 
6,0,9,0,5=5; 
5,6,5,0,0=6; 
12,0,0,4,0=4; 
5,0,0,0,10=18; 
10,4,5,0,5=9; 
5,1,5,0,6=6; 
6,3,5,0,0=3; 
3,4,6,0,0=4; 
6,1,5,0,3=3; 
5,0,9,0,6=6; 
18,0,0,0,9=17; 
0,0,0,0,18=6; 
3,1,6,0,4=4; 
6,0,9,0,3=3; 
9,4,17,0,6=10; 
6,0,0,0,17=21; 
3,0,10,0,4=4; 
10,4,17,0,3=7; 
0,0,0,0,21=5; 
17,0,21,0,10=18; 
4,4,0,7,0=11; 
7,4,18,0,4=8; 
18,0,17,0,7=15; 
18,0,21,0,7=15; 
21,0,5,0,18=22; 
5,0,0,0,21=17; 
4,4,0,11,0=11; 
11,4,0,8,0=12; 
15,0,22,0,8=16; 
22,0,17,0,15=19; 
17,0,0,0,22=18; 
0,0,0,0,17=5; 
5,0,0,0,18=18; 
18,0,5,0,19=15; 
19,0,18,0,16=20; 
4,0,0,11,0=11; 
11,4,0,12,0=12; 
8,12,16,0,5=9; 
11,0,0,12,0=12; 
0,0,0,11,0=3; 
18,0,0,0,15=15; 
15,0,18,0,20=16; 
3,0,0,12,0=8; 
9,12,16,0,6=10; 
12,12,0,9,0=13; 
16,0,20,0,9=17; 
15,0,6,0,16=16; 
6,0,0,0,15=19; 
19,0,0,0,16=20; 
20,0,16,0,17=21; 
17,0,20,0,10=18; 
10,13,17,0,5=9; 
13,12,0,10,0=14; 
12,12,0,13,0=13; 
4,0,0,0,20=8; 
16,0,16,0,21=17; 
21,0,16,0,18=22; 
18,0,21,0,9=17; 
14,13,0,9,0=13; 
13,12,0,14,0=14; 
12,8,0,13,0=13; 
16,0,20,0,17=17; 
17,0,16,0,22=18; 
22,0,17,0,17=21; 
9,13,17,0,6=10;
14,13,0,13,0=13; 
13,8,0,14,0=14; 
8,12,0,13,0=9;
20,0,8,0,17=21; 
17,0,20,0,18=18; 
18,0,17,0,21=17; 
10,13,17,0,3=7; 
9,12,0,14,0=10; 
14,9,0,13,0=13; 
13,13,0,10,0=14; 
7,14,18,0,4=8; 
10,4,5,13,0=9; 
13,13,0,14,0=14; 
14,13,0,7,0=11; 
21,0,17,0,18=22; 
18,0,21,0,17=17; 
21,0,8,0,18=22; 
8,12,0,0,21=9; 
9,12,0,0,22=10; 
22,0,9,0,17=21; 
17,0,17,0,22=18; 
13,9,0,14,0=14; 
14,13,0,11,0=11; 
11,14,0,8,0=12; 
9,4,17,14,0=10; 
14,9,0,11,0=11; 
11,14,0,12,0=12; 
17,0,21,0,18=18; 
18,0,17,0,19=15; 
10,4,5,0,21=9; 
11,10,0,12,0=12; 
10,4,17,11,0=7; 
18,0,21,0,15=15; 
21,0,9,0,18=22; 
15,0,22,0,16=16; 
22,0,9,0,15=19; 
9,4,17,0,22=10; 
7,4,18,12,0=8; 
10,4,17,0,19=7; 
19,0,10,0,16=20; 
7,4,18,0,20=8; 
8,12,16,0,21=9; 
8,12,16,13,0=9; 
4,0,0,12,20=8; 
9,12,16,14,0=10; 
9,12,16,0,22=10; 
10,13,17,13,0=9; 
9,13,17,14,0=10; 
10,13,17,11,0=7; 
7,14,18,12,0=8; 
10,13,17,0,21=9; 
9,13,17,0,22=10; 
10,13,17,0,19=7; 
7,14,18,0,20=8; 
8,11,16,0,21=9; 
9,11,16,0,22=10; 
10,11,17,0,21=9; 
8,12,0,13,21=9; 
9,12,0,14,22=10; 
10,4,5,13,21=9; 
9,4,17,14,22=10; 
10,4,17,11,19=7; 
7,4,18,12,20=8; 
8,12,16,13,21=9; 
9,12,16,14,22=10; 
10,13,17,13,21=9; 
9,13,17,14,22=10; 
10,13,17,11,19=7; 
7,14,18,12,20=8; 
3,0,6,0,0=0; 
3,1,6,0,0=0; 
3,0,10,0,0=0; 
7,14,18,0,0=3; 
11,14,0,3,0=4; 
15,0,22,0,3=5; 
11,14,0,4,0=4; 
19,0,18,0,5=6;
15,0,18,0,6=5; 
11,10,0,4,0=4; 
15,0,22,0,5=5; 
7,14,18,4,0=3; 
19,0,10,0,5=6; 
7,14,18,0,6=3; 
7,4,18,4,0=3; 
11,4,0,3,0=4; 
11,4,0,4,0=4; 
11,0,0,4,0=4; 
7,14,18,4,6=3; 
7,4,18,4,6=3; 
0,0,0,11,19=3; 
3,0,0,12,20=8; 
7,4,18,0,6=3; 
15,0,6,0,5=5; 
19,0,0,0,5=6; 
0,0,0,0,19=3; 
3,0,0,0,20=8; 
6,1,5,3,1=3; 
3,6,0,4,1=4; 
4,4,0,5,1=5; 
5,4,0,6,1=6; 
6,5,0,5,1=5; 
5,5,0,6,1=6; 
6,5,0,3,1=3; 
3,6,0,0,1=0; 
3,1,6,4,1=4; 
3,1,5,0,4=4; 
5,1,1,5,6=6; 
6,1,1,5,3=3; 
3,1,1,6,4=4; 
4,1,4,5,1=5; 
5,1,4,6,1=6; 
4,1,1,4,5=5; 
6,1,5,5,1=5; 
5,1,1,4,6=6; 
5,1,5,6,1=6; 
6,1,1,5,5=5; 
3,1,6,0,1=0; 
3,1,1,6,0=0; 


Table A-6: The 207 transition rules of the augmented membrane builder. [PS,N,E,S,W=NS;]

Technical Issues

CAEditor consists of approximately five thousand lines of C code, and requires the UNIX-based graphic library libsx(developed by Dominic Giampaolo) to operate.

The version currently available for distribution has a few relatively important faults:

It is our intention to design a second version of our tool (indeed, such a process has already started, only to be interrupted by other concerns) in order to address some, if not all, of these problems.

On the other hand, the available version is in fairly good working order (that is, it is relatively bug-free), and has been compiled and run without undue problems on a variety of machines, from Sun workstations to PCs running Linux. It can be obtained (bundled with the libsx library and a few basic instructions) from our anonymous FTP server at the address:

ftp://lslsun.epfl.ch/pub/CAeditor/editor.tar.gz


39. Note that, for this automaton as well as for all others, rotated rules have been removed from the table.