WOLFRAM NOTEBOOK

Non-Identical Results

In[]:=
Clear[f]
In[]:=
f[f[x_]]:=x
In[]:=
f[x_]:=x+1
In[]:=
?f
Out[]=
Symbol
Global`f
Definitions
f[f[x_]]:=x
f[x_]:=x
Full Name
Global`f
In[]:=
MultiEvaluate[f[f[0]],5,"Graph","EvaluatePattern"->_Plus]
Out[]=
Are pure _ pattern matching rules always confluent (i.e. without evaluation of other functions)?
Even in S, K combinators ... in the hypergraph case ... confluence is different
In[]:=
Clear[f]
In[]:=
f[f[x_]]:=x
In[]:=
f[x_]:=g[x]
In[]:=
MultiEvaluate[f[f[0]],5,"Graph"]
Out[]=
In[]:=
MultiEvaluate[f[f[0]],5,"EvolutionCausalGraph"]
Out[]=
If it’s always the same rule that self overlaps, it’ll be confluent [ ?? ]
Cf. x1, x2
In[]:=
MultiEvaluate[x,3,"Graph","ExplicitRules"->{x->1,x->2}]
Out[]=

Side effects are a different way to get distinct results

The only reason is because we’re not seeing the whole symbol table / state of the kernel
Some information is not seen.
In[]:=
Clear[f]

Confluent vs. Non-Confluent Rules

In[]:=
ResourceFunction["EnumerateSubstitutionSystemRules"][{2->2},2]
Out[]=
{{AAAA},{AAAB},{AABB},{ABAA},{ABAB},{ABBA}}
In[]:=
ResourceFunction["TotalCausalInvariantQ"][{"AA"->"AB","B"->"BA"},4]
Out[]=
True
In[]:=
ResourceFunction["MultiwaySystem"][{"AA"->"AB","B"->"BA"},"AA",8,"StatesGraph"]
Out[]=
In[]:=
Clear[f]
In[]:=
f[x_][y_]:=x[x[x]]
In[]:=
MultiEvaluate[f[f[f[f]]][f],10,"Graph",GraphLayout->"LayeredDigraphEmbedding"]
Out[]=

Non-Terminating Rules

Infinities

Combinators

Side Effects

Treelike Separation

Wolfram Cloud

You are using a browser not supported by the Wolfram Cloud

Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.


I understand and wish to continue anyway »

You are using a browser not supported by the Wolfram Cloud. Supported browsers include recent versions of Chrome, Edge, Firefox and Safari.