channel cio1 {
out base(x: Double, setBase(x2)) == x2
}
channel cio2 {
out height(y: Double, setHeight(y2)) == y2
}
channel triangle {
in base(x, update: Tuple) == fst(update)
in height(y, update) == snd(update)
out hypothenuse(z: Double, update) == sqrt(fst(update) * fst(update) + snd(update) * snd(update))
}