In[]:=
Rotate[GridGraph[{10,10},DirectedEdges->True],-3Pi/4]
Out[]=
In[]:=
VertexDelete[ResourceFunction["SubstitutionSystemCausalGraph"]["BA"->"AB",StringRepeat["BA",20],20,"IncludeInitializationEvents"->True],1]//LayeredGraphPlot
Out[]=
In[]:=
LayeredGraphPlot[ResourceFunction["SubstitutionSystemCausalGraph"][{"A"->"AB","BB"->"BB"},"A",10],AspectRatio->1]
Out[]=
In[]:=
ResourceFunction["SubstitutionSystemCausalGraph"][{"A"->"AC","B"->"CB","CC"->"CC"},"AB",8,"IncludeInitializationEvents"->True]
Out[]=
In[]:=
TraceCausalGraph[f[a[3]],"IncludeInitialEvent"->True,GraphLayout->"SpiralEmbedding"(*,VertexShapeFunction->Automatic*)]//VertexList
Out[]=
(0HoldComplete[Missing[]])
{-1}{}

(1HoldComplete[f[a[3]]]),(1HoldComplete[f[a[3]]])
{}{1}

(2HoldComplete[f[f[a[3-1],b]]]),(2HoldComplete[f[f[a[3-1],b]]])
{1}{1,1,1}

(3HoldComplete[f[f[a[2],b]]]),(3HoldComplete[f[f[a[2],b]]])
{1,1,1}{1,1}

(4HoldComplete[f[f[f[a[2-1],b],b]]]),(4HoldComplete[f[f[f[a[2-1],b],b]]])
{1,1}{1,1,1,1}

(5HoldComplete[f[f[f[a[1],b],b]]]),(5HoldComplete[f[f[f[a[1],b],b]]])
{1,1,1,1}{1,1,1}

(6HoldComplete[f[f[f[f[a[1-1],b],b],b]]]),(6HoldComplete[f[f[f[f[a[1-1],b],b],b]]])
{1,1,1}{1,1,1,1,1}

(7HoldComplete[f[f[f[f[a[0],b],b],b]]]),(7HoldComplete[f[f[f[f[a[0],b],b],b]]])
{1,1,1,1,1}{1,1,1,1}

(8HoldComplete[f[f[f[f[0,b],b],b]]]),(8HoldComplete[f[f[f[f[0,b],b],b]]])
{1,1,1,1}{1,1}

(9HoldComplete[f[f[f[0,f[b,b]],b]]]),(9HoldComplete[f[f[f[0,f[b,b]],b]]])
{1,1}{1,1,2}

(10HoldComplete[f[f[f[0,f[c,c]],b]]]),(10HoldComplete[f[f[f[0,f[c,c]],b]]])
{1,1,2}{1}

(11HoldComplete[f[f[0,f[f[c,c],b]]]]),(11HoldComplete[f[f[0,f[f[c,c],b]]]])
{1}{1,2}

(12HoldComplete[f[f[0,f[c,f[c,b]]]]]),(12HoldComplete[f[f[0,f[c,f[c,b]]]]])
{1,2}{1,2,2}

(13HoldComplete[f[f[0,f[c,f[c,c]]]]])
In[]:=
ClearAll[a,b,c,f]​​a[n_]:=f[a[n-1],b]​​a[0]:=c​​f[f[x_,y_],z_]:=f[x,f[y,z]]​​(*f[c,x_]:=f[c,x]*)​​f[c,b]:=f[c,c]​​TraceCausalGraph[f[a[3]],30,(*expr_/;FreeQ[Unevaluated[expr],HoldPattern[f[f[c,Except[_f]],_]]],*)"IncludeInitialEvent"->True,GraphLayout->"SpiralEmbedding"(*,VertexShapeFunction->Automatic*)]
Out[]=
In[]:=
ClearAll[a,b,c]
In[]:=
MultiEvaluate[f[a],5,"CausalGraph","ExplicitRules"->{a->Sequence[a,b]},"EventSelectionFunction"->Generational(*/*OperatorApplied[Take][UpTo[1]]*)]//EdgeList
Out[]=
f[a]
{{{1}},Generational,{aSequence[a,b]},1,{1}}

f[a,b]f[a,b]
{{{1}},Generational,{aSequence[a,b]},1,{1,1}}

f[a,b,b],f[a,b]
{{{1}},Generational,{aSequence[a,b]},1,{1,1}}

f[a,b,b]f[a,b,b]
{{{1}},Generational,{aSequence[a,b]},1,{1,1,1}}

f[a,b,b,b],f[a,b,b]
{{{1}},Generational,{aSequence[a,b]},1,{1,1,1}}

f[a,b,b,b]f[a,b,b,b]
{{{1}},Generational,{aSequence[a,b]},1,{1,1,1,1}}

f[a,b,b,b,b],f[a,b,b,b]
{{{1}},Generational,{aSequence[a,b]},1,{1,1,1,1}}

f[a,b,b,b,b]f[a,b,b,b,b]
{{{1}},Generational,{aSequence[a,b]},1,{1,1,1,1,1}}

f[a,b,b,b,b,b]
In[]:=
MultiEvaluate[{1},3,"ExplicitRules"->{1->Sequence[1,2],2->3}]​​%//linkPositions
Out[]=
{{{1},{2}},Explicit,1Sequence[1,2],1,{1}}{1,2}{{{2}},Explicit,23,1,{1,1}}{1,3}{{{1},{2}},Explicit,1Sequence[1,2],1,{1,1,1}}{1,2,3},{{{1},{2}},Explicit,1Sequence[1,2],1,{1,2}}{1,2,2}{{{2}},Explicit,23,1,{1,2,1}}{1,3,2},{{{3}},Explicit,23,1,{1,2,2}}{1,2,3},{{{1},{2}},Explicit,1Sequence[1,2],1,{1,2,3}}{1,2,2,2}