node current (c : bool; x : int on c) returns ( y : int ) let y = merge c (true -> x) (false -> 0 fby y whenot c) tel node internal_current (c : bool; x : int on c) returns ( y : int on c) var x_cur : int; let x_cur = merge c (true -> x) (false -> 0 fby x_cur whenot c); y = x_cur when c tel node use_current (c : bool; x : int) returns (y : int on c) var x_cur :int; let x_cur = current(c,x); y = x_cur when c; tel