Closed synergistics closed 3 years ago
The FOE node and the choice of the rewrites of chemlambda is made such that one can reduce (graphs associated to) untyped lambda terms by the simplest algorithm, i.e. without having to resort to constructs like supplimentary labels on the graphs, like those used in interaction nets. It is, I think, a technical alternative which deserves to be studied more.
The initial reason for the introduction of two fanout nodes (FO and FOE) is that with only one fanout node (FO) it is not possible to duplicate the graphs of some combinators, by using only + moves (that it by using only one direction of the DIST rewrites) and by letting aside any external choice of the rewrites to apply.
Take as example the behaviour of the S combinator graph with the root connected to a FO node http://imar.ro/~mbuliga/s_combinator.html What you see is the result of reductions where there is no FOE node. The end result is not two graphs of S, but a bigger graph which is connected.
Compare now with the same graph, this time with the FOE node and rewrites http://imar.ro/~mbuliga/s_c_combinator.html
For the context, perhaps this (longish) reply from the issue #1 is helpful: https://github.com/chorasimilarity/chemlambda-gui/issues/2#issuecomment-186904401
After a lot of experimenting, I arrived to the conclusion that the central part of chemlambda is the triple FI, FO, FOE, with the rewrites FI-FO, FI-FOE, FO-FOE. For the rest, if I want to have a lambda calculus like system, then I add A and L, with the Lamping beta move A-L and DSIT moves for A and L (i.e. A and L are distributors, in the sense of http://arxiv.org/pdf/1403.8046v1.pdf p. 5. If I want to have a Turing machine like system then I add instead 2-valent nodes for states and head moves and PROP moves for them, like for busy beavers http://chorasimilarity.github.io/chemlambda-gui/dynamic/turingchem.html .
On Wed, Jun 29, 2016 at 3:04 PM, synergistics notifications@github.com wrote:
Hi Marius, looking through your documentation on chemlambda, I wasn't able to determine the purpose of the FOE molecule, and why the DIST family of moves (the positive ones that introduce more molecules) were necessary. I'm guessing that introducing the FOE gate had something to do with needing to have both the FAN-in move, and the FI-FO move. Had the FAN-In react with an FI and FO instead of FI and FOE, the same graph could match on the FAN-in and FI-FO moves and (conflict?), depending on the reduction algorithm I guess. But that introduces the question of why the FI-FO move would be necessary at all, and similarly, the rest of the DIST+ moves. Could you elaborate on this for me? And if I've missed any resources explaining these things, can you point me to them? It can be a little difficult to navigate the spread of docs and discussion with chemlambda.
Looking forward to hear back from you!
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/chorasimilarity/chemlambda-gui/issues/3, or mute the thread https://github.com/notifications/unsubscribe/AIDOW3RCijnl_m03pvPO5nC5F0p8jIvEks5qQl8xgaJpZM4JBDzM .
The official page of all chemlambda projects is https://chemlambda.github.io/index.html
The repository chemlambda-gui is kept because of the content, otherwise, for new experiments, go to the official page.
Hi Marius, looking through your documentation on chemlambda, I wasn't able to determine the purpose of the FOE molecule, and why the DIST family of moves (the positive ones that introduce more molecules) were necessary. I'm guessing that introducing the FOE gate had something to do with needing to have both the FAN-in move, and the FI-FO move. Had the FAN-In react with an FI and FO instead of FI and FOE, the same graph could match on the FAN-in and FI-FO moves and (conflict?), depending on the reduction algorithm I guess. But that introduces the question of why the FI-FO move would be necessary at all, and similarly, the rest of the DIST+ moves. Could you elaborate on this for me? And if I've missed any resources explaining these things, can you point me to them? It can be a little difficult to navigate the spread of docs and discussion with chemlambda.
Looking forward to hear back from you!