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 |
| y | z |
k | x | y |
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[#,BackgroundLightYellow]&,expr,#]]}&/@Position[expr,s[_][_][_]|k[_][_]],FrameAll]]
Out[]=
{0,0,0,1,1} | ss[x][y] |
{0,0,0,1} | s |
{0} | |
{1,0} | s[s[x][y][s[x][y][z]]][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 |
| 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[#,BackgroundLightYellow]&,expr,#]]}&/@Position[expr,s[_][_][_]|k[_][_]],FrameAll]]
Out[]=
{0,0,0,1,1,0,1} | ss[s][s]s[s] |
{0,0,0,1,1} | ss[s][s] |
{0,0,0,1} | s |
{0} | |
{1,0,0,1} | s[s[s][s][s[s][k[k][s]][s]]][s][s]s |
{1} | s[s[s][s][s[s][k[k][s]][s]]][s][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,FrameAll]
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,FrameAll]
Out[]=
{Leftmost,Innermost} | |
{Leftmost,Outermost} | |
{Rightmost,Innermost} | |
{Rightmost,Outermost} | |
{Innermost,Leftmost} | |
{Innermost,Rightmost} | |
{Outermost,Leftmost} | |
{Outermost,Rightmost} |
In[]:=
Grid[{#,Row[Framed[Row[#]]&/@EvaluationOrderSort[Keys@CombinatorMatches[ee2],#]]}&/@allschemes,FrameAll]
Out[]=
{Leftmost,Innermost} | |
{Leftmost,Outermost} | |
{RightMost,Innermost} | |
{RightMost,Outermost} | |
{Innermost,Leftmost} | |
{Innermost,RightMost} | |
{Outermost,Leftmost} | |
{Outermost,RightMost} |
In[]:=
Grid[{#,Row[Framed[Row[#]]&/@EvaluationOrderSort[Keys@CombinatorMatches[expr],#]]}&/@allschemes,FrameAll]
Out[]=
{Leftmost,Innermost} | |
{Leftmost,Outermost} | |
{RightMost,Innermost} | |
{RightMost,Outermost} | |
{Innermost,Leftmost} | |
{Innermost,RightMost} | |
{Outermost,Leftmost} | |
{Outermost,RightMost} |
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[]=