channel CIO1 { out temp_f(p:Double, observe(x)) == x } channel CIO2 { out highest(h:Double, reset(v)) == v } channel C1{ in temp_f(q:Double, conversion(y)) == y out temp_c(r:Double, conversion(z)) == (z-32) / 1.8 } channel C2{ in temp_f(q:Double, update(y)) == y out highest(h:Double, update(z)) == if(gt(z, h), z, h) }