This is my first paper, written in the first few months of my Ph.D. and published quickly. Four and a half years later it is still technically my best paper by the usual (wrong) metrics. Obviously now I wouldn’t dare to do something as outrageous as submitting a paper to such a highly-ranked journal.
This is the first in a series about social aspects of blockchains. I began writing an article that launched straight into an application, but it was too confusing without first laying some general groundwork on ‘blockchains with institutions’, the subject of this article. As a teaser, the article I had begun was discussing a design for a democracy that is significantly harder to overthrow than existing designs, by making democratic institutions inseparable from a nation’s currency.
I strongly feel that the surprising discovery of Turing-complete blockchain computation by Vitalik Buterin in 2013 is a huge and completely unforeseen game-changer in social philosophy, and that there is far too little awareness of its implications among philosophers, economists and other social theorists.
This post is copied (with some small modifications and additional comments) from section 0.4 of my Ph.D. thesis, Towards compositional game theory. It is loosely based on a talk I gave at Logic for Social Behaviour 2016 in Zürich.
The term compositionality is commonplace in computer science, but is not well-known in other subjects. Compositionality is the principle that a system should be designed by composing together smaller subsystems, and reasoning about the system should be done recursively on its structure. When I thought more deeply, however, I realised that there is more to this principle than first meets the eye, and even a computer scientist may not be aware of its nuances.
Deeply controversial content ahead…
So I updated my website to WordPress with a personal domain. My old homepage (which I had for around 4 and a half years) was written in plain HTML and uploaded to the department fileserver by ssh/scp. That is to say, it was a proper academic site.
(Recall that monads are not a good topic for your first blog post.)
I intend to bootstrap a blog by writing about 2 of my old papers, Monad Transformers for Backtracking Search and The Selection Monad as a CPS Transformation. (Wall Street will be spared for the time being.)
I’m going to write about this little bit of Haskell code:
import Control.Monad.Cont sat n = runCont $ sequence $ replicate n $ cont $ \k -> k $ k True
It’s a SAT solver: you give it a boolean function, and the number of variables to search, and it decides whether that function will ever return true for any values of those variables.
How does this work? Haven’t the foggiest. If anyone can explain what it does at runtime, there’s probably a research paper in it for you. If you can also predict how long it takes, that’s a big deal.