set allowDiffPatterns = true.

(********   This file has been automatically generated using the tool UKano. It encodes the frame opacity condition. ********)

(* -------------------------------------------------- *)
(*	       FIXED LAK                              *)
(* -------------------------------------------------- *)

(* ==THEORY== *)
(* Public communication channel *)
free i : channel.
free r : channel.
(* functions *)
fun h(bitstring) : bitstring.

(*  *)


(* == PROTOCOL WITH IDEALISATION == *)
let SYSTEM =
( !
  new k : bitstring;
     !
      ((
        new r1: bitstring;
        out(i, r1);
        in(i, choice[x:bitstring,xid:bitstring]);
        let ((xr2: bitstring,xh: bitstring)) = x in
        let (=h((r1,xr2,k))) = xh in
        new nextStep: bitstring;
        out(i, choice[(nextStep,x),(nextStep,xid)])
      )|(
        in(r, choice[xr1:bitstring,xr1id:bitstring]);
        new r2: bitstring;
        new hole__k_R_0: bitstring;
        out(r, choice[(r2,h((xr1,r2,k))),(r2,h((xr1id,r2,hole__k_R_0)))])
      ))
)
.
process SYSTEM

(* EXPECTPV
RESULT Diff-equivalence is true.
0.016s (user 0.012s + system 0.004s), max rss 8772K
END *)
