The purpose is to understand clearly what is this story about. The most simple stuff, OK? in order to feel it in familiar situations.
Chemlambda is a collection of rules about rewritings done on pieces of files in a certain format. Without an algorithm which tells which rewrite to use, where and when, chemlambda does nothing.
In the sophisticated version of the Distributed GLC proposal, this algorithmic part uses the Actor Model idea. Too complicated!, Let’s go simpler!
The simplest algorithm for using the collection of rewrites from chemlambda is the following:
- take a file (in the format called “mol”, see later)
- look for all patterns in the file which can be used for rewrites
- if there are different patterns which overlap, then pick a side (by using an ordering or graph rewrites, like the precedence rules in arithmetic)
- apply all the rewrites at once
- repeat (either until there is no rewrite possible, or a given number of times, or forever)
To spice things just a bit, consider the next simple algorithm, which is like the one described, only that we add at step 2:
- for every identified pattern flip a coin to decide to keep it or ignore it further in the algorithm
The reason is that randomness is the simplest way to say: who knows if I can do this rewrite when I want, or maybe I have in my computer only a part of the file, or maybe I have to know that a friend has a half of the pattern and I have the other, so I have to talk with him first, then agree to make together the rewrite. Who knows? Flip a coin then.
Now, proven facts.
Chemlambda with the stupid deterministic algorithm is Turing universal. Which means that implicitly this is a model of computation. Everything is prescribed from the top to the bottom. Is on the par with a Turing machine, or with a RAND model.
Chemlambda with the random stupid model seems to be also Turing universal, but I don’t have yet a proof for this. There is a reason for the fact that it is as powerful as the stupid deterministic model, but I won’t go there.
More, there are many examples of computations which work.
So the right image to have is that chemlambda with the described algorithm can do anything any computer can.
The first question is, how? For example how compares chemlambda with a Turing machine? If it is at this basic level then it means it is incomprehensible, because we humans can’t make sense of a scroll of bytecode, unless we are highly trained in this very specialised task.
All computers do the same thing: they crunch machine code. No matter which high language you use to write a program, it is then compiled and eventually there is a machine code which is executed, and that is the level we speak.
It does not matter which language you use, eventually all is machine code. There is a huge architectural tower and we are on the top of it, but in the basement all looks the same. The tower is here for us to be easy to use the superb machine. But it is not needed otherwise, it is only for our comfort.
This is very puzzling when we look at chemlambda because it is claimed that chemlambda has something to do with lambda calculus, or lambda calculus is the prototype of a functional programming language. So it appears that chemlamdba should be associated with higher meaning and clever thinking, and abstraction of the abstraction of the abstraction.
No, from the point of view of the programmer.
Yes, from the point of view of the machine.
In order to compare chemlambda with a TM we have to put it in the same terms. So you can easily put a TM in terms of a rewrite system, such that it works with the same stupid deterministic algorithm. http://chorasimilarity.github.io/chemlambda-gui/dynamic/turingchem.html
It is not yet put there, but the conclusion is obvious: chemlambda can do lambda calculus with one rewrite, while an Universal Turing Machine needs about 20 rewrites to do what TM do.
Wait, what about distributivity, propagation, the fanin, all the other rewrites?
They are common, they just form a mechanism for signal transduction and duplication!
Chemlambda is much simpler than TM.
So you can use directly chemlambda, at this metal level, to perform lambda calculus. Is explained here
And I highly recommend to try to play with it by following the instructions.
You need a linux system, or any system where you have sh and awk.
1. click on that https://github.com/chorasimilarity/chemlambda-gui/archive/gh-pages.zip to get a copy of the repo
2. unzip it and go to the directory “dynamic”
3. open a shell and write: bash moving_random_metabo.sh
4. you will get a prompt and a list of files with the extension .mol , write the name of one of them, in the form file.mol
5. you get file.html. Open it with a browser with js enabled. For reasons I don’t understand, it works much better in safari, chromium, chrome than in firefox.
When you look at the result of the computation you see an animation, which is the equivalent of seeing a TM head running here and there on a tape. It does not make much sense at first, but you can convince that it works and get a feeling about how it does it.
Read about how to use with with lambda calculus here https://chorasimilarity.wordpress.com/2015/04/21/all-successful-computation-experiments-with-lambda-calculus-in-one-list/
Look at a collection of animations here http://chorasimilarity.github.io/chemlambda-gui/dynamic/demos.html
See more at the chemlambda index http://chorasimilarity.github.io/chemlambda-gui/index.html
Once you get this feeling I will be very glad to discuss more!
Recall that all this is related to the most stupid algorithm. But I believe it helps a lot to understand how to build on it.