With a single-edge LHS, all rules are trivially causal invariant, but give tree causal networks...

Except for single-edge-LHS rules, non-overlappingness is contingent on particular initial conditions

But there could be causal invariance without non-overlappinginess
And this could be independent of initial conditions

To find: simplest causal invariant rules

String Case

Is non-overlappingness equivalent to causal invariance?

"AA""AA"
is causal invariant, but is overlapping....

Causal invariance checking

In[]:=
ResourceFunction["CausallyInvariantQ"][{"AB""BA"},{"AAAAABBBB"},5]
Out[]=
True
In[]:=
ResourceFunction["CausallyInvariantQ"][{"AB""BA"},{"AAAAABBBB"},2]
Out[]=
True
In[]:=
ResourceFunction["CausallyInvariantQ"][{"AA""AA"},{"AAAA"},2]
Out[]=
True
ResourceFunction["CausallyInvariantQ"][{"AA""AA"},{"AAAA"},2]
In[]:=
ResourceFunction["StringTuples"]
ResourceObject
:The ResourceObject StringTuples could not be found.
Out[]=
$Failed