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