(* Unary operators *)
node f(x:bool;y:int) returns (z:int;t:bool)
let
  z = ~- y;
  t = not x;
tel

node g(a:bool;b:int) returns (z:int;t:bool)
let
  (z,t) = f(a,b);
tel

node main() returns (z:int;t:bool)
let
  (z,t) = g(false fby true, 0 fby 2 fby -3);
tel
