Clear[TestMW]
In[]:=
TestMW[{sig_,k_},tuplelen_:3,steps_:4,csteps_:3]:=With[{ab=StringJoin[ToUpperCase[FromLetterNumber[Range[k]]]]},InteractiveListSelectorSW[ParallelMapMonitored[Function[r,Labeled[MultiwaySystem[r,StringTuples[ab,tuplelen],steps,"StatesGraphStructure"],PopupWindow[{Counts[#],TimeConstrained[Select[Extract[StringTuples[ab,tuplelen],Position[#,True]],MultiwaySystem[r,#,csteps,"WeakCausalInvariantQ"]&],20]}&@TimeConstrained[CausalInvariantQ[r,#,csteps]&/@StringTuples[ab,tuplelen],20],r]]r],EnumerateSubstitutionSystemRules[sig,k]]]]
In[]:=

2: 22

TestMW[{{22},2}]
In[]:=
Out[]=

3: 22

TestMW[{{22},3}]
In[]:=
Out[]=
allrules=EnumerateSubstitutionSystemRules[{22},3]
In[]:=
{{AAAA},{AAAB},{AABB},{AABC},{ABAA},{ABAB},{ABAC},{ABBA},{ABBC},{ABCC}}
Out[]=
PopupWindow

2: 12, 21

allrules=EnumerateSubstitutionSystemRules[{12,21},2]
In[]:=
Out[]=
TestMW[{{12,21},2}]
In[]:=
Out[]=
MultiwaySystem[{"A""AA","AA""B"},"ABA",4,"StatesGraph"]
In[]:=
Out[]=
MultiwaySystem[{"A""AA","AA""B"},"ABA",3,"WeakCriticalPairs"]
In[]:=
{{AAABA,BBA},{ABB,ABAAA},{ABBA,BABA},{AAABAA,BBAA},{AABAAA,AABB},{ABAB,ABBA}}
Out[]=
MultiwaySystem[{"A""AA","AA""B"},"ABA",3,"CausalInvariantQ"]
In[]:=
True
Out[]=
MultiwaySystem[{"A""AA","AA""B"},"ABA",4,"CausalInvariantQ"]
In[]:=
False
Out[]=
MultiwaySystem[{"A""AA","AA""B"},"A",4,"StatesGraph"]
In[]:=
Out[]=
​

The Big Run

{{12},2}

{Null}
Out[]=
{{ABB}}
CellPrint[{TextCell[Text[{#,2}],"Section"],ExpressionCell[TestMW[{#,2}],"Output"]}]&/@{{11},{12},{13},{22},{23},{24},{33},{11,11},{12,11},{13,11},{12,12},{12,21},{13,31},{12,22},{13,22},{12,33},{11,11,11},{12,11,11}}
In[]:=

{{11},2}

{{12},2}

Counts::invl:The argument $Aborted is not a list.
(kernel 67)
Counts
:The argument $Aborted is not a list.

{{13},2}

{{22},2}

{{23},2}

{{24},2}

{{ABABBA},{ABBABA}}

{{33},2}

{{11,11},2}

{{12,11},2}

Counts::invl:The argument $Aborted is not a list.
(kernel 67)
Counts::invl:The argument $Aborted is not a list.
(kernel 64)
Counts::invl:The argument $Aborted is not a list.
(kernel 63)
Counts::invl:The argument $Aborted is not a list.
(kernel 61)
Counts::invl:The argument $Aborted is not a list.
(kernel 59)
Counts
:The argument $Aborted is not a list.
Counts
:The argument $Aborted is not a list.
General
:Further output of Counts::invl will be suppressed during this calculation.

{{13,11},2}

Counts::invl:The argument $Aborted is not a list.
(kernel 62)
Counts::invl:The argument $Aborted is not a list.
(kernel 57)
Counts::invl:The argument $Aborted is not a list.
(kernel 56)
Counts::invl:The argument $Aborted is not a list.
(kernel 50)

{{12,12},2}

{{12,21},2}

Counts::invl:The argument $Aborted is not a list.
(kernel 62)
Counts::invl:The argument $Aborted is not a list.
(kernel 60)
Counts::invl:The argument $Aborted is not a list.
(kernel 59)
Counts::invl:The argument $Aborted is not a list.
(kernel 57)
Counts::invl:The argument $Aborted is not a list.
(kernel 56)
Counts::invl:The argument $Aborted is not a list.
(kernel 54)
Counts::invl:The argument $Aborted is not a list.
(kernel 53)
Counts::invl:The argument $Aborted is not a list.
(kernel 61)
Counts::invl:The argument $Aborted is not a list.
(kernel 58)
Counts::invl:The argument $Aborted is not a list.
(kernel 62)
Counts::invl:The argument $Aborted is not a list.
(kernel 60)
Counts::invl:The argument $Aborted is not a list.
(kernel 59)
Counts::invl:The argument $Aborted is not a list.
(kernel 57)

{{13,31},2}

{{12,22},2}

Counts::invl:The argument $Aborted is not a list.
(kernel 62)
Counts::invl:The argument $Aborted is not a list.
(kernel 61)
Counts::invl:The argument $Aborted is not a list.
(kernel 60)
Counts::invl:The argument $Aborted is not a list.
(kernel 59)
Counts::invl:The argument $Aborted is not a list.
(kernel 57)
Counts::invl:The argument $Aborted is not a list.
(kernel 56)
Counts::invl:The argument $Aborted is not a list.
(kernel 55)
Counts::invl:The argument $Aborted is not a list.
(kernel 54)
Counts::invl:The argument $Aborted is not a list.
(kernel 52)
Counts::invl:The argument $Aborted is not a list.
(kernel 51)
Counts::invl:The argument $Aborted is not a list.
(kernel 50)
Counts::invl:The argument $Aborted is not a list.
(kernel 49)
Counts::invl:The argument $Aborted is not a list.
(kernel 48)
Counts::invl:The argument $Aborted is not a list.
(kernel 47)
Counts::invl:The argument $Aborted is not a list.
(kernel 41)
Counts::invl:The argument $Aborted is not a list.
(kernel 40)
Counts::invl:The argument $Aborted is not a list.
(kernel 22)
Counts::invl:The argument $Aborted is not a list.
(kernel 17)

{{13,22},2}

{{12,33},2}

{{11,11,11},2}

{{12,11,11},2}

{Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null}
Out[]=