Sunday, April 20, 2008

Merging threads: collectivity and biological programming

The last several posts have been about the potential implications of getting a genuine understanding of the Curry-Howard isomorphism. One aspect of this was calling out a language-based interface between the collective and the individual; and, one aspect of that interface was opening up the possibility of a peer-to-peer dialogue between collective and individual for improvements in life at the human scale -- how human collectives can have fruitful exchange with human individuals -- and also improvements in understanding our place in the living universe -- how we can see ourselves in a much, much larger web of intelligent life and contemplate a time when we can have exchange with a wide variety of entities in that web of life.

These are very expansive ideas -- and without the aid of mathematics to help keep everything carefully delineated it would be impossible to approach them and not get terribly confused. It's getting close to time to start merging these threads with the previous threads about replication and reproduction to understand our aim a little better. As a bridging notion i want to point out a significant challenge to programming coming out of the galactic collision of computation and biology. The issue can be framed in terms of the notion of declarative programming and the collective. Roughly speaking, if the "computer" one is programming is a collective of autonomous agents how does one provide declarative goals for the collective to meet? For the programming cognoscenti, what's the prolog-like language for programming a collective of agents? We don't want to tell these agents how to achieve an aim, we want to tell them what aim to achieve and let them figure out the how. This is an essential ingredient if we want to have effective use of emergence. We want to be able to program emergent properties.

Further, i want to point out that this idea is crucial both for forward engineering -- getting collectives to achieve goals that we at the higher, aggregate level can observe and measure -- and for reverse engineering -- understanding and explaining how aggregate/collective behavior relates to capacity and capability of individuals encompassing the aggregate. i submit that Drew Endy's biological circuits game desperately needs a device like this to fully unleash the power of his forward engineering programme. Likewise, the sorts of explanatory devices Galit Lahav employs in understanding the p53-MDM2 feedback loops will forever be locked in metaphor. We need a much more precise statement of the way in which the aggregate behavior of the collective of proteins and genetic material becomes a kind of state machine governing cell fate.

i submit -- for now without proofs or examples -- that the one of the most intriguing characteristics of this particular semantic interpretation of Curry-Howard is that it enables exactly this approach to programming: goals stated in a high-level, declarative fashion to be achieved by the collective. Metaphorically, we are looking at an execution semantic somewhere between prolog and SQL and concurrent constraint programming. It is with these thoughts in mind, in this larger context that i want to return to the elucidation of reproduction and replication in the next few posts.

No comments: