This is another post about using commitments to describe various real-world situations. For thousands of years, mathematicians have used rules to mechanically transform algebraic equations into simpler and more useful forms. Similarly, we can define rules to transform agent commitments into simpler and more useful forms.
Let’s extend the pizza example. Assume Alice commits to Bob that she will give him a pizza and a beer if he either gives her $10 or he helps her move to a new house.
C(Alice, Bob, $10 or helpmove, pizza and beer)
We can break this single commitment down into a set of simpler commitments. First, Alice will give Bob pizza and beer in either of two situations (an OR operator in the commitment’s antecedent). This gives us two simpler commitments.
C(Alice, Bob, $10, pizza and beer)
C(Alice, Bob, helpmove, pizza and beer)
We can decompose these down even further, because Alice will give Bob both a pizza and a beer (an AND operator in the commitment’s consequent). This gives us four commitments
C(Alice, Bob, $10, pizza)
C(Alice, Bob, $10, beer)
C(Alice, Bob, helpmove, pizza)
C(Alice, Bob, helpmove, beer)
Symbolically, we write these commitment transformations like this
C(debt, cred, ant1 OR ant2, csq) = C(debt, cred, ant1, csq), C(debt, cred, ant2, csq)
C(debt, cred, ant, csq1 AND csq2) = C(debt, cred, ant, csq1), C(debt, cred, ant, csq2)
In some situations, it is easier to work with these four separate commitments so decomposing a complex commitment makes sense. In other cases, we might want fewer commitments, and reverse the transformations, merging simpler commitments into more complex commitments.
The key point is once we explicitly describe commitments, we can also define rules to mechanically manipulate them, just like we do with algebraic equations.