free c: channel.

type skey.
type pkey.

fun pk(skey): pkey.
fun aenc(bitstring, pkey): bitstring.

reduc forall m: bitstring, k: skey; adec(aenc(m,pk(k)),k) = m.

free v: bitstring [private].
weaksecret v.

let V(pkA:pkey) = out(c, aenc(v, pkA)).

let A(skA:skey) = in(c,x:bitstring); let v' = adec(x, skA) in 0.

process 
	new skA: skey;
	let pkA = pk(skA) in
	out(c, pkA);
	! (V(pkA) | A(skA))
