Skip to content

Instantly share code, notes, and snippets.

@gwils
Last active January 9, 2023 08:35
Show Gist options
  • Save gwils/edb26e4b975c2438189f6414cdeb33b0 to your computer and use it in GitHub Desktop.
Save gwils/edb26e4b975c2438189f6414cdeb33b0 to your computer and use it in GitHub Desktop.

Propagators

20170620

Information about propagators and propagator accessories

This document is not intended as an introduction to propagators. Rather it's a collection of resources. As a minimal introduction: a propagator is a monotone function between join-semilattices. We intend to build networks of cells which contain values drawn from join-semilattices, connected by propagators, which read from and write to some cells. These networks have very useful properties for concurrent and distributed programming, among many other things.

Ed talks

Talks by Edward Kmett are probably the most up-to-date information available on propagators.

Note that these two are very similar, but each has some info or explanations that the other hasn't:

This talk can be considered the "hard mode" version of the above two:

Ed Repositories

As far as I know, these repos each contain tricks and tools related to propagators, but none of them are the final form of Ed's ideas.

Earlier propagator work

Alexey Radul and Gerald Sussman at MIT did earlier work on propagators. The Scheme programming language was used.

Books

There does not exist a book on propagators. This book is considered by Ed to be a good introduction to lattices:

Related work

Datalog

Datalog looks like a propagator network. In the propagator vocabulary, Datalog rules are propagators and Datalog tables are cells. This similarity is not just skin-deep. We should steal lots of stuff from Datalog. In particular, when looking for a scheduling algorithm for our propagators, we want to use something like semi-naive evaluation of Datalog. This involves creating a topological ordering. Since we want to be able to create and remove propagators from the network dynamically, we will need to figure out how to efficiently maintain a topological ordering. Datalog's stratified negation feature can be adapted to propagators. Effectively this means we can have propagators which write non-monotonically, so long as they do not participate in any cycles. There are other conditions which allow us to relax our constraints in other ways.

Other related things

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment