The fundamental idea of the Wolfram model is having an initial graph G_0 together with a rule r telling you how to “update” the graph. So far (unless I have missed something) the rule is of the following form:
- A “left-hand side” which detects the part of the graph to be updated.
- A “right-hand side” which tells you what the formerly detected part of the graph should be changed to.
This can be generalized in order to be less restrictive. Instead of considered just one rule, it is possible to define the rule as an ordered set of subrules, which should all be applied in the right order each time the rule is applied. Thinking of rules as being operators on graphs, we could write it as a kind of product:
where all the r_i denote the subrules.
A graph (and the left- and right-hand sides of rules) can essentially be thought of as subsets of \mathbb{N}^2 (or \mathbb{Z}^2 or maybe even \mathbb{R}^2 even though the real numbers are probably not suited for this in nature discrete theory). I will come back to this idea later, but for now, it is simply a motivation to use the notation \{(a,b),(b,c)\} instead of the notation \{\{a,b\},\{b,c\}\} when talking about rules. It also seems more readable to me, but this is of course simply a personal opinion. Also, note that everything I mention in this post is easily generalized to hypergraphs.
I will add some more notation in order to make things easier (and one more addition to how we make rules).
- A new bracket: [a,b]=(a,b),(b,a). This means that the relation between the vertices goes both ways.
- The notation \overline{(a,b)} in a rule called a negation means that this relation should not exist in order for the rule to be applied. This generalizes the left-hand side of the rule to demands of existence and lag of existence. This notation only makes sense on the left-hand side of a rule.
- The last notation only makes sense on the right-hand side of a rule. This is used when the rule only adds something new without removing anything, which would usually require writing the entire left-hand side again together with the new relations. In this case, I will simply right a “+” to represent the left-hand side (except the negated parts). For example r: \{(a,b),(b,c)\}\rightarrow \{(a,b),(b,c),(c,d)\} is written as r:\{(a,b),(b,c)\}\rightarrow \{+,(c,d)\} and r: \{(a,b),(b,c),\overline{(c,d)}\}\rightarrow \{(a,b),(b,c),(c,d)\} is written as r:\{(a,b),(b,c),\overline{(c,d)}\}\rightarrow \{+,(c,d)\}.
I want to motivate all these new definitions by creating an initial condition and a rule which generates a 2D-grid. For simplicity, I will make all relations between vertices go both ways and thus use [\cdot,\cdot]. The initial condition is simply a square:
The rule is a composition of three subrules r=r_3r_2r_1. I will not use letters but numbers in the rules, but this is still to be thought of as “place holders” and not specific vertices. The three rules are:
- r_1: \{[1,2],[2,3],[3,4],\overline{(2,5)},\overline{(3,6)}\}\rightarrow\{+,[2,5],[5,6],[6,3]\}. This rule identifies two connected vertices of valency 2. That is, vertices with two edges. It then adds to these two vertices a new square.
- r_2: \{[1,2],[1,3],[1,4],[4,5],[4,6],[4,7],[5,8],\overline{(1,9)},\overline{(5,10)}\}\rightarrow\{+,[1,9],[10,5]\}. This rule first identifies a valency 3 vertic, which is connected to a valency 2 vertex through one other vertex of valency 4 (a bit like a stair). It then adds a square to the stair.
- r_3: \{[1,2],[1,3],[1,4],[4,5],[5,6],[5,7],\overline{(1,8)},\overline{(5,9)}\}\rightarrow\{+,[1,8],[8,5]\}. This rule does the same as rule r_2 except it adds a new square to two valency 3 vertices seperated by one vertex instead of valency 3 and 2 vertices.
Let’s see what this rule does to the square. Applying the entire rule means that we should apply r_1 first. This rule adds to all four edges a new square giving a “big plus” of squares. Since there are no valency 3 vertices in this graph, applying r_2 and r_3 changes nothing.
Now apply the rule once more. Firstly, one more square is added above, below, and at both sides of the plus giving a longer plus. Subrule two does nothing again. Subrule three adds a square in each corner of the plus resulting in a diamond shape.
The third time the rule is applied and henceforth, all three subrules matter. The diamond shape will simply keep growing, by first adding squares to the four ends and then all the way around. (Note: I might have made mistakes in the rule since it is all still new to me).
The first three stages of the graph are (blue is G_0, black is generated by r_1, and red is generated by r_3 while r_2 is irrelevant in these steps):
Lastly, I want to describe a different kind of initial conditions. One theory for the universe says that it is infinite and always was infinite. We can actually make infinite initial conditions. For example, the graph which is the line of all integers is simply the disjoint union of all succeeding integers and could be taken as an initial condition:
Representing each side of a rule as subsets of \mathbb{Z}^2 could also involve equations. For example:
This rule would replace all (\cdot,\cdot)-brackets with [\cdot,\cdot]-brackets if applied on the G_0 defined above. I think infinite initial conditions is both interesting and important to consider. They are, however, more complicated to compute and visualize.



















