Wolfram Research

Function Repository Resource:

TokenEventGraph (1.2.0) current version: 3.0.0 »

Source Notebook

Generate a token-event graph for multicomputational evolution according to particular rules

Contributed by: Stephen Wolfram and Nikolay Murzin

ResourceFunction["TokenEventGraph"][rules, init, t]

generates a token-event graph for t steps of evolution according to rules from init.

Details and Options

ResourceFunction["TokenEventGraph"] accepts the following options:
"AllSubsets"Truewhether to allow all subsets of tokens to be used in a given event
"TokenDeduplication"Truewhether to deduplicate tokens
"EventDeduplication"Falsewhether to deduplicate events
"EdgeDeduplication"Falsewhether to remove multiedges
"TokenLabeling"Automatichow to label token vertices
"EventLabeling"Nonehow to label event vertices
"TokenMultiplicity"1how many copies of tokens rules are matched against
"TokenRenderingFunction"Identityhow to render tokens
"TokenLabeling"Automatic uses ordinary vertex labels; "TokenLabeling"True uses boxes for each vertex.
"EventLabeling"Automatic uses ordinarily placed vertex labels; "EventLabeling"True uses in-circle labeling for each vertex; "EventLabeling""Colors" uses a different color for each rule index.
"TokenMultiplicity"Automatic uses as many copies of tokens as are needed for arbitrary matching.

Examples

Basic Examples (2) 

Make a token-event graph of a simple rule:

In[1]:=
ResourceFunction["TokenEventGraph"][{{n_} :> {n + 1, n + 2}}, {1, 2},
  2]
Out[1]=

Multiple rules:

In[2]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_} :> {n + 1}, {n_} :> {2 n}}, {1, 2}, 2]
Out[2]=

Scope (1) 

Make a WolframModel-like TokenEventGraph:

In[3]:=
Module[{w = 0}, ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{{x_, y_}, {y_, z_}} :> {{w++, y}, {y, z}, {z, w}, {x, w}}}, {{0, 0}}, 3, AspectRatio -> 1/2]]
Out[3]=

Options (9) 

AllSubsets (1) 

Allow or disallow all subsets of tokens for an event:

In[4]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_, m_} :> {n + m}}, {1, 2, 3, 4}, 2, "AllSubsets" -> True]
Out[4]=
In[5]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_, m_} :> {n + m}}, {1, 2, 3, 4}, 2, "AllSubsets" -> False]
Out[5]=

TokenDeduplication (1) 

Keep or remove duplicate tokens:

In[6]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{f[n_] /; n > 2} :> {f[n - 1], f[n - 2]}}, {f[
   7]}, 4, "TokenDeduplication" -> True]
Out[6]=
In[7]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{f[n_] /; n > 2} :> {f[n - 1], f[n - 2]}}, {f[
   7]}, 4, "TokenDeduplication" -> False]
Out[7]=

EdgeDeduplication (1) 

Remove multiedges:

In[8]:=
ResourceFunction["TokenEventGraph"][{{n_, m_} :> {n + m}}, {1, 2}, 2, "EdgeDeduplication" -> False]
Out[8]=
In[9]:=
ResourceFunction["TokenEventGraph"][{{n_, m_} :> {n + m}}, {1, 2}, 2, "EdgeDeduplication" -> True]
Out[9]=

EventDeduplication (1) 

Keep or remove duplicate events:

In[10]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_} :> {n + 1}, {n_} :> {2 n}}, {1, 2}, 2, "EventDeduplication" -> False]
Out[10]=
In[11]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_} :> {n + 1}, {n_} :> {2 n}}, {1, 2}, 2, "EventDeduplication" -> True]
Out[11]=

TokenMultiplicity (2) 

No token multiplicity:

In[12]:=
ResourceFunction["TokenEventGraph"][{{n_, 2} :> {n + 10}}, {1, 2}, 1, "AllSubsets" -> False]
Out[12]=

Allow token multiplicity:

In[13]:=
ResourceFunction["TokenEventGraph"][{{n_, 2} :> {n + 10}}, {1, 2}, 1, "AllSubsets" -> False, "TokenMultiplicity" -> Automatic]
Out[13]=

TokenLabeling (1) 

Disable custom token labeling:

In[14]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_} :> {n + 1}, {n_} :> {2 n}}, {1, 2}, 2, "TokenLabeling" -> None]
Out[14]=

EventLabeling (1) 

Label events by its rule index:

In[15]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_} :> {n + 1}, {n_} :> {2 n}}, {1, 2}, 2, "EventDeduplication" -> False, "EventLabeling" -> "Colors"]
Out[15]=

TokenRenderingFunction (1) 

Specify rendering for the token:

In[16]:=
ResourceFunction["TokenEventGraph", ResourceVersion->"1.2.0"][{{n_} :> {n + 1}, {n_} :> {2 n}}, {1, 2}, 2, "TokenRenderingFunction" -> (Style[#, 12, Bold, Red] &)]
Out[16]=

Version History

  • 3.0.0 – 22 April 2024
  • 2.2.0 – 14 March 2022
  • 2.1.0 – 07 March 2022
  • 2.0.0 – 23 February 2022
  • 1.2.0 – 15 February 2022
  • 1.1.2 – 19 January 2022

Related Resources

License Information