Each cell_a_v project consists of one or more worlds, their initial condition and a set of rules.
A 'world' is a classical CA two-dimensional square lattice of 'cells', each with an associated state. The world has no edge, the space wraps around both horizontally and vertically, creating a toroidal shape.
One or more of such worlds exist at any time. Worlds may be connected via 'wormholes'.
The size of the worlds and the initial condition of their states, as well as some meta-data are specified in a project data file.
New worlds may be created (and connected) as a result of some rules.
Each state consists of two parts: an alphabetic character and (optionally) one or more vectors. The characters are from the range a-z, A-Z with an optional apostrophe (a'-z', A'-Z'), allowing up to 104 distinct state characters.
Any subset of the characters can be defined as 'link states' (specified in meta-data) - these have an associated vector, which is taken as a pointer from the square the state occupies to any other square in the same world.
The links can also point to a square in another world by going through a wormhole. In this case there are two vectors required: one points from the state's square to the wormhole and the second points from the other side of the wormhole to a square in the other world. More details here.
The neighborhood of each square is considered to be a string of characters representing the states of the surrounding squares.
Rules consist of three parts: the base character, a string to match and the result.
For each square, only the rules with the matching base state are considered. For each of these rules the engine looks for a match between the string specified in the rule and the square's neighborhood. The neighborhood is taken to be closed, like a loop, so the match can start at any of its squares.
The first rule that finds a match is 'applied': the new state (including optional link) of the base square in time n+1 is assigned according to the rule result. No other rules are considered for this square at that time.
The rules may also contain special characters (in a similar way as regular expression matching) that refer to a set of characters (defined in metadata) rather than a specific character and wild cards. They can also include directives to chain or extend the neighborhood to a square pointed to by one of the squares just matched. For details see the Rules page.
Although the cell_a_v platform includes some 'advanced features' (multiple worlds, wormholes, variable neighborhood) the platform's engine operates on a 'strict' cellular automaton principle: the state of each cell (including the vector part) in time n+1 is determined solely by the first applicable rule based only on the state in time n and its neighborhood states.
The concept of neighborhood is extended in the sense that it includes not only the 8 immediately adjacent cells (classical Moore neighborhood), but may also include cells pointed to by vectors of the adjacent cells. Exactly how this 'variable neighborhood' is constructed is precisely described by each rule (see rule details page).
Another extension is the concept of a 'wormhole' state. It is treated by the engine as any other state except for the fact
that a cell in this state may connect two worlds (or two parts of the same world) and in that case it is in two worlds at the same time
(or two points of the same world).
See wormhole state for more information.