(* Diffie-Hellman *) data g/0. fun exp/2. equation exp(exp(g,x),y) = exp(exp(g,y),x). free c. process new a1; new a2; new a3; out(c, (exp(g,a1), exp(g,a2), choice[exp(exp(g,a1),a2), exp(g,a3)]))