free e: bitstring.
free d: channel.
type key.
type host.
type nonce.

(* Shared key cryptography *)

fun encrypt(bitstring,key):bitstring.
reduc forall x:bitstring, y:key; decrypt(encrypt(x,y),y) = x.

fun fail_chan(): channel
reduc fail_chan() = fail.

process
	new a: bitstring;
	new k: key;
	in(choice[fail_chan, d], (x:bitstring, =decrypt(a,k))); out(d, e)


(* EXPECTPV
RESULT Observational equivalence cannot be proved.
0.008s (user 0.008s + system 0.000s), max rss 8652K
END *)
