Last time, we discussed commitment transformations,. This time we look at a different kind of transformation that captures the idea of a “chain reaction”: where knocking over a single domino causes a whole chain of dominos to topple.
The basic idea is to combine multiple commitments that form a chain of commitments into a single commitment. A chain is well-defined when
- If the first commitment is satisfied, then the second one becomes unconditional
- If the first 2 commitments satisfied, then the third becomes unconditional
- …
- If the first N-1 commitments satisfied, then the Nth commitment becomes unconditional
Since we assume debtors typically honor their commitments (I’ll have more to say about this in a future post) then unconditional commitments will typically be satisfied and deliver the consequent to the creditors. So whenever the first antecedent becomes true (“fires”), a “chain reaction” eventually occurs and the whole chain of commitment consequents eventually become true (“fire”). The chain reaction may not occur instantly, but if all debtors eventually honor their commitments, the full chain reaction will eventually occur. Further, the result is a commitment from the set of all debtors to the set of all the creditors.
The chain is incrementally constructed using a serial composition operator of two commitments. So let’s define it and get those gorpy details out of the way now. This post requires more notation than previous posts. I try to avoid notation, but here its just the simplest approach. I’m using the cool MathJax-Latex WordPress plugin to format this material. This should render in most browsers. Let me know if it doesn’t render well in your browser.
Serial Composition Operator:
When the condition \(C_A.csq \models C_B.ant \) holds, then the serial composition of two commitments, \(C_{\oplus} = C_A \oplus C_B \), is well-defined, and
\begin{align*}
C_{\oplus}.debt & := C_A.debt \cup C_B.debt \\
C_{\oplus}.cred & := C_A.cred \cup C_B.cred \\
C_{\oplus}.ant & := C_A.ant \\
C_{\oplus}.csq & := C_A.csq \land C_B.ant \land C_B.csq
\end{align*}
\)
The well-defined condition simply means that \(C_B.ant\) must be true whenever \(C_A.csq\) is true. So if the first commitment becomes unconditional and is eventually satisfied, then the second comment will also eventually become unconditional.
The transformations in the previous posts never changed the debtors or creditors. Here, the composite commitment unions the debtors and creditors. All the debtors are responsible for ensuring the commitment is satisfied. There are different ways to combine responsibilities. Responsibility can be several (each debtor is responsible for just its portion), joint (each debtor is individually responsible for the entire commitment), or joint and several (the creditors hold one debtor fully responsible, who then pursues other debtors). Serial composition uses several responsibility so that a debtor is never compelled to assume additional responsibilities. The result of serial composition is useful for reasoning about multiple commitments, but all the original commitments must be kept around if we need to determine which specific debtor(s) failed and broke the chain reaction.
Serial composition composes just two commitments, but we can use it repeatedly to combine a chain of multiple commitments. To compose more than two commitments, compose from left to right (the serial composition operator is left associative).
Enough theory, we need an example. Assume Alice promises to pay Bob some money. If Alice won’t see Bob today, she can pass the money through Chris, a trusted friend of hers. (I refer to this as “pay via middle man” or PayViaMM). There are two commitments. The first is Alice’s commitment to pay Bob. The second is Chris’s commitment to pass on any payments he receives (Alice trusts Chris because of this commitment).
C1 = C(Alice, Bob, promise, AlicePays)
C2 = C(Chris, Alice, AlicePays, ChrisPays)
Serial composition is well-defined because \(AlicePays \models AlicePays\). Applying the definition above we get the resulting commitment for this chain of two commitments.
\(C1 \oplus C2 := C(\{Alice, Chris\}, \{Alice, Bob\}, promise, AlicePays \land ChrisPays)\)
Just remember this key idea: we defined an commitment operator (serial composition) that creates a single commitment that describes the effect of a chain of commitments. The whole chain is well-defined if firing the first antecedent causes a chain reaction.