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