Multiway merging

Lexicon

State: e.g. “ABAABB”: a state of the underlying substitution system.
Multistate: a collection of states e.g. at a particular step

No merging

Pure tree
Graph[MultiwaySystem[{"A""AA"},{"A"},2,"EvolutionTree"],VertexLabelsAutomatic]
In[]:=
Graph[MultiwaySystem[{AAA},{A},2,EvolutionTree],VertexLabelsAutomatic]
Out[]=
Graph[MultiwaySystem[{"A""AA"},{"A"},2,"EvolutionGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
MultiwaySystem[{"A""ABA","B""A"},{"A"},3,"PredecessorRulesList"]
In[]:=
{{A{}},{ABA{A}},{AAA{ABA},ABABA{ABA,ABA}},{AAABA{AAA,ABABA},AABAA{AAA},ABAAA{AAA,ABABA},ABABABA{ABABA,ABABA,ABABA}}}
Out[]=

[[ Incorrect EvolutionTree ]]

evoltree[list_]:=Graph[Flatten[{Style[#,Dotted]&/@Flatten[Module[{i=1},#{#,i++}&/@Flatten[Last/@#]]&/@list],Flatten[Map[Thread,list,{2}]]}]]
In[]:=
evoltree[MultiwaySystem[{"A""ABA","B""A"},{"A"},3,"PredecessorRulesList"]]
In[]:=
Out[]=
Module[{i=1},#{#,i++}&/@Flatten[Last/@#]]&/@MultiwaySystem[{"A""ABA","B""A"},{"A"},3,"PredecessorRulesList"]
In[]:=
{{},{A{A,1}},{ABA{ABA,1},ABA{ABA,2},ABA{ABA,3}},{AAA{AAA,1},ABABA{ABABA,2},AAA{AAA,3},AAA{AAA,4},ABABA{ABABA,5},ABABA{ABABA,6},ABABA{ABABA,7},ABABA{ABABA,8}}}
Out[]=

[We don’t have a causal graph for this case yet]

Merging of identical states at each step

Graph[MultiwaySystem[{"A""AA","B""AB"},{"ABA"},2,"LayeredCausalGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
Graph[MultiwaySystem[{"A""AA"},{"A"},3,"CausalGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
Graph[MultiwaySystem[{"A""AA"},{"A"},3,"ElementwiseEvolutionCausalGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
MultiwaySystem[{"A""AA"},{"A"},5,"CausalGraph"]
In[]:=
Out[]=
MultiwaySystem[{"A""AA"},{"A"},6,"CausalGraph"]
In[]:=
Out[]=
MultiwaySystem[{"A""AA"},{"A"},7,"CausalGraph"]
In[]:=
Out[]=
Graph[MultiwaySystem[{"BA""AB"},{"BBAA"},5,"CausalGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
Graph[MultiwaySystem[{"BA""AB"},{"BBAA"},5,"EvolutionCausalGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
Graph[MultiwaySystem[{"BA""AB"},{"BBBAAA"},10,"EvolutionCausalGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
LayeredGraphPlot[MultiwaySystem[{"BA""AB"},{"BBBAAA"},10,"EvolutionCausalGraph"],VertexLabelsAutomatic]
In[]:=
Out[]=
MultiwaySystem[{"BA""AB"},{"BBBAAA"},10,"EvolutionPlot"]
In[]:=
Out[]=
MultiwaySystem[{"BA""AB"},{"BBBAAA"},10,"EvolutionPlot","EventRendering""PositionalPolygons"]
In[]:=
Out[]=
MultiwaySystem[{"BA""AB"},{"BBBAAA"},10,"CausalGraph"]
In[]:=
Out[]=

Merging across all steps (traditional causal graph)

Events list

Imagine automatic parallelization of all updating orders

I.e. run the multiway system with every path in the MW system being run on a different parallel processor

Non-multiway causal graph construction

Labeled[SREvolutionGraphicsStreamed[SRXEvolveList[#,"AAABBB",6]],SRRuleGraphic[#]]&[{"AAB""ABBBAA"}]
SMWNetworkPictureR[{"AAB""ABBBAA"},"AAABBB",8,{0},RibbonTrue,RibbonColorTableLast/@$ColorMap,MaxLevel4,ArrowsTrue,NodeSize0.1,SymmetrizedTrue,NodeColorGray]
Relativity vs. QM
In the relationship between events, there can be timelike-separated events which affect each other through updates. There can be spacelike-separated events
There can be branch-separated events which arise from different rewrites of a single expression.
To do list

Specification of events for naming nodes (to agree with “AllEventsList”)

Formatting of evolution causal graphs [ different vertex shapes ]

Using actual strings as vertex shapes in various graphs