channel CIO {
out payment(p, purchase(x)) == x
}
channel C1 {
in payment(p, update1(y)) == y
out loyalty(l, update1(y)) == floor(y * 0.05)
}
channel C2 {
in payment(p, update2(z)) == z
out history(h, update2(z)) == cons(z, h)
}
channel C3 {
in history(h, update3(u)) == u
out total(t, update3(u)) == sum(u)
}