In[]:=
ResourceFunction["MultiwayFunctionSystem"][n|->{n+1,2n+1},{1},5,"EvolutionEventsGraphStructure",AspectRatio->1,GraphLayout->"LayeredDigraphEmbedding"]
Out[]=
In[]:=
ResourceFunction["MultiwayFunctionSystem"][n|->{n+1,2n+1},{1},5,"CausalGraphStructure",AspectRatio->1,GraphLayout->"LayeredDigraphEmbedding"]
Out[]=
In[]:=
ResourceFunction["MultiwayFunctionSystem"][n|->{n+2,2n+1},{1},5,"EvolutionEventsGraphStructure",AspectRatio->1,GraphLayout->"LayeredDigraphEmbedding"]
Out[]=
In[]:=
ResourceFunction["MultiwayFunctionSystem"][n|->{n+2,2n+1},{1},7,"StatesGraphStructure",AspectRatio->1,GraphLayout->"LayeredDigraphEmbedding"]
Out[]=
In[]:=
ResourceFunction["MultiwayFunctionSystem"][n|->{n+1,n-1},{1},7,"StatesGraphStructure",AspectRatio->1,GraphLayout->"LayeredDigraphEmbedding"]
Out[]=
In[]:=
ResourceFunction["MultiwayFunctionSystem"][n|->{n+2,n-3},{1},7,"StatesGraphStructure",AspectRatio->1,GraphLayout->"LayeredDigraphEmbedding"]
Out[]=
In[]:=
Graph[ResourceFunction["MultiwaySystem"][{"A"->"BBB","BB"->"A"},"A",6,"EvolutionEventsGraph"],AspectRatio->1]
Out[]=
using so far: the events we the "states" (just integers) are all considered indivisible. And this means that So the only way one state---or the update events that can be applied to it---can "causally depend" on another So what about Later on we'll see how If we explicitly show events in this case we don't see anything new:
But essentially this is because the “states” of the system---here just numbers---are effectively indivisible, and are always used in their entirety to provide the expressions to which the rule is applied.
But in the string multiway system we considered above, the story is different. Because here, for example,
But in the string multiway system we considered above, the story is different. Because here, for example,
Token Events Graph
Token Events Graph
Single history (with a maxscan)
Single history (with a maxscan)
No tokens deduplicated.....
If the tokens were collected into states, one can tell what can be deduplicated based on isomorphism
Branched code
Branched code
Another branch:
Latest master branch:
With branch
With branch
This picks a “random” set of events:
Only one token on LHS, so no conflicts....
Full event set produces all combinatorially possible events (i.e. all reachable tokens)
(Map of all possible events) [For a given history, only a particular multipath will be chosen]
[[ there should be dangling events to indicate events that can happen, whose output tokens we have not yet generated ]]
To get evolution, run this as a Petri net (AKA token flow automaton) (occupancy flow automaton)
[ Place an indicator / marker / chip ... / occupancy ]
WM case
WM case
This is like lemmas ; i.e. a new collection of rules for specific tokens.... Eventually this maps out all tokens that can ever occur.
To reconstruct our experience as an observer: we must knit tokens into states ; we see what tokens exist at a given “moment” based on which ones have markers.....
Spacelike vs. branchlike
Spacelike vs. branchlike
Tokens are spacelike separated.... [output tokens of a single event are spacelike separated]
Spacelike only:
[[ Includes all conceivable events, even ones not reachable from the init cond here ]]
Some pairs can’t appear together; as the markers “wash into” this structure, they can only get to certain places simultaneously....