In[]:=
LayeredGraphPlot[MultiwayOperatorSystem[{f[x_,y_]f[y,x]},{f[f[a,b],f[c,d]]},2,"EvolutionCausalGraph"]]
Out[]=
In[]:=
MultiwayOperatorSystem[{f[x_,y_]f[y,x]},{f[f[a,b],f[c,d]]},3,"StatesGraph"]
Out[]=
In[]:=
rules=#1/.{a.a_,b.b_,c.c_}#2/.{a.a,b.b,c.c}&@@@Join[#,Reverse/@#]&a.⊗b.b.⊗a.,a.⊕b.b.⊕a.,a.⊗b.⊕a.,a.⊕b.⊗a.,a.⊗b.⊕c.a.⊗b.⊕a.⊗c.,a.⊕b.⊗c.a.⊕b.⊗(a.⊕c.)
b.
b.
Out[]=
{a_⊗b_b⊗a,a_⊕b_b⊕a,a_⊗(b_⊕)a,a_⊕b_⊗a,a_⊗(b_⊕c_)a⊗b⊕a⊗c,a_⊕b_⊗c_(a⊕b)⊗(a⊕c),b_⊗a_a⊗b,b_⊕a_a⊕b,a_a⊗(b⊕),a_a⊕b⊗,a_⊗b_⊕a_⊗c_a⊗(b⊕c),(a_⊕b_)⊗(a_⊕c_)a⊕b⊗c}
b_
b_
b
b
¬
In[]:=
%277/.OverBarSquare
Out[]=
{a_⊗b_b⊗a,a_⊕b_b⊕a,a_⊗(b_⊕b_)a,a_⊕b_⊗b_a,a_⊗(b_⊕c_)a⊗b⊕a⊗c,a_⊕b_⊗c_(a⊕b)⊗(a⊕c),b_⊗a_a⊗b,b_⊕a_a⊕b,a_a⊗(b⊕b),a_a⊕b⊗b,a_⊗b_⊕a_⊗c_a⊗(b⊕c),(a_⊕b_)⊗(a_⊕c_)a⊕b⊗c}
In[]:=
MultiwayOperatorSystem[{a_⊗b_b⊗a,a_⊕b_b⊕a},{p⊗(q⊗r)},3,"StatesGraph"]
Out[]=
In[]:=
%281
Out[]=
{a_⊗b_b⊗a,a_⊕b_b⊕a,a_⊗(b_⊕b_)a,a_⊕b_⊗b_a,a_⊗(b_⊕c_)a⊗b⊕a⊗c,a_⊕b_⊗c_(a⊕b)⊗(a⊕c),b_⊗a_a⊗b,b_⊕a_a⊕b,a_a⊗(b⊕b),a_a⊕b⊗b,a_⊗b_⊕a_⊗c_a⊗(b⊕c),(a_⊕b_)⊗(a_⊕c_)a⊕b⊗c}
In[]:=
MultiwayOperatorSystem[{a_⊗b_b⊗a,a_⊕b_b⊕a,a_a⊗(b⊕g[b])},{p⊗(q⊗r)},3,"StatesGraph"]
Out[]=
SimpleGraphGraphCatenate[Catenate[GatherBy[(getOperatorStateEvolutionFunction[getOperatorStateEvolutionFunction[Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)]Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)],{a_⊗b_b⊗a,a_⊕b_b⊕a,a_a⊗(b⊕g[b])}Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)]]getOperatorStateEvolutionFunction[Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)]Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)],{a_⊗b_b⊗a,a_⊕b_b⊕a,a_a⊗(b⊕g[b])}Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)]],{a_⊗b_b⊗a,a_⊕b_b⊕a,a_a⊗(b⊕g[b])}getOperatorStateEvolutionFunction[Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)]Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)],{a_⊗b_b⊗a,a_⊕b_b⊕a,a_a⊗(b⊕g[b])}Catenate[{{p ⊗ (r ⊗ q)}, {(q ⊗ r) ⊗ p}, (List ⊗ (b ⊕ g[b]))[p ⊗ (q ⊗ r)], {(CircleTimes ⊗ (b ⊕ g[b]))[p, q ⊗ r]}, {(p ⊗ (b ⊕ g[b])) ⊗ (q ⊗ r)}, {p ⊗ (CircleTimes ⊗ (b ⊕ g[b]))[q, r]}, {p ⊗ ((q ⊗ (b ⊕ g[b])) ⊗ r)}, {p ⊗ (q ⊗ (r ⊗ (b ⊕ g[b])))}, {p ⊗ ((q ⊗ r) ⊗ (b ⊕ g[b]))}, {(p ⊗ (q ⊗ r)) ⊗ (b ⊕ g[b])}}p ⊗ (q ⊗ r)]]]Catenate[getOperatorStateEvolutionFunction[First〚1,1〛First〚1,1〛,{a_⊗b_b⊗a,a_⊕b_b⊕a,a_a⊗(b⊕g[b])}First〚1,1〛]]){p ⊗ (q ⊗ r){}},(First〚1,1〛Sort[First]){p ⊗ (q ⊗ r){}}]]],VertexShapeFunctionText,#1,{0,0}&,EdgeStyleDirective,Dashing[None],AbsoluteThickness[1],PerformanceGoalQuality,VertexWeightNone,{}