channel CX {
out pos_x(prev_x: Double, setX(cur_x: Double)) = cur_x
}
channel CY {
out pos_y(prev_y: Double, setY(cur_y: Double)) = cur_y
}
channel C {
in pos_x(prev_x, move(dx, dy)) = prev_x + dx
in pos_y(prev_y, move(dx, dy)) = prev_y + dy
out dist(prev_d, move(dx, dy)) = prev_d + sqrt(dx * dx + dy * dy)
}