Category Archives: chemlambda

How does a zipper logic zipper zip? Bonus: what is Ackermann goo?

Zipper logic is an alternative to chemlambda, where two patterns of nodes, called half-zippers, appear.

It may be more easy to mimic, from a molecular point of view.

Anyway, if you want to have a clear image about how it works then there are two ways to play with zippers.

1. Go to this page and execute a zip move. Is that a zipper or not?

2. Go to the lambda2chemlambda page and type this lambda term

(\h.\g.\f.\e.\d.\c.\b.\a.z) A B C D E F G H

Then reduce it. [There is a difference, because a, b, … h do not occur in A B C D E F so the parser adds a termination node to each of them, so when you reduce it the zipper will zip and then will dissappear.]

You can see here the half-zippers



which are the inspiration of the zippers from zipper logic.

In chemlambda you can also make FI-zippers and FOE-zippers as well, I used this for permutations.

BONUS: I made a comment at HN which received the funny reply “Thanks for the nightmares! 🙂“, so let me recall, by way of this comment, what is an Ackermann goo:

A scenario more interesting than boundless self-replication is Ackermann goo [0], [1]. Grey goo starts with a molecular machine able to replicate itself. You get exponentially more copies, hence goo. Imagine that we could build molecules like programs which execute themselves via chemical interactions with the environment. Then, for example, a Y combinator machine would appear as a linearly growing string [2]. No danger here. Take Ackermann(4,4) now. This is vastly more complex than a goo made of lots of small dumb copies.





Parser gives fun arrow names

Not yet released with modifications, but the lambda2chemlambda parser can be made to give fun arrow names. Like for example the term

((\g.((\x.(g (x x))) (\x.(g (x x))))) (\x.x))

which is the Y combinator applied to id, becomes the mol

