const n:int = 100
const t_0:int^n = 1^n

node f(a:int^n at r; c:bool) returns (o:int^n at r)
var a1, a2:int^n at r;
let
  (a1, a2) = split c (a);
  o = merge c (true -> reinit (a1, t_0)) (false -> [ a2 with [0] = 0 ])
tel

node main() returns (o:int^n)
var c:bool;a:int^n at r;
let
  init<<r>> a = 1^n;
  c = true fby false fby c;
  o = f(a, c)
tel
