Blog

Blockchains with institutions

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.

Continue reading “Blockchains with institutions”

On compositionality

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.

Continue reading “On compositionality”

Abusing the continuation monad

(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.

Continue reading “Abusing the continuation monad”