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) }