free c:channel.
free s:bitstring [private].

fun enc(bitstring,bitstring):bitstring.
reduc forall x:bitstring,y:bitstring; dec(enc(x,y),y) = x.

process
  new k:bitstring;
  new k1:bitstring;
  new k2:bitstring;
  out(c,enc(k1,k));
  out(c,enc(k2,k));
  out(c,choice[enc(s,(k1,k2)),k1]);
  in(c,y:bitstring) [precise];
  out(c,dec(y,k));
  in(c,x:bitstring) [precise];
  if x = s
  then out(c,k1)
  else out(c,k2)

(* EXPECTPV
RESULT Observational equivalence cannot be proved.
RESULT Observational equivalence cannot be proved.
0.064s (user 0.040s + system 0.024s), max rss 9344K
END *)
