# 3.17 Behavior without Growth

Essentially all the rules we have considered so far have been set up to add relations. But with extended initial conditions, it makes sense also to consider rules that maintain a fixed number of relations.

Rules with signatures like 12 12 that depend only on one relation cannot give rise to nontrivial behavior. But rules with signature 22 22 (of which a total of 562 are inequivalent) already can.

Consider the rule:

{{x, y}, {y, z}} -> {{y, x}, {z, x}}
RulePlot[ResourceFunction[ "WolframModel"][{{x, y}, {y, z}} -> {{y, x}, {z, x}}]]

Starting from a chain of 5 binary relations, this is the behavior of the rule:

Graph[Rule @@@ #, GraphLayout -> "SpringElectricalEmbedding", ImageSize -> 90, VertexStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["SpatialGraph", "VertexStyle"], EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["SpatialGraph", "EdgeLineStyle"]] & /@ ResourceFunction[ "WolframModel"][{{1, 2}, {2, 3}} -> {{2, 1}, {3, 1}}, Table[{i, i + 1}, {i, 5}], 10, "StatesList"]

Given that only a finite number of elements and relations are involved, the total number of possible states of the system is finite, so it is inevitable that the evolution of the system must eventually repeat. In the particular case shown here, the repetition period is only 3 steps. (Note that the detailed behaviorand the repetition periodcan depend on the updating order used.)

In general, the total number of possible states of the system is given by the number of distinct hypergraphs of a certain size. One can then construct a state transition graph for these states under a rule. Here is the result for the rule above with the 32 distinct connected 32 hypergraphs (note that with this rule, the hypergraphs always remain connected):

CloudGet["https://wolfr.am/Lcbhw09E"]

The result for all 928 52 hypergraphs is:

all52 = ResourceFunction["EnumerateHypergraphs"][{{5, 2}}]; res52 = ParallelMap[# -> ResourceFunction["FindCanonicalHypergraph"][ Last[ResourceFunction[ "WolframModel"][{{1, 2}, {2, 3}} -> {{2, 1}, {3, 1}}, #, 1, "StatesList"]]] &, all52]; Graph[res52, EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["StatesGraph", "EdgeStyle"], VertexStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["StatesGraph", "VertexStyle"]]

This graph contains trees corresponding to transients, leading into cycles. The maximum cycle length in this case is 5. But when the size of the system increases, the lengths of cycles can increase rapidly (cf. [1:6.4]). The length is bounded by the number of distinct nk hypergraphs, which grows faster than exponentially with n. The plot below shows the lengths of cycles and transients in the rule above for initial conditions consisting of progressively longer chains of relations:

\ CloudGet["https://wolfr.am/LjQREg3B"]