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