channel CIO {
	out force(f:Double, action(x:Double)) = x
	out time(t:Double, action(x)) = t + 0.01
	out force(f, e) = x
	out time(t, e) = t + 0.01
}

channel CIO2 {
	out velocity(v:Double, setVel(x:Double)) = x
	out velocity(v, e) = x
}

channel CIO3 {
	out mass(m:Double, setMass(x:Double)) = x
	out mass(m, e) = m
}

channel C1 {
	in force(f, update1(y, z)) = y
	in mass(m, update1(y, z)) = z
	out acceleration(a: Double, update1(y, z)) = y / z
}

channel C2 {
	in acceleration(a, update2(z)) = z
	out velocity(v:Double, update2(z)) = v + 0.01 * z
}

channel C3 {
	in velocity(v, update3(u)) = u
	out position(p:Double, update3(u)) = p + 0.01 * u
}