# 7.2 Alternative Formulations

We have formulated our models in terms of the rewriting of collections of relations between elements. And in this formulation, we might represent a state in one of our models as a list of (here 3-ary) relations

{{1, 2, 2}, {3, 1, 4}, {3, 5, 1}, {6, 5, 4}, {2, 7, 6}, {8, 7, 4}}

and the rule for the model as

{{x, y, z}, {z, u, v}} -> {{w, z, v}, {z, x, w}, {w, y, u}}

where x, y, ... are taken to be pattern or quantified variables, suggesting notations like [98]

{{x_, y_, z_}, {z_, u_, v_}} -> {{w, z, v}, {z, x, w}, {w, y, u}}

or [99]:

ForAll[{x, y, z, u, v}, {{x, y, z}, {z, u, v}} -> {{w, z, v}, {z, x, w}, {w, y, u}}]

An alternative to these kinds of symbolic representations is to thinkas we have often done herein terms of transformations of directed hypergraphs. The state of one of our models might then be represented by a directed hypergraph such as

ResourceFunction[ "WolframModelPlot"][{{1, 2, 2}, {3, 1, 4}, {3, 5, 1}, {6, 5, 4}, {2, 7, 6}, {8, 7, 4}}]

while the rule would be:

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

But in an effort to understand the generality of our modelsas well as to see how best to enumerate instances of themit is worthwhile to consider alternative formulations.

One possibility to consider is ordinary graphs. If we are dealing only with binary relations, then our models are immediately equivalent to transformations of directed graphs.

But if we have general k-ary relations in our models, there is no immediate equivalence to ordinary graphs. In principle we can represent a k-ary hyperedge (at least for k > 0) by a sequence of ordinary graph edges:

