This is the first in a series of posts which have the purpose to explain in detail the chemical concrete machine. Please read the previous posts with the tag chemical concrete machine and also consult the tutorial on graphic lambda calculus, if needed.
As a motivation, see Extreme functional programming done with biological computers.
I look forward for comments, corrections and contributions.
In the following I shall use the name “molecule” in a very loose sense. A molecule is seen as made by other smaller molecules (for example atoms are molecules) which are connected by chemical bonds, or by other molecules called “arrows”. Therefore, a molecule is seen as a graph with nodes which are smaller molecules and arrows which connect those nodes.
There might exist molecules with free arrows, or bonds.
Besides molecules, I shall also use “enzymes”. A chemical reaction will always involve two molecules, or a molecule and an enzyme. The product of the reaction is a molecule plus garbage, denoted “GARB”, which can be a collection of molecules which are inactive (i.e. they cannot be part of any other chemical reaction).
We shall work with a list of unspecified molecules, which can react (or not) one with another, this is left to the choice of the user of the chemical concrete machine. Besides this bag of names of molecules, we have a short list of essential molecules, which are the ingredients of the machine.
For convenience, arrows and loops (i.e. closed arrows) are seen as molecules.
All this is described in the following figure.
On the first row you see the list of essential molecules, named respectively
- “app”, corresponding to the application gate in (graphic) lambda calculus
- “y” , corresponding to the FAN-OUT gate in graphic lambda calculus
- “lambda”, corresponding to the lambda abstraction gate in (graphic) lambda calculus
- “f” , corresponding to the gate in graphic lambda calculus
For the moment these correspondences don’t mean much, therefore I leave the explanation for later. There are four essential molecules, called app, y, lambda and f.
On the second row we see a loop, an arrow (which are considered molecules, as written before), and a molecule called “term”, which corresponds in graphic lambda calculus to the termination gate.
In the last part of the figure you see the list of enzymes. What is to be noticed is that any enzyme comes in two flavors: “+” and “-“. The reason for this is the following. Any chemical reaction which involves a molecule and an enzyme will correspond to a move in the list of moves of the chemical concrete machine . If you examine these moves then you shall notice that they go in both directions. Therefore, such a move appears as a pair of unidirectional moves. By convention, the moves from left to right are denoted by “+” and the moves from right to left are denoted by “-“. To each such move is associated an enzyme.
With molecules and essential molecules we build larger molecules. The physical, concrete way of constructing such molecules is left unspecified (although it can be done in the formalism of the chemical concrete machine). Here are some examples of larger molecules.
We imagine that all molecules float inside a 3D container. There may be several copies of the same molecule in the container.
Generally, the rule of building molecules is that they are made by other molecules and essential ones, simply by connecting the arrows and respecting the arrows orientations. More technically, with the correspondences specified previously, the rules of building molecules are exactly the ones for building graphs in the set described in the post Introduction to graphic lambda calculus. The only new thing is that we admit also a list of unspecified nodes with unspecified valences, which model “other molecules”.
So, in this simplified view of reality, molecules are such graphs. Let us see how they react with enzymes. We cannot simply write reactions as
molecules + enzyme = molecules + GARB
because these molecules may be complicated beasts (graphs) and because, as we shall see, the enzymes prefer to react with certain patterns (subgraphs) of molecules. For specifying how the reaction takes place we need:
- an enzyme
- and a “reaction site”, which is a small part of the initial collection of molecules.
The reaction site have to be present in the molecule, otherwise the reaction cannot happen.
In the following figure I consider two examples of reactions (which correspond to graphic beta moves in the realm of graphic lambda calculus).
In the first row we see a reaction between a molecule and the enzyme , which results into two other molecules and some GARB. There is a small region in the initial molecule, marked by a dashed red closed curve, which represents a reaction site for the molecule.
In the second row is written the same reaction, but in a simpler form. The red “+” sign is eliminated, the two molecules which are obtained are juxtaposes, as if they are floating in the 3D container, and the GARB is ignored. Moreover, the enzyme points towards the reaction site.
The rows 3 and 4 describe another reaction. At closer inspection, it’s a reaction which can be interpreted as the inverse of the first one. Let’s examine directly the 4th row (which is obtained from the 3rd row by the same procedure as the 2nd row was obtained from the 1st). The reaction site of the enzyme is a pair of arrows from two different molecules, The resulting molecule is the same as the initial molecule from the previous reaction.
In the next post I shall continue with the chemical reactions which are allowed, with all details.