Look at pure string systems ... and at https://www.wolframscience.com/metamathematics/rules-applied-to-rules/
In[]:=
ResourceFunction["EnumerateSubstitutionSystemRules"][{2->3},2]
Out[]=
{{AAAAA},{AAAAB},{AAABA},{AAABB},{AABAB},{AABBB},{ABAAA},{ABAAB},{ABABA},{ABBAA}}
Need a range of initial conditions to support S SS
ResourceFunction["EnumerateSubstitutionSystemRules"][{2->3},2]
In[]:=
ResourceFunction["StringTuples"]["AB",5]
Out[]=
{AAAAA,AAAAB,AAABA,AAABB,AABAA,AABAB,AABBA,AABBB,ABAAA,ABAAB,ABABA,ABABB,ABBAA,ABBAB,ABBBA,ABBBB,BAAAA,BAAAB,BAABA,BAABB,BABAA,BABAB,BABBA,BABBB,BBAAA,BBAAB,BBABA,BBABB,BBBAA,BBBAB,BBBBA,BBBBB}
In[]:=
StringReplaceList["AABBAAA",{"AA"->"BAB"}]
Out[]=
{BABBBAAA,AABBBABA,AABBABAB}
In[]:=
StringReplaceList["AA",{"A"->"AA"}]
Out[]=
{AAA,AAA}
In[]:=
mwevolve[rule_,init_,t_]:=NestList[Flatten[StringReplaceList[#,rule]&/@#]&,init,t]
In[]:=
mwevolve[{"A"->"AA"},{"AA"},3]
Out[]=
{{AA},{AAA,AAA},{AAAA,AAAA,AAAA,AAAA,AAAA,AAAA},{AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA,AAAAA}}
In[]:=
mwevolve[{"A"->"ABA"},{"AA"},3]
Out[]=
{{AA},{ABAA,AABA},{ABABAA,ABABAA,ABAABA,ABAABA,AABABA,AABABA},{ABABABAA,ABABABAA,ABABABAA,ABABAABA,ABABABAA,ABABABAA,ABABABAA,ABABAABA,ABABAABA,ABABAABA,ABAABABA,ABAABABA,ABABAABA,ABABAABA,ABAABABA,ABAABABA,ABAABABA,AABABABA,AABABABA,AABABABA,ABAABABA,AABABABA,AABABABA,AABABABA}}
In[]:=
mwevolve[{"A"->"AA"},{"ABA"},3]
Out[]=
{{ABA},{AABA,ABAA},{AAABA,AAABA,AABAA,AABAA,ABAAA,ABAAA},{AAAABA,AAAABA,AAAABA,AAABAA,AAAABA,AAAABA,AAAABA,AAABAA,AAABAA,AAABAA,AABAAA,AABAAA,AAABAA,AAABAA,AABAAA,AABAAA,AABAAA,ABAAAA,ABAAAA,ABAAAA,AABAAA,ABAAAA,ABAAAA,ABAAAA}}
Meaning of self reproduction
Meaning of self reproduction
Generating more copies of a particular structure ... but with the possibility of mutation
Random bath of ambient stuff .... and it’s being recruited to make more of a particular string
[ S ] bloated [ S ] multiple [ S ]s
[ internal clock for replication ]
"....BAAAAB...."->"...BAAAAB.....BAAAAB.."
Multiway update rules ... so any particular multiway path is a particular path of evolution
Sequential substitution system ... with a random match
"BAAxxyAAB"
"BAAyxAAB"
"oooBAAxxyAABooo"
Grid down the endcaps for timing
[ In this model, the only randomness is the updating order ]
Only some multiway branches successfully self reproduce
"...BABCAAB..."
Have to find: the rewrite rule, and the initial string that replicates, and the rewrite order that allows a replication
On one branch of the MW system it can just add dots
"..A.."
In[]:=
ResourceFunction["MultiwaySystem"][{"A"->"A.A"},{".A."},4,"StatesGraph"]
Out[]=
ResourceFunction["MultiwaySystem"][{"AxB"->"A.A"},{".A."},4,"StatesGraph"]
In[]:=
Column[StringJoin/@NestList[Flatten[SequenceReplace[#,{"A",x__,"B"}:>{"A",x,"B",".",".","A",x,"B"}]]&,Characters["..AxxB.."],4]]
Out[]=
..AxxB.. |
..AxxB..AxxB.. |
..AxxB..AxxB..AxxB..AxxB.. |
..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB.. |
..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB..AxxB.. |
[[ Can we do this with bounded range rules? ]]
In[]:=
ResourceFunction["EnumerateSubstitutionSystemRules"][{2->2},2]
Out[]=
{{AAAA},{AAAB},{AABB},{ABAA},{ABAB},{ABBA}}
In[]:=
ResourceFunction["EnumerateSubstitutionSystemRules"][{2->2},3]
Out[]=
{{AAAA},{AAAB},{AABB},{AABC},{ABAA},{ABAB},{ABAC},{ABBA},{ABBC},{ABCC}}