CombinatorFixedPointList[s[s][s][s[s[s]]][k][s]]
In[]:=
CombinatorMatches[s[s[x][y][s[x][y][z]]][y][z][k[x][y][z]]]
Out[]=
{0}1,{0,0,0,1}1,{0,0,0,1,1}1,{1,0}2
In[]:=
CombinatorMatches[s[s[x][y][s[x][y][z]]][y][z][k[x][y][z]],#]&/@allschemes
Out[]=
{{0,0,0,1,1}1,{0,0,0,1}1,{0}1,{1,0}2,{0}1,{0,0,0,1}1,{0,0,0,1,1}1,{1,0}2,{0,0,0,1,1}1,{0,0,0,1}1,{0}1,{1,0}2,{0,0,0,1,1}1,{0,0,0,1}1,{0}1,{1,0}2,{0,0,0,1,1}1,{0,0,0,1}1,{1,0}2,{0}1,{0,0,0,1,1}1,{0,0,0,1}1,{1,0}2,{0}1,{0}1,{1,0}2,{0,0,0,1}1,{0,0,0,1,1}1,{0}1,{1,0}2,{0,0,0,1}1,{0,0,0,1,1}1}
In[]:=
With[{expr=s[s[x][y][s[x][y][z]]][y][z][k[x][y][z]]},MapAt[SKBox,expr,Sort[Position[expr,(s[_][_][_])|(k[_][_])]]]]//Text
Out[]=
s
s
x
y
s
x
y
z
y
z

k
x
y
[z]
In[]:=
CombinatorMatches[s[s[x][y][s[x][y][z]]][y][z][k[x][y][z]],{"Leftmost","Outermost"}]
Out[]=
{0}1,{0,0,0,1}1,{0,0,0,1,1}1,{1,0}2
In[]:=
CombinatorMatches[s[s[x][y][s[x][y][z]]][y][z][k[x][y][z]],{"Leftmost","Innermost"}]
Out[]=
{0,0,0,1,1}1,{0,0,0,1}1,{0}1,{1,0}2
CombinatorTree[
In[]:=
With[{expr=s[s[x][y][s[x][y][z]]][y][z][k[x][y][z]]},Grid[{Text[#],Text[MapAt[Framed[#,BackgroundLightYellow]&,expr,#]]}&/@Position[expr,s[_][_][_]|k[_][_]],FrameAll]]
Out[]=
{0,0,0,1,1}
ss[x][y]
s[x][y][z]
[y][z][k[x][y][z]]
{0,0,0,1}
s
s[x][y][s[x][y][z]]
[y][z][k[x][y][z]]
{0}
s[s[x][y][s[x][y][z]]][y][z]
[k[x][y][z]]
{1,0}
s[s[x][y][s[x][y][z]]][y][z]
k[x][y]
[z]
In[]:=
With[{expr=s[s[s][s][s[s][k[k][s]][s]]][s][s][s[k[s][k]][k][s]]},MapAt[SKBox,expr,Sort[Position[expr,(s[_][_][_])|(k[_][_])]]]]//Text
Out[]=
s
s
s
s
s
s
k
k
s
s
s
s

s
k
s
k
k
s

In[]:=
With[{expr=s[s[s][s][s[s][k[k][s]][s]]][s][s][s[k[s][k]][k][s]]},Grid[{Text[#],Text[MapAt[Framed[#,BackgroundLightYellow]&,expr,#]]}&/@Position[expr,s[_][_][_]|k[_][_]],FrameAll]]
Out[]=
{0,0,0,1,1,0,1}
ss[s][s]s[s]
k[k][s]
[s][s][s][s[k[s][k]][k][s]]
{0,0,0,1,1}
ss[s][s]
s[s][k[k][s]][s]
[s][s][s[k[s][k]][k][s]]
{0,0,0,1}
s
s[s][s][s[s][k[k][s]][s]]
[s][s][s[k[s][k]][k][s]]
{0}
s[s[s][s][s[s][k[k][s]][s]]][s][s]
[s[k[s][k]][k][s]]
{1,0,0,1}
s[s[s][s][s[s][k[k][s]][s]]][s][s]s
k[s][k]
[k][s]
{1}
s[s[s][s][s[s][k[k][s]][s]]][s][s]
s[k[s][k]][k][s]

In[]:=
ee2=s[s[s][s][s[s][k[k][s]][s]]][s][s][s[k[s][k]][k[k][k]][s]]
Out[]=
s[s[s][s][s[s][k[k][s]][s]]][s][s][s[k[s][k]][k[k][k]][s]]
CombinatorStep[
In[]:=
allschemes
Out[]=
{{Leftmost,Innermost},{Leftmost,Outermost},{Rightmost,Innermost},{Rightmost,Outermost},{Innermost,Leftmost},{Innermost,Rightmost},{Outermost,Leftmost},{Outermost,Rightmost}}
In[]:=
Grid[{#,EvaluationOrderSort[{{0,0,0,1,1,0,1},{0,0,0,1,1},{0,0,0,1},{0},{1,0,0,1},{1}},#]}&/@allschemes,FrameAll]
Out[]=
{Leftmost,Innermost}
{{0,0,0,1,1,0,1},{0,0,0,1,1},{0,0,0,1},{0},{1,0,0,1},{1}}
{Leftmost,Outermost}
{{0},{0,0,0,1},{0,0,0,1,1},{0,0,0,1,1,0,1},{1},{1,0,0,1}}
{RightMost,Innermost}
{{0,0,0,1,1,0,1},{0,0,0,1,1},{0,0,0,1},{0},{1,0,0,1},{1}}
{RightMost,Outermost}
{{0,0,0,1,1,0,1},{0,0,0,1,1},{0,0,0,1},{0},{1,0,0,1},{1}}
{Innermost,Leftmost}
{{0,0,0,1,1,0,1},{0,0,0,1,1},{0,0,0,1},{1,0,0,1},{0},{1}}
{Innermost,RightMost}
{{0,0,0,1,1,0,1},{0,0,0,1,1},{0,0,0,1},{1,0,0,1},{0},{1}}
{Outermost,Leftmost}
{{0},{1},{0,0,0,1},{1,0,0,1},{0,0,0,1,1},{0,0,0,1,1,0,1}}
{Outermost,RightMost}
{{0},{1},{0,0,0,1},{1,0,0,1},{0,0,0,1,1},{0,0,0,1,1,0,1}}
In[]:=
Grid[{#,Row[Framed[Row[#]]&/@EvaluationOrderSort[{{0,0,0,1,1,0,1},{0,0,0,1,1},{0,0,0,1},{0},{1,0,0,1},{1}},#]]}&/@allschemes,FrameAll]
Out[]=
{Leftmost,Innermost}
0001101
00011
0001
0
1001
1
{Leftmost,Outermost}
0
0001
00011
0001101
1
1001
{Rightmost,Innermost}
1001
1
0001101
00011
0001
0
{Rightmost,Outermost}
1
1001
0
0001
00011
0001101
{Innermost,Leftmost}
0001101
00011
0001
1001
0
1
{Innermost,Rightmost}
0001101
00011
1001
0001
1
0
{Outermost,Leftmost}
0
1
0001
1001
00011
0001101
{Outermost,Rightmost}
1
0
1001
0001
00011
0001101
In[]:=
Grid[{#,Row[Framed[Row[#]]&/@EvaluationOrderSort[Keys@CombinatorMatches[ee2],#]]}&/@allschemes,FrameAll]
Out[]=
{Leftmost,Innermost}
0001101
00011
0001
0
1001
101
1
{Leftmost,Outermost}
0
0001
00011
0001101
1
1001
101
{RightMost,Innermost}
0
0001
00011
0001101
1
1001
101
{RightMost,Outermost}
0
0001
00011
0001101
1
1001
101
{Innermost,Leftmost}
0001101
00011
0001
1001
101
0
1
{Innermost,RightMost}
0001101
00011
0001
1001
101
0
1
{Outermost,Leftmost}
0
1
101
0001
1001
00011
0001101
{Outermost,RightMost}
0
1
101
0001
1001
00011
0001101
In[]:=
Grid[{#,Row[Framed[Row[#]]&/@EvaluationOrderSort[Keys@CombinatorMatches[expr],#]]}&/@allschemes,FrameAll]
Out[]=
{Leftmost,Innermost}
0001101
00011
0001
0
1001
1
{Leftmost,Outermost}
0
0001
00011
0001101
1
1001
{RightMost,Innermost}
0
0001
00011
0001101
1
1001
{RightMost,Outermost}
0
0001
00011
0001101
1
1001
{Innermost,Leftmost}
0001101
00011
0001
1001
0
1
{Innermost,RightMost}
0001101
00011
0001
1001
0
1
{Outermost,Leftmost}
0
1
0001
1001
00011
0001101
{Outermost,RightMost}
0
1
0001
1001
00011
0001101
In[]:=
CombinatorFixedPointList[s[s][s][s[s[s]]][k][s],{"Leftmost","Innermost"}]//Length
Out[]=
29
In[]:=
With[{expr=s[s[s][s][s[s][k[k][s]][s]]][s][s][s[k[s][k]][k][s]]},With[{matches=Catch[Extract[expr,Keys[CombinatorMatches[expr]]]]},With[{g=CombinatorTree[expr,VertexSize.7]},HighlightGraph[g,(Flatten[First[Sort@Position[ReleaseHold[AnnotationValue[{g,#},"Subexpression"]&/@VertexList[g]],#,1]]&/@(FunctionToList/@matches)]),GraphHighlightStyle"Thick",VertexSize.8,GraphLayout"LayeredDigraphEmbedding"]]]]
Out[]=
OSZAR »