free c:channel.
free d:channel [private].

fun h(bitstring):bitstring.

const a,b:bitstring.

event A(bitstring).
event B(bitstring).

const ok,ko,k:bitstring[private].

axiom x:bitstring,y:bitstring; event(A(x)) ==> event(B(a)) [fullSat].


query x:bitstring;
        attacker(ok) ==> event(A(x)) && x <> a;
        attacker(ok) ==> event(A(x)).

process
  (in(c,x:bitstring);
   event B(x);
   event A(x);
   out(d,x))
  | in(d,x:bitstring); if x = a then out(c,ok)

(* EXPECTPV
RESULT attacker(ok) ==> event(A(x_2)) && x_2 ≠ a is false.
RESULT attacker(ok) ==> event(A(x_2)) is true.
0.012s (user 0.008s + system 0.004s), max rss 7456K
END *)
