fun g(bitstring, bitstring):bitstring.

reduc 
  forall x:bitstring; r(g(x,x)) = x.

letfun f(x:bitstring,y:bitstring) = let z = r(x) in g(x,y) else g(y,y).

channel c.
free a, b, d: bitstring.



process out(c, f(r(g(a,b)),d)); out(c, f(a,f(b,d)))

(* EXPECTPV
0.004s (user 0.004s + system 0.000s), max rss 6520K
END *)