FROUT [^L [((\g. [((\g [((\^L [((\g.((\x. [((\g.((\x [((\g.((\^FO [((\g [((\g.((\x.(g [((\g.((\x.(g*^A [((\g.((\x.(g [((\g.((\x.(g@( [((\g.((\x.(g@^FO [((\g.((\x [((\g.((\x.(g@(x [((\g.((\x.(g@(x*^A [((\g.((\x.(g@(x [((\g.((\x.(g@(x@x [((\g.((\x.(g@(x@^Arrow [((\g.((\x.(g@(x* [((\g.((\x.(g@(x@x^Arrow [((\g.((\x.(g@(x@ [((\g.((\x.(g@(^Arrow [((\g.((\x.(g@ [((\g.((\x.(^Arrow [((\g.((\x.( [((\g.((\x.^Arrow [((\g.((\ [((\g.((^A [((\g.(( [((\g.((\x.(g@(x@x)))@( [((\g.((\x.(g@(x@x)))@^L [((\g.((\x.(g@(x@x)))@(\x. [((\g.((\x.(g@(x@x)))@(\x [((\g.((\x.(g@(x@x)))@(\^Arrow [((\g.((\x.(g* [((\g.((\x.(g@(x@x)))@(\x.(g^A [((\g.((\x.(g@(x@x)))@(\x.(g [((\g.((\x.(g@(x@x)))@(\x.(g@( [((\g.((\x.(g@(x@x)))@(\x.(g@^FO [((\g.((\x.(g@(x@x)))@(\x [((\g.((\x.(g@(x@x)))@(\x.(g@(x [((\g.((\x.(g@(x@x)))@(\x.(g@(x*^A [((\g.((\x.(g@(x@x)))@(\x.(g@(x [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x [((\g.((\x.(g@(x@x)))@(\x.(g@(x@^Arrow [((\g.((\x.(g@(x@x)))@(\x.(g@(x* [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x^Arrow [((\g.((\x.(g@(x@x)))@(\x.(g@(x@ [((\g.((\x.(g@(x@x)))@(\x.(g@(^Arrow [((\g.((\x.(g@(x@x)))@(\x.(g@ [((\g.((\x.(g@(x@x)))@(\x.(^Arrow [((\g.((\x.(g@(x@x)))@(\x.( [((\g.((\x.(g@(x@x)))@(\x.^Arrow [((\g.((\x.(g@(x@x)))@(\ [((\g.((\x.(g@(x@x)))@(^Arrow [((\g.((\x.(g@(x@x)))@ [((\g.(^Arrow [((\g.( [((\g.^Arrow [((\ [((^A [(( [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@( [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@^L [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\x. [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\x [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\^Arrow [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\x [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\x.x^Arrow [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\x.x [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\x.^Arrow [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(\ [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@(^Arrow [((\g.((\x.(g@(x@x)))@(\x.(g@(x@x)))))@ [(^Arrow [( [

Recall that the parser is part of the landing page for all chemlambda projects.

So, if you write in the parser:

(\x.a) b

which is the pattern for a beta rewrite, then the relevant part of the mol (with funny arrow names) and the rewrite will have the form:



DDOS attack or huge number of hits from US and China

UPDATE: Feb 10 2020 seems to work. The situation was between  Jan 19 – Feb 10 2020.

These are the two explanations I received about the bad behaviour of the site where I have my professional page. It started around Sunday, Jan 19 2020.(Mentioned here.)

I don’t know which is right, any of them, both or none. This however is a block of the access to this copy of the chemlambda collection, which I put online here on Saturday, Jan 11 2020.

In the case you  want to access the collection, then there are the following possibilities:

  • the original site, which sits in a place not under the control of a corp.
  • a copy of the site, with smaller pictures (I am limited by 0.5GB limit), at github, which may be blocked in your country (??)
  • you can take the original simulations which were used to make the animations from figshare. For the comments and the internal links, take them from one of the available places
  • the landing page for all chemlambda projects is on github too…
  • or maybe there is a kind soul which has access to these sites and can host the whole stuff in a non-corp. place which is accessible to everybody
  • or you find a way to notice me that you’re interested, or willing to help, and we see what we can do.

EDIT: some words about the revived collection. There are 264 posts/animations, which is a bit more than 1/2 of the original collection. Now there is the possibility to rerun in js the simulation, because whenever possible there is a mol file attached to the animation, which can be reduced in js. Some numbers now. In verifiedMol.js there are 500 mol files, but some are duplications, in order to manually enhance the automated  matching of posts with mols, so say there are about 490 mol files. If they are too big to be used without stalling the js reduction, this is signaled by the message “mol too big” in the post. If there is no mol which matches, this is signaled as “mol unavailable”. Of all 264 posts, 36 of them fall in the “mol too big” category, 46 in the “mol unavailable” and there are 6 posts which don’t have a chemlambda simulation inside. So this leaves 264-88=176 posts which have matching mol files to play with. Finally, there are two situations where the matching mol-post is not perfect: (1) when in the original simulation is used a mol file which contains nodes of a busy-beaver Turing machine (of the kind explained here), (2) when in the original is used a .mola file (a mol with actors). In both cases the js reduction does not know how to do this.

Anyway, wait for pure see, that will be a sight 🙂

All chemlambda projects landing page

I put a version of the collection of animations on github. I made a user named “chemlambda” and now there is a landing page for all chemlambda projects (bare minimum).

I’ll add more and I’ll structure more that page, but with the occasion of making available the collection, making such a site was only natural.

Please let me know if there are more (than the excellent ones I know about, like -hask, -py or -editor).



3 days since the server is too busy, so…

UPDATE: a version of the collection is on github.


the collection needs a better place. Alternatively, I could temporarily use github (by making the animations smaller, I can cram the collection into 480MB). Or better with a replacement of animations by the simulations themselves. As you see these simulations occupy 1GB, but they can be mined, in order to extract the right parameters (gravity, force strength, radii and colors, mol source) and then just reuse them in the js.

Anybody willing? I need to explain what pure see is about.

Also, use this working link to my homepage.

Google+ salvaged collection of animations (III): online again!

UPDATE: Chemlambda collection of animations. is the version of the collection hosted on github. The original site is under very heavy traffic (in Jan 2020).

UPDATE: For example the 2 neurons interacting animation can be remaked online to look like this:


First you use the mouse wheel to rescale, mouse to translate. Notice the gravity slider position. This is an animation screencasted from the real thing which takes 8 min to unfold. But in this way you see what is happening beyond the original animation.

Btw, what is such a neuron? It is simply a (vectorial) linear function, which is applied to itself,  written in lambda calculus. These two neurons are two linear functions, with some inputs and outputs connected.

Soon the links will be fixed (internal and external) [done] and soon after that there will be a more complete experience of the larger chemlambda universe. (and then the path is open for pure see)


In Oct 2018  I deleted the G+ chemlambda collection of animations, before G+ went offline. Now, a big part of it is online, at this link. For many of the animations you can do now live the reduction of the associated molecule.

The association between posts, animation and source mol file is from best fit.

There are limitations explained in the last post.

There are still internal links to repair and there has to be a way to integrate all in one experience, to pay my dues.

I put on imgur this photo with instructions, easy to share:

Screenshot from 2020-01-12 19:34:17

Use wheel mouse to zoom, mouse to move, gravity slider to expand.

The salvaged collection of animations (II)

UPDATE: Chemlambda collection of animations is the version of the collection hosted on github. The original site is under very heavy traffic (in Jan 2020).

UPDATE: much better now, although I seriously consider to jump directly to pure see. However is very rewarding to pass over blocks.


(Continues the first post.) I forgot how much the first awk chemlambda scripts were honed, and how much the constants of the animations produced were further picked so to illustrate in a visually interesting way a point of view. The bad part of the animations first produced is that they are big html files, sometimes taking very long to execute.

The all-in-one js solution built by ishanpm, then modified and enhanced by me, works well and fast for graphs with a no of nodes up to 1000, approximatively. The physics is fixed, there are only two controls: gravity (slider) which allows to expand/contract the graphs, and the rewrites slider, which changes the probabilities of rewrites which increase/decrease the number of nodes. Although there is randomness (initially in the ishanpm js solution there was not), it is a weak and not very physical one (considering the idea that the rewrites are caused by enzymes). It is funny that the randomness is not taken seriously, see for example the short programs of formality.

After I revived the collection of animations from G+ (I kept about 300 of them), I still had to associate the animations with the mol files used (many of them actually not in the mol library available) and to use the js chemlambda version (i.e. this one) with the associated mol files. In this way the user would have the possibility to re-done the animations.

It turns out it does not work like this. The result is almost always of much lesser quality than the animation. However, the sources of the animations (obtained from the awk scripts) are available here.  But as I told at the beginning of the post, they are hard to play (fast enough for the goldfish attention), actually this was the initial reason for producing animations, because the first demos, even chosen to be rather short, were still too long…

So this is a more of a work of art, which has to be carefully restored. I have to extract the useful info from the old simulations and embed it into a full js solution. Coming back to randomness, in the original version there are random cascades of rewrites, not random rewrites, one at a time, like in the new js version… and they extinguish the randomly available pockets of enzymes, according to some exponential laws… and so on. That is why the animations look more impressive than the actual fast solution, at least for big graphs.

It is true that the js tools from the quine graphs repository have many advantages: interaction combinators are embedded, there is a lambda calculus to chemlambda parser… With these tools I discovered that the 10 nodes quine does reproduce, that the ouroboros is mortal, that there are many small quines (in interaction combinators too), etc.

And it turns out that I forgot that many interesting mols and other stuff was left unsaid or is not publicly available. My paranoid self in action.

In conclusion probably I’ll make available some 300 commented gifs from the collection and I’ll pass to the scientific part. I’d gladly expose the art part somewhere, but there seems to be no place for this art, technically, as there is no place, technically, for the science part, as a whole, beyond just words telling stories.

There will be, I’m sure.