Current trends in AI focus on imbuing machines with autonomy. In business settings such as finance, health, and e-commerce, the autonomy of the interacting parties is taken for granted. The challenge with regard to such settings is how to represent them in software in a manner that is compatible with the autonomy of the participants.
In this tutorial, we show how autonomy necessitates a decentralized system representation that captures the social meaning of interactions between the parties in the system. For concreteness, we present two formal languages: Cupid, for capturing social meanings via norms, and BSPL, for specifying communication protocols that enable the decentralized computation of norms. We chart out the connections with programming models for IoT and distributed ledgers and with session type-based approaches for specifying protocols. We discuss a surprising consequence of autonomy—that it necessitates asynchronous messaging over an unordered delivery infrastructure. We draw attention to the explicit specification of information causality as the basis of approaches that can work in such an unconstrained messaging environment.
Tutorial attendees will gain a critical understanding of autonomy and decentralization; learn how social abstractions may be represented and computed; learn how to specify a decentralized information object via causality and integrity constraints; and appreciate the differences between important languages for specifying protocols.
This tutorial should be useful to anyone interested in programming decentralized and messaging-based applications, including in aspects such as asynchrony and concurrency. The tutorial is self-contained and presented at a senior undergraduate student level.