multiply = proc [T: type] (a, b: T) returns (T)
signals (overflow, underflow)
where T has mul: proctype (T, T) returns (T)
return(a * b) resignal overflow, underflow
end multiply