hypergraphToGraph[edges_] := Catenate[Partition[#, 2, 1]~Join~{{#[[1]], #[[-1]]}} & /@ MapIndexed[Function[k, Subscript[#2[[1]], k]] /@ Range[#] &, Length /@ edges]]~Join~ Catenate[MapIndexed[{Subscript @@ #2, #} &, edges, {2}]]; Row[{ResourceFunction["WolframModelPlot"][#, VertexLabels -> Automatic, ImageSize -> Tiny], ResourceFunction["WolframModelPlot"][hypergraphToGraph[#], VertexLabels -> Automatic, EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericGraph", "EdgeStyle"], "ArrowheadLength" -> .2, ImageSize -> Tiny]}, Spacer[15], Frame -> True, FrameStyle -> LightGray] & /@ {{Range[1]}, {Range[2]}, {Range[ 3]}, {Range[4]}}

For the hypergraph above, this then yields:

hypergraphToGraph[edges_] := Catenate[Partition[#, 2, 1]~Join~{{#[[1]], #[[-1]]}} & /@ MapIndexed[Function[k, Subscript[#2[[1]], k]] /@ Range[#] &, Length /@ edges]]~Join~ Catenate[MapIndexed[{Subscript @@ #2, #} &, edges, {2}]]; ResourceFunction["WolframModelPlot"][ hypergraphToGraph[{{1, 2, 2}, {3, 1, 4}, {3, 5, 1}, {6, 5, 4}, {2, 7, 6}, {8, 7, 4}}], EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["GenericGraph", "EdgeStyle"], "ArrowheadLength" -> .2]

The rule above can be stated in terms of ordinary directed graphs as:

hypergraphToGraph[edges_] := Catenate[Partition[#, 2, 1]~Join~{{#[[1]], #[[-1]]}} & /@ MapIndexed[Function[k, Subscript[#2[[1]], k]] /@ Range[#] &, Length /@ edges]]~Join~ Catenate[MapIndexed[{Subscript @@ #2, #} &, edges, {2}]]; RulePlot[ ResourceFunction["WolframModel"][ hypergraphToGraph /@ ({{x, y, z}, {z, u, v}} -> {{w, z, v}, {z, x, w}, {w, y, u}})]]

In terms of hypergraphs, the result of 5 and 10 steps of evolution according to this rule is

ResourceFunction[ "WolframModel"][({{x, y, z}, {z, u, v}} -> {{w, z, v}, {z, x, w}, {w, y, u}}), {{0, 0, 0}, {0, 0, 0}}, #, "FinalStatePlot"] & /@ {5, 10}

and the corresponding result in terms of ordinary directed graphs is:

hypergraphToGraph[edges_] := Catenate[Partition[#, 2, 1]~Join~{{#[[1]], #[[-1]]}} & /@ MapIndexed[Function[k, Subscript[#2[[1]], k]] /@ Range[#] &, Length /@ edges]]~Join~ Catenate[MapIndexed[{Subscript @@ #2, #} &, edges, {2}]]; ResourceFunction["WolframModel"][ hypergraphToGraph /@ ({{x, y, z}, {z, u, v}} -> {{w, z, v}, {z, x, w}, {w, y, u}}), hypergraphToGraph[{{0, 0, 0}, {0, 0, 0}}], #]["FinalStatePlot", EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["GenericGraph", "EdgeStyle"], "ArrowheadLength" -> .3] & /@ {5, 10}

In thinking about ordinary graphs, it is natural also to consider the undirected case. And indeedas was done extensively in [1:9]it is possible to study many of the same things we do here with our models also in the context of undirected graphs. However, transformations of undirected graphs lack some of the flexibility and generality that exist in our models based on directed hypergraphs.

It is straightforward to convert from a system described in terms of undirected graphs to one described using our models: just represent each edge in the undirected graph as a pair of directed binary hyperedges, as in:

unorderedHyperedgesToGraph[edges_] := Catenate[Replace[edges, vertices_ :> Thread[Unique[] -> vertices], {1}]]; {UndirectedGraph[{3 -> 7, 4 -> 7, 7 -> 8}, GraphLayout -> "SpringElectricalEmbedding", EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["GenericGraph", "EdgeStyle"], VertexSize -> 0, ImageSize -> 150], ResourceFunction["WolframModelPlot"][ List @@@ unorderedHyperedgesToGraph[ List @@@ {3 -> 7, 4 -> 7, 7 -> 8}], "ArrowheadLength" -> .3, ImageSize -> 150]}

Transformations of undirected graphs work the samethough with paired edges. So, for example, the rule

RulePlot[ResourceFunction[ "WolframModel"][{{1, 2}, {1, 3}, {1, 4}} -> {{5, 6}, {6, 7}, {7, 5}, {5, 2}, {6, 3}, {7, 4}}], EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["GenericGraph", "EdgeStyle"], "ArrowheadLength" -> 0, VertexSize -> 0]
Row[PlanarGraph[#, EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericGraph", "EdgeStyle"], ImageSize -> 120, VertexSize -> 0] & /@ Apply[UndirectedEdge, (ResourceFunction[ "WolframModel"][{{0, 1}, {2, 1}} -> {{0, 2}}, #, "FinalState"] &) /@ ResourceFunction[ "WolframModel"][{{0, 1}, {0, 2}, {0, 3}} -> {{4, 5}, {6, 5}, {4, 7}, {8, 7}, {6, 9}, {8, 9}, {4, 1}, {6, 2}, {8, 3}}, {{0, 1}, {2, 1}, {0, 3}, {4, 3}, {0, 5}, {6, 5}, {2, 7}, {4, 7}, {2, 8}, {6, 8}, {4, 9}, {6, 9}}, 3, "StatesList"], {2}], Spacer[10]]

becomes

RulePlot@ResourceFunction[ "WolframModel"][{{0, 1}, {0, 2}, {0, 3}} -> {{4, 5}, {6, 5}, {4, 7}, {8, 7}, {6, 9}, {8, 9}, {4, 1}, {6, 2}, {8, 3}}]

which yields:

Row[PlanarGraph[#, ImageSize -> 120, EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "SpatialGraph", "EdgeLineStyle"], VertexStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "SpatialGraph", "VertexStyle"]] & /@ Apply[UndirectedEdge, ResourceFunction[ "WolframModel"][{{0, 1}, {0, 2}, {0, 3}} -> {{4, 5}, {6, 5}, {4, 7}, {8, 7}, {6, 9}, {8, 9}, {4, 1}, {6, 2}, {8, 3}}, {{0, 1}, {2, 1}, {0, 3}, {4, 3}, {0, 5}, {6, 5}, {2, 7}, {4, 7}, {2, 8}, {6, 8}, {4, 9}, {6, 9}}, 3, "StatesList"], {2}], Spacer[10]]

In dealing with undirected graphsas in [1:9]it is natural to make the further simplification that all graphs are trivalent (or “cubic”). In the context of ordinary graphs, nothing is lost by this assumption: any higher-valence node can always be represented directly as a combination of trivalent nodes. But the point about restricting to trivalent graphs is that it makes the set of possible rules better definedbecause without this restriction, one can easily end up having to specify an infinite family of rules to cover graphs of arbitrary valence that are generated. (In our models based on transformations for arbitrary relations, no analogous issue comes up.)

It is particularly easy to get intricate nested structures from rules based on undirected trivalent graphs; it is considerably more difficult to get more complex behavior:

CloudGet["https://wolfr.am/Llmq1gdc"]; {RulePlot[ ResourceFunction["WolframModel"][ trivalentRuleToHypergraphRule[#]], ImageSize -> 170], hypergraphToGraph[ ResourceFunction["WolframModel"][trivalentRuleToHypergraphRule@#, trivalentSpecToHypergraph@trivalentInit@#, 4]@-1, ImageSize -> 350]} & /@ {{{h[1], h[2], h[3]}} -> {{h[1], 4, 7}, {2, 10, 13}, {3, 16, 19}, {5, 18, h[2]}, {6, 21, h[3]}, {8, 20, 11}, {9, 17, 14}}, {{h[1], h[2], h[3]}} -> {{h[1], 4, 7}, {2, 10, 13}, {3, 16, 12}, {5, 19, 9}, {6, 21, h[2]}, {8, 20, h[3]}, {11, 17, 14}}}

Another issue in models based on undirected graphs has to do with the fact that the objects that appear in their transformation rules do not have exactly the same character as the objects on which they act. In our hypergraph-based models, both sides of a transformation are collections of relations (that can be represented by hypergraphs)just like what appears in the states on which these transformations act. But in models based on undirected graphs, what appears in a transformation is not an ordinary graph: instead it is a subgraph with “dangling connections” (or “half-edges”) that must be matched up with part of the graph on which the transformation acts.

Given this setup, it is then unclear, for example, whether or not the rule abovestated in terms of undirected graphsshould be considered to match the graph:

UndirectedGraph[{1 -> 1, 1 -> 2, 2 -> 2}, EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["GenericGraph", "EdgeStyle"], VertexSize -> 0]

(In a sense, the issue is that while our models are based on applying rules to collections of complete hyperedges, models based on undirected graphs effectively apply rules to collections of nodes, requiring “dangling connections” to be treated separately.)

Another apparent problem with undirected trivalent graphs is that if the right-hand side of a transformation has lower symmetry than the left-hand side, as in

RulePlot[ ResourceFunction[ "WolframModel"][{{1, 2}, {1, 3}, {1, 4}} -> {{7, 5}, {5, 2}, {7, 4}, {10, 8}, {8, 9}, {9, 10}, {10, 5}, {8, 7}, {9, 3}}], VertexCoordinates -> {3 -> 1.2 {1.4, 2.4}, 2 -> {0, 0}, 4 -> 1.2 {2.7, 0}, 1 -> 1.2 {1.37, 0.8}}, EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["GenericGraph", "EdgeStyle"], "ArrowheadLength" -> 0, VertexSize -> 0]

then it can seem “undefined” how the right-hand side should be inserted into the final graph. Having seen our models here, however, it is now clear that this is just one of many examples where multiple different updates can be applied, as represented by multiway systems.

A further issue with systems based on undirected trivalent graphs has to do with the enumeration of possible states and possible rules. If a graph is represented by pairs of vertices corresponding to edges, as in

the fact that the graph is trivalent in a sense corresponds to a global constraint that each vertex must appear exactly three times. The alternate “vertex-based” representation

does not overcome this issue. In our models based on collections of relations, however, there are no such global constraints, and enumeration of possible statesand rulesis straightforward. (In our models, as in trivalent undirected graphs, there is, however, still the issue of canonicalization.)

In the end, though, it is still perfectly possible to enumerate distinct trivalent undirected graphs (here dropping cases with self-loops and multiple edges)

Graph[#, ImageSize -> {25, 25}, EdgeStyle -> ResourceFunction["WolframPhysicsProjectStyleData"]["GenericGraph", "EdgeStyle"]] & /@ Select[GraphData /@ Catenate[Table[GraphData["Cubic", n], {n, 12}]], ConnectedGraphQ]

as well as rules for transforming them, and indeed to build up a rich analysis of their behavior [1:9.12]. Notions such as causal invariance are also immediately applicable, and for example one finds that the simplest subgraphs that do not overlap themselves, and so guarantee causal invariance, are [1:p515][87]:

Directed graphs define an ordering for every edge. But it is also possible to have ordered graphs in which the individual edges are undirected, but an order is defined for the edges at any given vertex [87]. Trivalent such ordered graphs can be represented by collections of ordered triples, where each triple corresponds to a vertex, and each number in each triple specifies the destination in the whole list of a particular edge:

{{2, 1, 6}, {5, 4, 3}}

For visualization purposes one can “name” each element of each triple by a color

Association[ Thread[{Hue[0.9885354741949258, 0.7411799598474796, 1., 1.], Hue[ 0.27, 0.6196085827764332, 0.9500000000000001], Hue[ 0.5555551255051877, 0.7529449528480953, 0.9999989697550221, 1.]} -> {#1, #2, #3}]] & @@@ {{2, 1, 6}, {5, 4, 3}}

and then the ordered graph can be rendered as:

ResourceFunction["OrderedGraphModelPlot"][{{2, 1, 6}, {5, 4, 3}}, VertexSize -> .12]

In the context of our models, an ordered trivalent graph can immediately be represented as a hypergraph with ternary hyperedges corresponding to the trivalent nodes, and binary hyperedges corresponding to the edges that connect these nodes:

coloredSpecPattern = {{___} ...}; coloredSpecToHypergraph[spec : coloredSpecPattern] := TakeList[Range[Length[Catenate[spec]]], Length /@ spec]~Join~ Select[FreeQ[h]]@ Transpose[{Range[Length[Catenate[spec]]], Catenate[spec]}]; {ResourceFunction["OrderedGraphModelPlot"][#, VertexSize -> .1], ResourceFunction["WolframModelPlot"][ coloredSpecToHypergraph[#]]} &[{{6, 9, 12}, {11, 7, 1}, {5, 10, 2}, {8, 4, 3}}]

To give rules for ordered trivalent graphs, one must specify how to transform subgraphs with “dangling connections”. Given the rule (where letters represent dangling connections)

{{4, a, b}, {1, c, d}} -> {{4, 8, a}, {1, 11, b}, {10, 2, c}, {7, 5, d}}
ResourceFunction[ "OrderedGraphModelPlot"][{{4, h[1], h[2]}, {1, h[3], h[4]}} -> {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[3]}, {7, 5, h[4]}}, {{0.1, 0.1}, {0.3, 0.3}}, {{VertexSize -> 0.3, ImageSize -> 125}, {VertexSize -> 0.4, ImageSize -> 125}}, "ArrowImageSize" -> 21]

the evolution of the system is:

CloudGet["https://wolfr.am/Llmq1gdc"]; MapThread[ ResourceFunction["OrderedGraphModelPlot"][#1, VertexSize -> #2, ImageSize -> 150] &, {hypergraphToColoredSpec /@ ResourceFunction["WolframModel"][ coloredRuleToHypergraph[{{4, h[1], h[2]}, {1, h[3], h[4]}} -> {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[3]}, {7, 5, h[4]}}], coloredSpecToHypergraph[{{4, 5, 6}, {1, 2, 3}}], 7]["StatesList"], Table[0.1 k^0.85, {k, 8}]}]

The corresponding rule for hypergraphs would be

CloudGet["https://wolfr.am/Llmq1gdc"]; RulePlot[ResourceFunction["WolframModel"][ coloredRuleToHypergraph[{{4, h[1], h[2]}, {1, h[3], h[4]}} -> {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[3]}, {7, 5, h[4]}}]], ImageSize -> 300]

and the corresponding evolution is:

CloudGet["https://wolfr.am/Llmq1gdc"]; ResourceFunction["WolframModel"][ coloredRuleToHypergraph[{{4, h[1], h[2]}, {1, h[3], h[4]}} -> {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[3]}, {7, 5, h[4]}}], coloredSpecToHypergraph[{{4, 5, 6}, {1, 2, 3}}], 6]["StatesPlotsList", ImageSize -> 120]

The rule just shown is example of a rule with 2 4 internal nodes and 4 dangling connectionswhich is the smallest class that supports growth from minimal initial conditions. There are altogether 264 rules of this type, with rules of the following forms (up to vertex orderings) [87]:

CloudGet["https://wolfr.am/Llmq1gdc"]; ResourceFunction["OrderedGraphModelPlot"][#, Automatic, Join[#, {VertexShapeFunction -> "Circle", ImageSize -> {60, 60}}] & /@ {#2, #3}, "ArrowImageSize" -> 17] & @@@ {{OrderedNet[{{1, 1}, {{h[1], h[2], 6}, {h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, {h[2], 12, 1}, {h[4], 3, 10}, {9, h[3], 5}}}], {}, {}}, {OrderedNet[{{1, 1}, {{h[1], h[2], 6}, {h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 7}, {1, h[3], 10}, {3, 11, h[4]}, {6, 8, h[2]}}}], {VertexCoordinates -> {1 -> {1.2, 1.8}, 2 -> {1.2, 0.6}, 3 -> {2.41, 2.40}, 4 -> {0, 0.01}, 5 -> {0.01, 2.41}, 6 -> {2.40, 0}}}, {}}, {OrderedNet[{{1, 1}, {{h[1], h[2], 6}, {h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[2]}, {7, 8, 1}, {4, 5, 10}, {9, h[3], h[4]}}}], {VertexCoordinates -> {1 -> {0.2, 1.2}, 2 -> {2.2, 1.2}, 3 -> {0.01, 2.40}, 4 -> {0, 0.01}, 5 -> {2.41, 2.41}, 6 -> {2.40, 0}}}, {VertexCoordinates -> {1 -> {0.2, 1.2}, 2 -> {0.6, 1.2}, 3 -> {1.7, 1.2}, 4 -> {2.2, 1.2}, 5 -> {0.01, 2.40}, 6 -> {0, 0.01}, 7 -> {2.41, 2.41}, 8 -> {2.40, 0}}}}, {OrderedNet[{{1, 1}, {{h[1], h[2], 6}, {h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[4]}, {7, 8, 1}, {4, 5, 10}, {9, h[3], h[2]}}}], {VertexCoordinates -> {1 -> {1.2, 0.6}, 2 -> {1.2, 1.8}, 3 -> {0.01, 2.40}, 4 -> {2.40, 0.01}, 5 -> {2.41, 2.41}, 6 -> {0, 0}}}, {VertexCoordinates -> {1 -> {0.2, 1.2}, 2 -> {0.6, 1.2}, 3 -> {1.7, 1.2}, 4 -> {2.2, 1.2}, 5 -> {0.01, 2.40}, 6 -> {2.40, 0.01}, 7 -> {2.41, 2.41}, 8 -> {0, 0}}}}}

These rules produce the following distinct outcomes:

CloudGet["https://wolfr.am/Llmq1gdc"]; alldistinct = {OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, { h[2], 12, 1}, { h[4], 3, 10}, {9, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 7}, {12, 1, h[2]}, {3, 10, h[4]}, {8, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[4], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[2], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 7}, {1, h[3], 10}, {3, 11, h[2]}, {6, 8, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 7}, {1, h[4], 10}, {3, 11, h[1]}, {6, 8, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 7}, {1, h[2], 10}, {3, 11, h[1]}, {6, 8, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[3]}, {7, 5, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[4]}, {7, 5, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[3]}, {10, 2, h[4]}, {7, 5, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, {10, 3, h[2]}, {7, 6, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, {10, 3, h[4]}, {7, 6, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[1]}, {10, 1, h[2]}, {11, 2, h[3]}, {4, 7, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, 12, h[2]}, {10, 3, h[4]}, {7, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, 12, h[4]}, {10, 3, h[2]}, {7, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 7, h[1]}, {11, 1, h[2]}, {2, 10, h[4]}, {8, 4, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[2]}, {7, 8, 1}, {4, 5, 10}, {9, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[4]}, {7, 8, 1}, {4, 5, 10}, {9, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], h[1]}, {7, 8, 1}, {4, 5, 10}, {9, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], h[1]}, {7, 8, 1}, {4, 5, 10}, {9, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 5}, {9, 3, 7}, {6, 12, 4}, { h[3], h[4], 8}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[2]}, {9, 1, 7}, {6, 10, 4}, {8, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], h[1]}, {9, 1, 7}, {6, 10, 4}, {8, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[2]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[4]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[2], h[3]}}}]}; GraphicsGrid[Partition[finalStatesPlots[alldistinct][8], UpTo@6], ImageSize -> Full]

Even though there is a direct translation between ordered trivalent graphs and our models, what is considered a simple rule (for example for purposes of enumeration) is different in the two cases. And while it is more difficult to find valid rules with ordered trivalent graphs, it is notable that even some of the very simplest such rules generate structures with limiting manifold features that we see only after exploring thousands of rules in our models:

\$rewritesOrdered24h4 = {OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, { h[2], 12, 1}, { h[4], 3, 10}, {9, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, { h[4], 12, 1}, { h[2], 3, 10}, {9, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], 8}, { h[1], 12, 1}, { h[3], 3, 10}, {9, h[4], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], 8}, { h[1], 12, 1}, { h[3], 3, 10}, {9, h[2], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 7}, {12, 1, h[2]}, {3, 10, h[4]}, {8, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 7}, {12, 1, h[4]}, {3, 10, h[2]}, {8, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[4], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[2], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 7}, {1, h[3], 10}, {3, 11, h[2]}, {6, 8, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 7}, {1, h[3], 10}, {3, 11, h[4]}, {6, 8, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 7}, {1, h[4], 10}, {3, 11, h[1]}, {6, 8, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 7}, {1, h[2], 10}, {3, 11, h[1]}, {6, 8, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[1]}, { h[2], 1, 11}, { h[4], 10, 2}, {8, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[1]}, { h[4], 1, 11}, { h[2], 10, 2}, {8, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[2]}, { h[1], 1, 11}, { h[3], 10, 2}, {8, 6, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[4]}, { h[1], 1, 11}, { h[3], 10, 2}, {8, 6, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[3]}, {7, 5, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[2]}, {10, 2, h[4]}, {7, 5, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[3]}, {10, 2, h[2]}, {7, 5, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[4]}, {10, 2, h[2]}, {7, 5, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[3]}, {10, 2, h[4]}, {7, 5, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 8, h[1]}, {1, 11, h[4]}, {10, 2, h[3]}, {7, 5, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 9, h[1]}, {1, 12, h[3]}, { h[2], 11, 2}, { h[4], 8, 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 9, h[1]}, {1, 12, h[3]}, { h[4], 11, 2}, { h[2], 8, 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 9, h[2]}, {1, 12, h[4]}, { h[1], 11, 2}, { h[3], 8, 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, 9, h[4]}, {1, 12, h[2]}, { h[1], 11, 2}, { h[3], 8, 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, {10, 3, h[2]}, {7, 6, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, {10, 3, h[4]}, {7, 6, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 8}, {1, h[4], 11}, {10, 3, h[1]}, {7, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 8}, {1, h[2], 11}, {10, 3, h[1]}, {7, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[1]}, {10, 1, h[2]}, {11, 2, h[3]}, {4, 7, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[1]}, {10, 1, h[4]}, {11, 2, h[3]}, {4, 7, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[2]}, {10, 1, h[1]}, {11, 2, h[4]}, {4, 7, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[4]}, {10, 1, h[1]}, {11, 2, h[2]}, {4, 7, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[2], 11, 1}, {12, 2, h[3]}, { h[4], 5, 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[4], 11, 1}, {12, 2, h[3]}, { h[2], 5, 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[2]}, { h[1], 11, 1}, {12, 2, h[4]}, { h[3], 5, 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[4]}, { h[1], 11, 1}, {12, 2, h[2]}, { h[3], 5, 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, 12, h[2]}, {10, 3, h[4]}, {7, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, 12, h[4]}, {10, 3, h[2]}, {7, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 8}, {1, 12, h[1]}, {10, 3, h[3]}, {7, h[4], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 8}, {1, 12, h[1]}, {10, 3, h[3]}, {7, h[2], 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 7}, {12, h[2], 1}, {3, h[4], 10}, {9, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 7}, {12, h[4], 1}, {3, h[2], 10}, {9, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 7, h[1]}, {11, 1, h[2]}, {2, 10, h[4]}, {8, 4, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 7, h[1]}, {11, 1, h[4]}, {2, 10, h[2]}, {8, 4, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[2], 11, 1}, { h[4], 2, 10}, {9, 5, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[4], 11, 1}, { h[2], 2, 10}, {9, 5, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[2]}, { h[1], 11, 1}, { h[3], 2, 10}, {9, 5, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[4]}, { h[1], 11, 1}, { h[3], 2, 10}, {9, 5, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 8}, { h[2], 12, 2}, { h[4], 3, 11}, { h[3], 9, 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 8}, { h[4], 12, 2}, { h[2], 3, 11}, { h[3], 9, 5}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[2]}, {7, 8, 1}, {4, 5, 10}, {9, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[4]}, {7, 8, 1}, {4, 5, 10}, {9, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], h[1]}, {7, 8, 1}, {4, 5, 10}, {9, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], h[1]}, {7, 8, 1}, {4, 5, 10}, {9, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[2]}, {7, 8, 2}, {4, 5, 11}, { h[3], 9, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[4]}, {7, 8, 2}, {4, 5, 11}, { h[3], 9, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 6, h[1]}, {7, 8, 2}, {4, 5, 11}, { h[4], 9, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 6, h[1]}, {7, 8, 2}, {4, 5, 11}, { h[2], 9, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 5}, {9, 3, 7}, {6, 12, 4}, { h[3], h[4], 8}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 5}, {9, 3, 7}, {6, 12, 4}, { h[3], h[2], 8}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 5}, {9, 3, 7}, {6, 12, 4}, { h[4], h[3], 8}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 5}, {9, 3, 7}, {6, 12, 4}, { h[2], h[3], 8}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 4}, {3, 9, 8}, {12, 6, 5}, { h[3], h[4], 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 4}, {3, 9, 8}, {12, 6, 5}, { h[3], h[2], 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 4}, {3, 9, 8}, {12, 6, 5}, { h[4], h[3], 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 4}, {3, 9, 8}, {12, 6, 5}, { h[2], h[3], 7}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[2]}, {9, 1, 7}, {6, 10, 4}, {8, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[4]}, {9, 1, 7}, {6, 10, 4}, {8, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], h[1]}, {9, 1, 7}, {6, 10, 4}, {8, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], h[1]}, {9, 1, 7}, {6, 10, 4}, {8, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[2]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[4]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], h[2]}, {1, 9, 8}, {10, 6, 5}, {7, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], h[4]}, {1, 9, 8}, {10, 6, 5}, {7, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], h[1]}, {1, 9, 8}, {10, 6, 5}, {7, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], h[1]}, {1, 9, 8}, {10, 6, 5}, {7, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, h[2]}, {9, 2, 7}, {6, 11, 4}, { h[3], 8, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, h[4]}, {9, 2, 7}, {6, 11, 4}, { h[3], 8, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 5, h[1]}, {9, 2, 7}, {6, 11, 4}, { h[4], 8, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 5, h[1]}, {9, 2, 7}, {6, 11, 4}, { h[2], 8, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[2]}, {8, 7, 2}, {5, 4, 11}, { h[3], 9, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[4]}, {8, 7, 2}, {5, 4, 11}, { h[3], 9, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 6, h[1]}, {8, 7, 2}, {5, 4, 11}, { h[4], 9, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 6, h[1]}, {8, 7, 2}, {5, 4, 11}, { h[2], 9, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[2]}, {2, 9, 8}, {11, 6, 5}, { h[3], 7, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[4]}, {2, 9, 8}, {11, 6, 5}, { h[3], 7, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 4, h[1]}, {2, 9, 8}, {11, 6, 5}, { h[4], 7, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], h[2], 6}, { h[3], h[4], 3}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 4, h[1]}, {2, 9, 8}, {11, 6, 5}, { h[2], 7, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, { h[2], 12, 1}, { h[4], 3, 10}, {9, h[3], 5}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, { h[4], 12, 1}, { h[2], 3, 10}, {9, h[3], 5}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], 8}, { h[1], 12, 1}, { h[3], 3, 10}, {9, h[4], 5}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], 8}, { h[1], 12, 1}, { h[3], 3, 10}, {9, h[2], 5}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 9}, { h[2], 11, 1}, {12, h[3], 3}, { h[4], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 9}, { h[4], 11, 1}, {12, h[3], 3}, { h[2], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], 9}, { h[1], 11, 1}, {12, h[4], 3}, { h[3], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], 9}, { h[1], 11, 1}, {12, h[2], 3}, { h[3], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 7}, {12, 1, h[2]}, {3, 10, h[4]}, {8, h[3], 4}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 7}, {12, 1, h[4]}, {3, 10, h[2]}, {8, h[3], 4}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[4], 4}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[2], 4}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[1]}, { h[2], 1, 12}, {11, 2, h[3]}, { h[4], 7, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[1]}, { h[4], 1, 12}, {11, 2, h[3]}, { h[2], 7, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[2]}, { h[1], 1, 12}, {11, 2, h[4]}, { h[3], 7, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 8, h[4]}, { h[1], 1, 12}, {11, 2, h[2]}, { h[3], 7, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[1]}, { h[2], 1, 11}, { h[4], 10, 2}, {8, 6, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[1]}, { h[4], 1, 11}, { h[2], 10, 2}, {8, 6, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[2]}, { h[1], 1, 11}, { h[3], 10, 2}, {8, 6, h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[4]}, { h[1], 1, 11}, { h[3], 10, 2}, {8, 6, h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, 9}, { h[2], 2, 12}, { h[3], 11, 3}, { h[4], 8, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, 9}, { h[2], 2, 12}, { h[4], 11, 3}, { h[3], 8, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, 9}, { h[3], 2, 12}, { h[2], 11, 3}, { h[4], 8, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, 9}, { h[4], 2, 12}, { h[2], 11, 3}, { h[3], 8, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, 9}, { h[3], 2, 12}, { h[4], 11, 3}, { h[2], 8, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, 9}, { h[4], 2, 12}, { h[3], 11, 3}, { h[2], 8, 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[2], 11, 1}, {12, 2, h[3]}, { h[4], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[4], 11, 1}, {12, 2, h[3]}, { h[2], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[2]}, { h[1], 11, 1}, {12, 2, h[4]}, { h[3], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[4]}, { h[1], 11, 1}, {12, 2, h[2]}, { h[3], 5, 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 9}, { h[2], 11, 2}, { h[3], 12, 3}, { h[4], 5, 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 9}, { h[4], 11, 2}, { h[3], 12, 3}, { h[2], 5, 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 6, 9}, { h[1], 11, 2}, { h[4], 12, 3}, { h[3], 5, 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 6, 9}, { h[1], 11, 2}, { h[2], 12, 3}, { h[3], 5, 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, 9}, {2, h[2], 12}, { h[3], 10, 3}, {8, h[4], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, 9}, {2, h[4], 12}, { h[3], 10, 3}, {8, h[2], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 4, 9}, {2, h[1], 12}, { h[4], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 4, 9}, {2, h[1], 12}, { h[2], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 9}, { h[2], 1, 12}, { h[4], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 9}, { h[4], 1, 12}, { h[2], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], 9}, { h[1], 1, 12}, { h[3], 10, 3}, {8, h[4], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], 9}, { h[1], 1, 12}, { h[3], 10, 3}, {8, h[2], 6}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 7}, {12, h[2], 1}, {3, h[4], 10}, {9, h[3], 4}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 7}, {12, h[4], 1}, {3, h[2], 10}, {9, h[3], 4}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 7, h[1]}, {11, 1, h[2]}, {2, 10, h[4]}, {8, 4, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 7, h[1]}, {11, 1, h[4]}, {2, 10, h[2]}, {8, 4, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[2], 11, 1}, { h[4], 2, 10}, {9, 5, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[1]}, { h[4], 11, 1}, { h[2], 2, 10}, {9, 5, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[2]}, { h[1], 11, 1}, { h[3], 2, 10}, {9, 5, h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, 8, h[4]}, { h[1], 11, 1}, { h[3], 2, 10}, {9, 5, h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 8}, { h[2], 12, 2}, { h[4], 3, 11}, { h[3], 9, 5}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 8}, { h[4], 12, 2}, { h[2], 3, 11}, { h[3], 9, 5}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 4}, {3, 8, 9}, {12, 5, 6}, { h[3], h[4], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 4}, {3, 8, 9}, {12, 5, 6}, { h[3], h[2], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 4}, {3, 8, 9}, {12, 5, 6}, { h[4], h[3], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 4}, {3, 8, 9}, {12, 5, 6}, { h[2], h[3], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[2]}, {2, 8, 9}, {11, 5, 6}, { h[3], 7, h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[4]}, {2, 8, 9}, {11, 5, 6}, { h[3], 7, h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 4, h[1]}, {2, 8, 9}, {11, 5, 6}, { h[4], 7, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 4, h[1]}, {2, 8, 9}, {11, 5, 6}, { h[2], 7, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 5}, {9, 3, 7}, {6, 12, 4}, { h[3], h[4], 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 5}, {9, 3, 7}, {6, 12, 4}, { h[3], h[2], 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 5}, {9, 3, 7}, {6, 12, 4}, { h[4], h[3], 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 5}, {9, 3, 7}, {6, 12, 4}, { h[2], h[3], 8}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 6}, {8, 7, 3}, {5, 4, 12}, { h[3], h[4], 9}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 6}, {8, 7, 3}, {5, 4, 12}, { h[3], h[2], 9}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 6}, {8, 7, 3}, {5, 4, 12}, { h[4], h[3], 9}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 6}, {8, 7, 3}, {5, 4, 12}, { h[2], h[3], 9}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 4}, {3, 9, 8}, {12, 6, 5}, { h[3], h[4], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 4}, {3, 9, 8}, {12, 6, 5}, { h[3], h[2], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 4}, {3, 9, 8}, {12, 6, 5}, { h[4], h[3], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 4}, {3, 9, 8}, {12, 6, 5}, { h[2], h[3], 7}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[2]}, {9, 1, 7}, {6, 10, 4}, {8, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[4]}, {9, 1, 7}, {6, 10, 4}, {8, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], h[1]}, {9, 1, 7}, {6, 10, 4}, {8, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], h[1]}, {9, 1, 7}, {6, 10, 4}, {8, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[2]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[4]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, h[2]}, {9, 2, 7}, {6, 11, 4}, { h[3], 8, h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 5, h[4]}, {9, 2, 7}, {6, 11, 4}, { h[3], 8, h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 5, h[1]}, {9, 2, 7}, {6, 11, 4}, { h[4], 8, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 5, h[1]}, {9, 2, 7}, {6, 11, 4}, { h[2], 8, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[2]}, {8, 7, 2}, {5, 4, 11}, { h[3], 9, h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[4]}, {8, 7, 2}, {5, 4, 11}, { h[3], 9, h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 6, h[1]}, {8, 7, 2}, {5, 4, 11}, { h[4], 9, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 6, h[1]}, {8, 7, 2}, {5, 4, 11}, { h[2], 9, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[2]}, {2, 9, 8}, {11, 6, 5}, { h[3], 7, h[4]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[4]}, {2, 9, 8}, {11, 6, 5}, { h[3], 7, h[2]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 4, h[1]}, {2, 9, 8}, {11, 6, 5}, { h[4], 7, h[3]}}}], OrderedNet[{{1, 1}, {{4, h[1], h[2]}, {1, h[3], h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 4, h[1]}, {2, 9, 8}, {11, 6, 5}, { h[2], 7, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, { h[2], 12, 1}, { h[4], 3, 10}, {9, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 8}, { h[4], 12, 1}, { h[2], 3, 10}, {9, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], 8}, { h[1], 12, 1}, { h[3], 3, 10}, {9, h[4], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], 8}, { h[1], 12, 1}, { h[3], 3, 10}, {9, h[2], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, { h[2], 3, 12}, { h[4], 6, 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, { h[4], 3, 12}, { h[2], 6, 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 8}, {1, h[4], 11}, { h[1], 3, 12}, { h[3], 6, 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 8}, {1, h[2], 11}, { h[1], 3, 12}, { h[3], 6, 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 9}, {10, 1, h[2]}, {11, h[3], 3}, {4, 7, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 9}, {10, 1, h[4]}, {11, h[3], 3}, {4, 7, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], 9}, {10, 1, h[1]}, {11, h[4], 3}, {4, 7, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], 9}, {10, 1, h[1]}, {11, h[2], 3}, {4, 7, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 9}, {1, h[2], 12}, {10, h[3], 3}, {7, h[4], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 9}, {1, h[2], 12}, {10, h[4], 3}, {7, h[3], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 9}, {1, h[3], 12}, {10, h[2], 3}, {7, h[4], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 9}, {1, h[4], 12}, {10, h[2], 3}, {7, h[3], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 9}, {1, h[3], 12}, {10, h[4], 3}, {7, h[2], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 9}, {1, h[4], 12}, {10, h[3], 3}, {7, h[2], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 7}, {12, 1, h[2]}, {3, 10, h[4]}, {8, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 7}, {12, 1, h[4]}, {3, 10, h[2]}, {8, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[4], 4}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], 7}, {12, 1, h[1]}, {3, 10, h[3]}, {8, h[2], 4}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[1]}, { h[2], 1, 11}, { h[4], 10, 2}, {8, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[1]}, { h[4], 1, 11}, { h[2], 10, 2}, {8, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[2]}, { h[1], 1, 11}, { h[3], 10, 2}, {8, 6, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 9, h[4]}, { h[1], 1, 11}, { h[3], 10, 2}, {8, 6, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, {10, 3, h[2]}, {7, 6, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, h[3], 11}, {10, 3, h[4]}, {7, 6, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 8}, {1, h[4], 11}, {10, 3, h[1]}, {7, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 8}, {1, h[2], 11}, {10, 3, h[1]}, {7, 6, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 7}, {1, h[3], 10}, {3, h[2], 12}, {6, h[4], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 7}, {1, h[3], 10}, {3, h[4], 12}, {6, h[2], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 7}, {1, h[4], 10}, {3, h[1], 12}, {6, h[3], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 7}, {1, h[2], 10}, {3, h[1], 12}, {6, h[3], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, 9}, {2, h[2], 12}, { h[3], 10, 3}, {8, h[4], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, 9}, {2, h[4], 12}, { h[3], 10, 3}, {8, h[2], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 4, 9}, {2, h[1], 12}, { h[4], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 4, 9}, {2, h[1], 12}, { h[2], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, 12, h[2]}, {10, 3, h[4]}, {7, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], 8}, {1, 12, h[4]}, {10, 3, h[2]}, {7, h[3], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], 8}, {1, 12, h[1]}, {10, 3, h[3]}, {7, h[4], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], 8}, {1, 12, h[1]}, {10, 3, h[3]}, {7, h[2], 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 9}, { h[2], 1, 12}, { h[4], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], 9}, { h[4], 1, 12}, { h[2], 10, 3}, {8, h[3], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], 9}, { h[1], 1, 12}, { h[3], 10, 3}, {8, h[4], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], 9}, { h[1], 1, 12}, { h[3], 10, 3}, {8, h[2], 6}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 7}, {12, h[2], 1}, {3, h[4], 10}, {9, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], 7}, {12, h[4], 1}, {3, h[2], 10}, {9, h[3], 4}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 7, h[1]}, {11, 1, h[2]}, {2, 10, h[4]}, {8, 4, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, 7, h[1]}, {11, 1, h[4]}, {2, 10, h[2]}, {8, 4, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 8}, { h[2], 12, 2}, { h[4], 3, 11}, { h[3], 9, 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, 8}, { h[4], 12, 2}, { h[2], 3, 11}, { h[3], 9, 5}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 5}, {7, 3, 9}, {4, 12, 6}, { h[3], h[4], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 5}, {7, 3, 9}, {4, 12, 6}, { h[3], h[2], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 5}, {7, 3, 9}, {4, 12, 6}, { h[4], h[3], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 5}, {7, 3, 9}, {4, 12, 6}, { h[2], h[3], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[2]}, {7, 1, 9}, {4, 10, 6}, {8, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[4]}, {7, 1, 9}, {4, 10, 6}, {8, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], h[1]}, {7, 1, 9}, {4, 10, 6}, {8, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], h[1]}, {7, 1, 9}, {4, 10, 6}, {8, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 5}, {9, 3, 7}, {6, 12, 4}, { h[3], h[4], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 5}, {9, 3, 7}, {6, 12, 4}, { h[3], h[2], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 5}, {9, 3, 7}, {6, 12, 4}, { h[4], h[3], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 5}, {9, 3, 7}, {6, 12, 4}, { h[2], h[3], 8}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 6}, {8, 7, 3}, {5, 4, 12}, { h[3], h[4], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 6}, {8, 7, 3}, {5, 4, 12}, { h[3], h[2], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 6}, {8, 7, 3}, {5, 4, 12}, { h[4], h[3], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 6}, {8, 7, 3}, {5, 4, 12}, { h[2], h[3], 9}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[2], 4}, {3, 9, 8}, {12, 6, 5}, { h[3], h[4], 7}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], h[4], 4}, {3, 9, 8}, {12, 6, 5}, { h[3], h[2], 7}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], h[1], 4}, {3, 9, 8}, {12, 6, 5}, { h[4], h[3], 7}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], h[1], 4}, {3, 9, 8}, {12, 6, 5}, { h[2], h[3], 7}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[2]}, {9, 1, 7}, {6, 10, 4}, {8, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[1], h[4]}, {9, 1, 7}, {6, 10, 4}, {8, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[2], h[1]}, {9, 1, 7}, {6, 10, 4}, {8, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{5, h[4], h[1]}, {9, 1, 7}, {6, 10, 4}, {8, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[2]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[1], h[4]}, {8, 7, 1}, {5, 4, 10}, {9, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[2], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{6, h[4], h[1]}, {8, 7, 1}, {5, 4, 10}, {9, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], h[2]}, {1, 9, 8}, {10, 6, 5}, {7, h[3], h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[1], h[4]}, {1, 9, 8}, {10, 6, 5}, {7, h[3], h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[2], h[1]}, {1, 9, 8}, {10, 6, 5}, {7, h[4], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{4, h[4], h[1]}, {1, 9, 8}, {10, 6, 5}, {7, h[2], h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[2]}, {8, 7, 2}, {5, 4, 11}, { h[3], 9, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 6, h[4]}, {8, 7, 2}, {5, 4, 11}, { h[3], 9, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 6, h[1]}, {8, 7, 2}, {5, 4, 11}, { h[4], 9, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 6, h[1]}, {8, 7, 2}, {5, 4, 11}, { h[2], 9, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[2]}, {2, 9, 8}, {11, 6, 5}, { h[3], 7, h[4]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[1], 4, h[4]}, {2, 9, 8}, {11, 6, 5}, { h[3], 7, h[2]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[2], 4, h[1]}, {2, 9, 8}, {11, 6, 5}, { h[4], 7, h[3]}}}], OrderedNet[{{1, 1}, {{ h[1], 5, h[2]}, { h[3], 2, h[4]}}}] -> OrderedNet[{{1, 1, 1, 1}, {{ h[4], 4, h[1]}, {2, 9, 8}, {11, 6, 5}, { h[2], 7, h[3]}}}]}; CloudGet["https://wolfr.am/Llmq1gdc"]; GraphicsGrid[ Partition[ Labeled[Graph[finalStatesPlot[\$rewritesOrdered24h4[[#]]]@9, ImageSize -> 1.2 {200, 150}], ResourceFunction[ "OrderedGraphModelPlot"][\$rewritesOrdered24h4[[#]], Automatic, Append[#, ImageSize -> 35] & /@ {#2, #3}, "ArrowImageSize" -> 15]] & @@@ {{45, {VertexSize -> 0.35}, {VertexSize -> 0.45}}, {18, {VertexSize -> 0.35}, {VertexSize -> 0.45}}, {11, {VertexSize -> 0.35}, {VertexSize -> 0.45}}, {21, {VertexSize -> 0.35, VertexCoordinates -> {1 -> {1.2, 1.8}, 2 -> {1.2, 0.6}, 3 -> {2.41, 2.40}, 4 -> {0, 0.01}, 5 -> {0.01, 2.41}, 6 -> {2.40, 0}}}, {VertexSize -> 0.45}}, {17, {VertexSize -> 0.35}, {VertexSize -> 0.45}}, {31, {VertexSize -> 0.35}, {VertexSize -> 0.45}}}, 3], ImageSize -> Full]

Our models are based on directed (or ordered) hypergraphs. And although the notion is not as natural as for ordinary graphs, one can also consider undirected (or unordered) hypergraphs, in which all elements in a hyperedge are in effect unordered and equivalent. (In general one can also imagine considering any specific set of permutations of elements to be equivalent.)

For unordered hypergraphs one can still use a representation like

{{1, 2, 3}, {1, 2, 4}, {3, 4, 5}}

but now there are no arrows needed within each hyperedge:

\$hyperedgePattern = {_, _, _ ..}; unorderedHypergraphPlot[edges_, opts : OptionsPattern[]] := ResourceFunction["WolframModelPlot"][edges, opts, "ArrowheadLength" -> 0, EdgeStyle -> <|\$hyperedgePattern -> Transparent|>, "EdgePolygonStyle" -> <|\$hyperedgePattern -> Directive[Hue[0.63, 0.66, 0.81], Opacity[0.1], EdgeForm[Directive[Hue[0.63, 0.7, 0.5], Opacity[0.7]]]]|>] unorderedHypergraphPlot[{{1, 2, 3}, {1, 2, 4}, {3, 4, 5}}, VertexLabels -> Automatic]

There are considerably fewer unordered hypergraphs with a given signature than ordered ones:

results = <|{1, 2} -> 2, {2, 2} -> 8, {3, 2} -> 32, {4, 2} -> 167, {5, 2} -> 928, {6, 2} -> 5924, {7, 2} -> 40211, {8, 2} -> 293370, {1, 3} -> 5, {2, 3} -> 102, {3, 3} -> 3268, {4, 3} -> 164391, {1, 4} -> 15, {2, 4} -> 2032, {3, 4} -> 678358, {1, 5} -> 52, {2, 5} -> 57109, {1, 6} -> 203, {2, 6} -> 2089513, {9, 2} -> 2255406, {10, 2} -> 18201706|>; resultsu = <|{1, 2} -> 2, {1, 3} -> 3, {1, 4} -> 5, {1, 5} -> 7, {1, 6} -> 11, {2, 2} -> 4, {2, 3} -> 15, {2, 4} -> 51, {2, 5} -> 164, {2, 6} -> 499, {3, 2} -> 11, {3, 3} -> 107, {3, 4} -> 1048, {4, 2} -> 30, {4, 3} -> 1098, {5, 2} -> 95, {6, 2} -> 328, {7, 2} -> 1211, {8, 2} -> 4779, {9, 2} -> 19902, {10, 2} -> 86682|>; Row[ Grid[#, Frame -> All, Alignment -> Right, Background -> {None, {GrayLevel[0.94], White}}, BaseStyle -> "Text", FrameStyle -> GrayLevel[0.7], ItemSize -> {Automatic, Automatic}] & /@ (Prepend[#, Text[Style[#, FontSize -> .85 Inherited, GrayLevel[0.3]]] & /@ {"", "ordered", "unordered"}] & /@ Partition[ KeyValueMap[{RSF0[{#1}], #2[[1, 1]], #2[[1, 2]]} &, KeySortBy[Merge[{results, resultsu}, List], Last]], UpTo[7]]), Spacer[10]]

There is a translation between unordered hypergraphs and ordered ones, or specifically between unordered hypergraphs and directed graphs. Essentially one creates an incidence graph in which each node and each hyperedge in the unordered hypergraph becomes a node in the directed graphso that the unordered hypergraph above becomes:

unorderedHyperedgesToGraph[edges_] := Catenate[ Replace[edges, vertices_ :> Thread[Unique[] -> vertices], {1}]] ResourceFunction["WolframModelPlot"][ List @@@ {Subscript[e, 1] -> 1, Subscript[e, 1] -> 2, Subscript[e, 1] -> 3, Subscript[e, 2] -> 1, Subscript[e, 2] -> 2, Subscript[e, 2] -> 4, Subscript[e, 3] -> 3, Subscript[e, 3] -> 4, Subscript[e, 3] -> 5}, VertexLabels -> Automatic, VertexCoordinates -> Join[Thread[ Range[5] -> 2 {{0.0003547329789846546, 0.8769938789443951}, {0., 0.}, {0.9672281996399417, 0.8316900060630508}, {0.9679020303903355, 0.04470608265112599}, {2.0795992235177945`, 0.4386598455355085}}], Thread[Subscript[e, #] & /@ Range[3] -> 2 RegionCentroid /@ {Polygon[CompressedData[" 1:eJwBUQGu/iFib1JlAgAAABQAAAACAAAAUsqrlm4/Nz/l46d3VRDsPyhXuDaD b6C/QkALgqwZ6T/rgJjtNlmkv+IX978/WOg/F2bcivesp7/5j7yyCZTnP4pL xr7MaKq/5Kiwhn7N5j+fZ88uGIusv4KvrMkTBeY/A1l9Z5YSrr9MmV0lQDvl P4kMrZtf/q6/joBAGXtw5D/NG0gy6E2vvx5LwrM8peM/F+fvV4Fgr7+wB6LU AdfQP4pmbziaE6+/0rp6BgaBzj+ZakbtcCquv1SuWLLlVcs/Y5AegY+lrL9f TIPtgi7IP53YTTTchaq/saXuwbsMxT+kNZbymMynv937/uZq8sE/7b0DkGJ7 pL+UlHJTzcK9P3u2d9svlKC/fd9jqv+2tz92xtm5xi/EPSFSvkj4ZNg9juzG A1AizT3C2VLhO+vJPezWp42I8+4/kNgTXDSd6j/td66/ "]], Polygon[{{0.0003547330576579883, 0.8769938789662595}, {4.6399270336140204`*^-11, 7.970665393299047*^-11}, {7.502616214377227*^-11, 6.656904337593923*^-11}, {0.9679020304112437, 0.04470608267395885}}], Polygon[{{0.9672281997197806, 0.8316900060640394}, {0.967902030452301, 0.04470608265828532}, {2.079599223555877, 0.43865984562540256`}}]}]]]

But despite this equivalence, just as in the case of ordered graphs, the sequence of rules will be different in an enumeration based on unordered hypergraphs from one based on ordered hypergraphs.

There are many fewer rules with a given signature for unordered hypergraphs than for ordered ones:

results = <|({{1, 2}} -> {{1, 2}}) -> 11, ({{1, 2}} -> {{2, 2}}) -> 73, ({{2, 2}} -> {{1, 2}}) -> 64, ({{1, 3}} -> {{1, 3}}) -> 178, ({{1, 2}} -> {{3, 2}}) -> 506, ({{3, 2}} -> {{1, 2}}) -> 416, ({{2, 2}} -> {{2, 2}}) -> 562, ({{1, 4}} -> {{1, 4}}) -> 3915, ({{1, 2}} -> {{4, 2}}) -> 3740, ({{4, 2}} -> {{1, 2}}) -> 3011, ({{2, 2}} -> {{3, 2}}) -> 4702, ({{3, 2}} -> {{2, 2}}) -> 4688, ({{1, 3}} -> {{2, 3}}) -> 9373, ({{2, 3}} -> {{1, 3}}) -> 8413, ({{1, 2}} -> {{5, 2}}) -> 28959, ({{5, 2}} -> {{1, 2}}) -> 23211, ({{2, 2}} -> {{4, 2}}) -> 40405, ({{4, 2}} -> {{2, 2}}) -> 42955, ({{3, 2}} -> {{3, 2}}) -> 48554, ({{2, 3}} -> {{3, 3}}) -> 79359764, ({{1, 3}} -> {{4, 3}}) -> 53644781, ({{2, 2}} -> {{5, 2}}) -> 353462, ({{1, 3}} -> {{3, 3}}) -> 637568, ({{3, 3}} -> {{1, 3}}) -> 568462, ({{1, 4}} -> {{2, 4}}) -> 2022956, ({{2, 4}} -> {{1, 4}}) -> 1891285, ({{2, 3}} -> {{2, 3}}) -> 772696|>; resultsu = <|({{1, 2}} -> {{1, 2}}) -> 5, ({{1, 2}} -> {{2, 2}}) -> 19, ({{2, 2}} -> {{1, 2}}) -> 16, ({{1, 3}} -> {{1, 3}}) -> 22, ({{1, 2}} -> {{3, 2}}) -> 71, ({{3, 2}} -> {{1, 2}}) -> 59, ({{2, 2}} -> {{2, 2}}) -> 76, ({{1, 4}} -> {{1, 4}}) -> 84, ({{1, 2}} -> {{4, 2}}) -> 296, ({{4, 2}} -> {{1, 2}}) -> 235, ({{2, 2}} -> {{3, 2}}) -> 348, ({{3, 2}} -> {{2, 2}}) -> 347, ({{1, 3}} -> {{2, 3}}) -> 257, ({{2, 3}} -> {{1, 3}}) -> 223, ({{1, 2}} -> {{5, 2}}) -> 1266, ({{5, 2}} -> {{1, 2}}) -> 998, ({{2, 2}} -> {{4, 2}}) -> 1657, ({{4, 2}} -> {{2, 2}}) -> 1697, ({{3, 2}} -> {{3, 2}}) -> 1900, ({{2, 2}} -> {{5, 2}}) -> 7992|>; CloudGet["https://wolfr.am/Llmq1gdc"]; Row[ Grid[Prepend[#, Text[Style[#, FontSize -> .85 Inherited, GrayLevel[0.3]]] & /@ {"", "unordered", "ordered"}], Frame -> All, Alignment -> {{Center, Right, Right}}, Background -> {None, {GrayLevel[0.94], White}}, BaseStyle -> "Text", FrameStyle -> GrayLevel[0.7], ItemSize -> {Automatic, Automatic}] & /@ Partition[{RuleSignatureForm[#], Lookup[resultsu, #], Lookup[results, #]} & /@ SortBy[Keys[resultsu], #[[1, 1, 2]] &], 10], Spacer[10]]

Here is an example of a 23 33 rule for unordered hypergraphs:

{{x, y, z}, {u, v, z}} -> {{x, x, w}, {u, v, x}, {y, z, y}}
RulePlot[ResourceFunction[ "WolframModel"][{{x, y, z}, {u, v, z}} -> {{x, x, w}, {u, v, x}, {y, z, y}}], "ArrowheadLength" -> 0, EdgeStyle -> <|{_, _, _ ..} -> Transparent|>, "EdgePolygonStyle" -> <|\$hyperedgePattern -> Directive[Hue[0.63, 0.66, 0.81], Opacity[0.1], EdgeForm[Directive[Hue[0.63, 0.7, 0.5], Opacity[0.7]]]]|>]

Starting from an unordered double ternary self-loop, this evolves as:

CloudGet["https://wolfr.am/Llmq1gdc"]; unorderedHypergraphEvolutionStatesPlots[{{x, y, z}, {u, v, z}} -> {{x, x, w}, {u, v, x}, {y, z, y}}, 10, "MaxImageSize" -> 100]

In general the behavior seen for unordered rules with a given signature is considerably simpler than for ordered rules with the same signature. For example, here is typical behavior seen with a random set of unordered 23 33 rules:

unoTestPicture[wfrWolframModel_, rule_] := If[! ResourceFunction["ConnectedHypergraphQ"][#], Nothing, unorderedHypergraphPlot[#] -> rule] &[ orderedToUnorderedHypergraph@ wfrWolframModel[unorderedToOrderedHypergraphRule[rule], initialUnorderedHypergraphSelfLoop@rule, Automatic][ "FinalState"]]; With[{wfrWolframModel = ResourceFunction["WolframModel"]}, GraphicsGrid[Partition[SeedRandom[52342]; Take[DeleteDuplicates[ First /@ Map[unoTestPicture[wfrWolframModel, #] &, Table[ResourceFunction[ "RandomWolframModel"][{{2, 3}} -> {{3, 3}}], 200]]], 50], 10], ImageSize -> Full]]

In ordered 23 33 rules, globular structures are quite common; in the unordered case they are not. Once one reaches 23 43 rules, however, globular structures become common even for unordered hypergraph rules:

{{x, y, z}, {u, y, v}} -> {{x, w, w}, {x, s, z}, {z, s, u}, {y, v, w}}
CloudGet["https://wolfr.am/Llmq1gdc"]; unorderedHypergraphEvolutionStatesPlots[{{x, y, z}, {u, y, v}} -> {{x, w, w}, {x, s, z}, {z, s, u}, {y, v, w}}, 5, "MaxImageSize" -> 100]
CloudGet["https://wolfr.am/Llmq1gdc"]; unoPicture[rule_, steps_] := unorderedHypergraphPlot@ orderedToUnorderedHypergraph@ ResourceFunction["WolframModel"][ unorderedToOrderedHypergraphRule[rule], initialUnorderedHypergraphSelfLoop@rule, steps]["FinalState"]; unoPicture[{{x, y, z}, {u, y, v}} -> {{x, w, w}, {x, s, z}, {z, s, u}, {y, v, w}}, 10]

It is worth noting that the concept of unordered hypergraphs can also be applied for binary hyperedges, in which case it corresponds to undirected ordinary graphs. We discussed above the specific case of trivalent undirected graphs, but one can also consider enumerating rules that allow any valence.

An example is

{{x, y}, {x, z}} -> {{x, w}, {y, z}, {y, w}, {z, w}}

which evolves from an undirected double self-loop according to:

CloudGet["https://wolfr.am/Llmq1gdc"]; unorderedHypergraphEvolutionStatesPlots[{{x, y}, {x, z}} -> {{x, w}, {y, z}, {y, w}, {z, w}}, 9, "MaxImageSize" -> 100]

This rule is similar, but not identical, to a rule we have often used as an example:

{{x, y}, {x, z}} -> {{x, y}, {x, w}, {y, w}, {z, w}}

Interpreting this rule as referring to undirected graphs, it evolves according to:

CloudGet["https://wolfr.am/Llmq1gdc"]; unorderedHypergraphEvolutionStatesPlots[{{x, y}, {x, z}} -> {{x, y}, {x, w}, {y, w}, {z, w}}, 8, "MaxImageSize" -> 100]

In general, rules for undirected graphs of a given signature yield significantly simpler behavior than rules of the same signature for directed graphs. And, for example, even among all the 7992 distinct 22 52 rules for undirected graphs, no globular structures are seen.

Hypergraphs provide a convenient approach to representing our models. But there are other approaches that focus more on the symbolic structure of the models. For example, we can think of a rule such as

{{x, y, z}, {z, u, v}} -> {{w, z, v}, {z, x, w}, {w, y, u}}

as defining a transformation for expressions involving a ternary operator f together with a commutative and associative (n-ary) operator :

Apply[f, Apply[ SmallCircle, {{x, y, z}, {z, u, v}} -> {{w, z, v}, {z, x, w}, {w, y, u}}, {1}], {2}]

In this formulation, the operator can effectively be arbitrarily nested. But in the usual setup of our models, f cannot be nested. One could certainly imagine a generalization in which one considers (much as in [98]) transformations on symbolic expressions with arbitrary structures, represented by pattern rules like

SmallCircle[f[g[x_, y_], z_], f[h[g[z_, x_], x_]]] -> \[Ellipsis]

or even:

SmallCircle[f[g[x_, y_], z_], f[h_[g[z_, x_], h_[x_]]]] -> \[Ellipsis]

And much as in the previous subsection, it is always possible to represent such transformations in our models, for example by having fixed subhypergraphs that act as “markers” to distinguish different functional heads or different “types”. (Similar methods can be used to have literals in addition to pattern variables in the transformations, as well as “named slots” [100].)

Our models can be thought of as abstract rewriting (or reduction) systems that operate on hypergraphs, or general collections of relations. Frameworks such as lambda calculus [101][102] and combinatory logic [103][104] have some similarities, but focus on defining reductions for tree structures, rather than general graphs or hypergraphs.

One can ask how our models relate to traditional mathematical systems, for example from universal algebra [105][106]. One major difference is that our models focus on transformations, whereas traditional axiomatic systems tend to focus on equalities. However, it is always possible to define two-way rules or pairs of rules XY, YX which in effect represent equalities, and on which a variety of methods from logic and mathematics can be used.

The general case of our models seems to be somewhat out of the scope of traditional mathematical systems. However, particularly if one considers the simpler case of string substitution systems, it is possible to see a variety of connections [1:p938]. For example, two-way string rewrites can be thought of as defining the relations for a semigroup (or, more specifically, a monoid). If one adds inverse elements, then one has a group.

One thinks of the strings as corresponding to words in the group. Then the multiway evolution of the system corresponds to starting with particular words and repeatedly applying relations to themto produce other words which for the purposes of the group are considered equivalent.

This is in a sense a dual operation to what happens in constructing the Cayley graph of a group, where one repeatedly adds generators to words, always reducing by using the relations in the group (see 4.17).

For example, consider the multiway system defined by the rule:

{"AB" -> "BA", "BA" -> "AB"}

The first part of the multiway (states) graph associated with this rule is:

ResourceFunction["MultiwaySystem"][{"AB" -> "BA", "BA" -> "AB"}, Flatten[Table[ ResourceFunction["StringTuples"]["AB", n], {n, 4}]], 4, "StatesGraph"]

Ignoring inverse elements (which in this case just make double edges) the first part of the infinite Cayley graph for the group with relations ABBA has the form:

Graph[ResourceFunction[ "CayleyNestGraph"][{{"A", "B"}, {"AB" -> "BA", "BA" -> "AB"}}, {""}, 4], VertexLabels -> None, VertexShapeFunction -> (Text[ Framed[Style[#2, Black], Background -> LightGray], #1] &), GraphLayout -> "SpringElectricalEmbedding"]

One can think of the Cayley graph as being created by starting with a tree, corresponding to the Cayley graph for a free group, then identifying nodes that are related by relations. The edges in the multiway graph (which correspond to updating events) thus have a correspondence to cycles in the Cayley graph.

As one further example, consider the (finite) group S3 which can be thought of as being specified by the relations:

{"" <-> "AA", "AA" <-> "BB", "BB" <-> "ABABAB"}

The Cayley graph in this case is simply:

CayleyGraph[SymmetricGroup[3]]

The multiway graph in this case begins:

GroupToMW[group_] := Module[{gens = FiniteGroupData[group, "Generators"], gmap, rels = FiniteGroupData[group, "DefiningRelations"]}, gmap = Thread[gens -> Take[ToUpperCase[Alphabet[]], Length[gens]]]; TwoWayRule @@@ Partition[ SortBy[(rels /. Equal -> List /. gmap) /. SmallCircle -> StringJoin /. 1 -> "", StringLength], 2, 1]]; ToMultiwaySystem[rels_] := Flatten[rels /. (a_ <-> b_) -> {a -> b, b -> a}]; ResourceFunction["MultiwaySystem"][ ToMultiwaySystem[ GroupToMW[{"SymmetricGroup", 3}]], {""}, 3, "StatesGraph"]

Continuing for a few more steps gives:

GroupToMW[group_] := Module[{gens = FiniteGroupData[group, "Generators"], gmap, rels = FiniteGroupData[group, "DefiningRelations"]}, gmap = Thread[gens -> Take[ToUpperCase[Alphabet[]], Length[gens]]]; TwoWayRule @@@ Partition[ SortBy[(rels /. Equal -> List /. gmap) /. SmallCircle -> StringJoin /. 1 -> "", StringLength], 2, 1]]; ToMultiwaySystem[rels_] := Flatten[rels /. (a_ <-> b_) -> {a -> b, b -> a}]; ResourceFunction["MultiwaySystem"][ ToMultiwaySystem[ GroupToMW[{"SymmetricGroup", 3}]], {""}, 6, "StatesGraphStructure"]

On successive steps, the volumes Σt in these multiway graphs grow like:

ListLinePlot[ Table[ResourceFunction["RaggedMeanAround"][ Values[ResourceFunction["GraphNeighborhoodVolumes"][ ResourceFunction["MultiwaySystem"][ ToMultiwaySystem[GroupToMW[{"SymmetricGroup", 3}]], {""}, t, "StatesGraphStructure"]]]], {t, 8}], Frame -> True, PlotStyle -> ResourceFunction["WolframPhysicsProjectStyleData"][ "GenericLinePlot", "PlotStyles"]]

There does not appear to be any direct correspondence to quantities such as growth rates of Cayley graphs (cf. [22]).