In[]:=
Nest[SubsetReplace[#,{{x_,y_},{x_,z_}}Sequence[{x,z},{x,{x,y,z}},{y,{x,y,z}},{z,{x,y,z}}]]&,{{•,•},{•,•}},4]
Out[]=
In[]:=
Graph[Rule@@@%]
Out[]=
In[]:=
Graph[Rule@@@#]&/@NestList[SubsetReplace[#,{{x_,y_}}Sequence[{x,{x,y}},{{y,x},x}]]&,{{•,•}},6]
Out[]=
In[]:=
Graph[Rule@@@#]&/@NestList[SubsetReplace[#,{{x_,y_}}Sequence[{x,{x,y}},{x,{y,x}}]]&,{{•,•}},6]
Out[]=
In[]:=
Graph[Rule@@@#]&/@NestList[SubsetReplace[#,{{x_,y_}}Sequence[{x,{x}},{x,{y,x}}]]&,{{•,•}},6]
Out[]=
In[]:=
Graph[Rule@@@#]&/@NestList[SubsetReplace[#,{{x_,y_}}Sequence[{x,{x,x}},{x,{y,x}}]]&,{{•,•}},6]
Out[]=
In[]:=
Graph[Rule@@@#]&/@NestList[SubsetReplace[#,{{x_,y_}}Sequence[{x,{x,x,x}},{x,{y,x}}]]&,{{•,•}},6]
Out[]=
In[]:=
Graph[Rule@@@#]&/@NestList[SubsetReplace[#,{{x_,y_}}Sequence[{x,{x,y,x}},{x,{y,x}}]]&,{{•,•}},6]
Out[]=
In[]:=
Graph[Rule@@@#]&/@NestList[SubsetReplace[#,{{x_,y_}}Sequence[{x,{}},{x,{y,x}}]]&,{{•,•}},6]
Out[]=

Generally: tree on left to tree on right
Some brackets don’t care about order, and some do...

Implementationally, can either move pointers, or do content hashes.

Consider rules where the order of relations doesn’t matter...

I.e. you can sort RHS’es of all rules

Rendering

Two level object: top level is a bunch of nodes...

The trees are like unravelled miniature causal graphs....

What about replicating the whole LHS

Could index new variable [[ but depends on the previous state ]]
Every node would record its creator event, and the chain of previous creator events

Is this making the EvolutionEventsGraph and the StatesGraph

Each “graph copy icon” is showing the whole history of the past light cone of a node

Analogous to constructing numbers using

Event Selection

Which subset of edges do you pick?
In determining that, you can look at the whole history inside each node of each edge.
E.g MaxScan could be based on looking at that history

Relation to States Graph

Vertex names are trees

Relation to Variable-Name-Trees to Multiway System

Sublist sorting