Stringmol is a “string-based programming language”, which uses encoded molecules as strings of operation code . It acts as an artificial chemistry system that displays the continuous appearance of chemical species. Stringmol has a functionality that allows probabilistic binding, which means that an interaction between molecules can occur by chance. Among many goals in artificial life, Stringmol research and its development aim to show open-ended novelty. 


Stringmol consists of two symbol types, Templates (the set {‘A’,… ‘Z’}) and Functional (the set {‘$’, ‘>’, ‘^’, ‘?’, ‘=’, ‘%’, ‘}’ }), and four pointer types,  Instruction, Flow, Read and Write.

With these types, Stringmol exhibits a soft binding of DNA interactions. Soft binding refers to the type of bind using a ‘soft’ matching algorithm. “Less good matches have a lower probability of binding” in soft binding. This type of binding is necessary to express genes through their phenotypes. The binding probability that is used for binding molecules determines the alignment length and accuracy. Where the binding occurs affects which molecule is active and where the reaction program starts.

The four types of pointers direct the code of a reaction to initiate and carry out different actions. For example, assume that there are two chemical molecules we want to bind using Stringmol. The two molecules would initially need to be represented in a specific format of strings that Stringmol can read. The Instruction pointer points at the next code to be executed and increments. The Flow pointer moves around via the ‘$’ operator and other pointers then follow. The Read pointer reads the code source of the second Stringmol string when it encounters the ‘=’ symbol in the first Stringmol string. As shown in the example in figure 2, when the Instruction pointer is pointing at the ‘=’ symbol, the big R (which represents the Read Pointer) is located at the beginning of the second string, which is the serial of template symbols on top. The Write pointer writes the code to the end of the second Stringmol string that the Read pointer just read at the end of the first string, which is the serial of template symbols on the bottom. As shown in the example in figure 2, when the Instruction pointer is pointing at the ‘=’ symbol, the big W (which represents the Write pointer) is located at the end of the first string, which is the serial of template symbols on the bottom. In addition to the feature of binding two Stringmol strings, there also is a feature in Stringmol, in which a group of Stringmol molecules based on the initial molecules specified can be run to observe the dynamics of any system. In this feature, a mutation option can even be turned on to see the system evolve. 

             Figure 2: Stringmol Pointers


As mentioned previously, “open-ended novelty is one of the goals of artificial life. True open-endedness is a process of a model eventually moving outside of its parent. Through Stringmol, true open-endedness was observed as it produced novelty that was classified into the list of the three types: variation, innovation and emergence

Susan Stepney and Simon Hickinbotham tested Stringmol’s potential for these types of open-ended evolution in “Innovation, Variation, and Emergence in an Automata Chemistry” . In the beginning, a sequence of code was executed and replicas of Stringmol strings were designed to copy the strings they bind to. The copied code was executed with a small chance of error with a source of mutation. Over time, the Stringmol successfully carried out mutation and showed all three novelties that account for one of the goals in open-endedness, the authors of the paper claim. 


Hickinbotham, S., & Stepney, S. (2015). Conservation of Matter Increases Evolutionary Activity. 98–105.
Stepney, S., & Hickinbotham, S. (2020). Innovation, Variation, and Emergence in an Automata Chemistry. The 2020 Conference on Artificial Life, 753–760.