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].

set verboseLemmas = true.

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

process
  (in(c,x:bitstring);
  if x = a
  then
    event A(a);
    out(d,k)
  else
    out(c,ko))

  | in(d,x:bitstring); out(c,choice[ok,ko])

(* EXPECTPV
Error: subterm predicate should only occur in the premise of an axiom or a restriction.
xtime: error in child process (status : 2)
END *)
