Nest[s,k,3]
In[]:=
s[s[s[k]]]
Out[]=
f[s[s[s[s[s[k]]]]]][s[s[s[k]]]]
EnumerateCombinators[3]
In[]:=
{s[s][s],s[s[s]],s[s][k],s[s[k]],s[k][s],s[k[s]],s[k][k],s[k[k]],k[s][s],k[s[s]],k[s][k],k[s[k]],k[k][s],k[k[s]],k[k][k],k[k[k]]}
Out[]=
testPlus[f_]:=Catch[Table[If[CombinatorFixedPoint[f[Nest[s,k,i]][Nest[s,k,j]],"MaxSize"200,"MaxSteps"100]=!=Nest[s,k,i+j],Throw[False]],{i,5},{j,5}];True]
In[]:=
testPlus[s[s[s]]]
In[]:=
False
Out[]=
testPlus/@EnumerateCombinators[3]
In[]:=
{False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False}
Out[]=
ResourceFunction["ParallelMapMonitored"][testPlus,EnumerateCombinators[4]]
In[]:=
{False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False,False}
Out[]=
With[{n=5},Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testPlus,EnumerateCombinators[n]]]]
In[]:=
{}
Out[]=
With[{n=6},Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testPlus,EnumerateCombinators[n]]]]
In[]:=
{}
Out[]=
With[{n=7},Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testPlus,EnumerateCombinators[n]]]]
In[]:=
{}
Out[]=
With[{n=8},Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testPlus,EnumerateCombinators[n]]]]
In[]:=
{}
Out[]=
testPlusX[f_]:=Catch[Table[If[CombinatorFixedPoint[f[Nest[s,k,i]][Nest[s,k,j]],"MaxSize"200,"MaxSteps"100]=!=Nest[s,k,i+j],Throw[{i,j}]],{i,5},{j,5}];True]
In[]:=
testPlusX/@EnumerateCombinators[4]
In[]:=
{{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{2,1},{1,1},{1,1},{1,1},{2,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,2},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{2,1},{2,1},{2,1},{1,1},{1,1},{1,1},{2,1},{2,1},{1,1},{1,1},{2,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1},{1,1}}
Out[]=
TakeLargestBy[testPlusX/@EnumerateCombinators[6],Max,5]
In[]:=
{{2,1},{2,1},{2,1},{2,1},{2,1}}
Out[]=
inc=s[s[k[s]][k]]
In[]:=
s[s[k[s]][k]]
Out[]=
Nest[inc,s[k],5]
In[]:=
s[s[k[s]][k]][s[s[k[s]][k]][s[s[k[s]][k]][s[s[k[s]][k]][s[s[k[s]][k]][s[k]]]]]]
Out[]=
CombinatorFixedPoint[%]
In[]:=
s[s[k[s]][k]][s[s[k[s]][k]][s[s[k[s]][k]][s[s[k[s]][k]][s[s[k[s]][k]][s[k]]]]]]
Out[]=
plus=s[k[s]][s[k[s[k[s]]]][s[k[k]]]]
In[]:=
s[k[s]][s[k[s[k[s]]]][s[k[k]]]]
Out[]=
LeafCount[plus]
In[]:=
11
Out[]=
testGeneral[f_,ints_,op_]:=Catch[Table[If[CombinatorFixedPoint[f[ints[i]][ints[j]],"MaxSize"200,"MaxSteps"100]=!=ints[op[i,j]],Throw[False]],{i,5},{j,5}];True]
In[]:=
With[{n=4},Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testGeneral[#,Nest[s,s,#]&,Plus]&,EnumerateCombinators[n]]]]
In[]:=
{}
Out[]=
Table[Echo@Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testGeneral[#,Nest[s,s,#]&,Plus]&,EnumerateCombinators[n]]],{n,11}]
In[]:=
{}
»
{}
»
{}
»
{}
»
{}
»
{}
»
{}
»
{}
»
$Aborted
Out[]=
Table[Echo@Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testGeneral[#,Nest[k,k,#]&,Plus]&,EnumerateCombinators[n]]],{n,9}]
In[]:=
{}
»
{}
»
{}
»
{}
»
{}
»
{}
»
{}
»
{}
»
$Aborted
Out[]=
EnumerateCombinators[2]
In[]:=
{s[s],s[k],k[s],k[k]}
Out[]=
Nest[s[k],s[k],4]
In[]:=
s[k][s[k][s[k][s[k][s[k]]]]]
Out[]=
CombinatorFixedPoint[%]
In[]:=
s[k][s[k][s[k][s[k][s[k]]]]]
Out[]=
Clear[inc]
In[]:=
Function[inc,Table[Echo@Pick[EnumerateCombinators[n],ResourceFunction["ParallelMapMonitored"][testGeneral[#,Nest[inc,k,#]&,Plus]&,EnumerateCombinators[n]]],{n,7}]]/@EnumerateCombinators[2]
In[]:=
{}
»