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

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