In[]:=
Clear[recursingCombinatorExpression,explodingCombinatorExpression]
In[]:=
recursingCombinatorExpression[expr_,maxSteps_]:=recursingCombinatorExpression[expr,maxSteps]=!FreeQ[Rest[SKFixedPointEvolveList[expr,∞,maxSteps]],expr]
In[]:=
explodingCombinatorExpression[expr_,maxSteps_]:=explodingCombinatorExpression[expr,maxSteps]=AnyTrue[Catenate[Level[#,{0,∞},HeadsTrue]&/@SKFixedPointEvolveList[expr,∞,maxSteps]],recursingCombinatorExpression[#,maxSteps]&]
In[]:=
explodingCombinatorExpression[s[s[s]][s][s][s][s[k]],200]
Out[]=
True
In[]:=
Select[DownValues[recursingCombinatorExpression],#[[2]]===True&]
Out[]=
{HoldPattern[recursingCombinatorExpression[s[s[k][s[s[k][s[s[k]]][s[s[s[s]][s]][s[k]]]]]][s[k][s[k][s[s[k][s[s[k]]][s[s[s[s]][s]][s[k]]]]]]][s[k][s[s[k][s[s[k]]][s[s[s[s]][s]][s[k]]]]][s[s[k][s[s[k][s[s[k]]][s[s[s[s]][s]][s[k]]]]]]][s[k][s[k][s[s[k][s[s[k]]][s[s[s[s]][s]][s[k]]]]]]]],200]]True}
In[]:=
ListStepPlot[LeafCount/@SKFixedPointEvolveList[s[s[s]][s][s][s][s[k]],10000,500]]
Out[]=
In[]:=
Clear[recursingCombinatorExpression,explodingCombinatorExpression]
In[]:=
recursingCombinatorExpression[expr_,maxSteps_]:=recursingCombinatorExpression[expr,maxSteps]=Or@@((!FreeQ[#,expr]&&!SameQ[#,expr])&/@Rest[SKFixedPointEvolveList[expr,∞,maxSteps]])
In[]:=
explodingCombinatorExpression[expr_,maxSteps_]:=explodingCombinatorExpression[expr,maxSteps]=AnyTrue[Catenate[Level[#,{0,∞},HeadsTrue]&/@SKFixedPointEvolveList[expr,∞,maxSteps]],recursingCombinatorExpression[#,maxSteps]&]
In[]:=
explodingCombinatorExpression[s[s[s]][s][s][s][s[k]],200]
Out[]=
False
In[]:=
explodingCombinatorExpression[s[s][s][s[s]][s][s],25]
Out[]=
False
In[]:=
explodingCombinatorExpression[s[s][s][s[s]][s][s],50]
Out[]=
False
In[]:=
explodingCombinatorExpression[s[s][s][s[s]][s][s],60]
Out[]=
False