free c:channel.

fun h(bitstring):bitstring.

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

query i:time, j:time, x:bitstring;
  event(A(x))@i && event(B(x))@j ==> event(A(x)).

query i:time, j:time, x:bitstring;
  event(A(x))@i && event(B(x))@j ==> i < j.

query i:time, j:time, x:bitstring;
  event(A(x))@i && event(B(x))@j ==> i = j.

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && event(B(x))@j ==> (event(A(y))@k ==> event(B(y))@z && z >= k).

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && event(B(x))@j ==> (event(A(y))@k ==> event(B(y))@z && z >= j).

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && event(B(x))@j ==> (event(A(y))@k ==> event(B(y))@z && z > j).

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && event(B(x))@j ==> (event(A(y))@k ==> (event(B(y)) ==> event(A(x)))).

query i:time, j:time, x:bitstring;
  inj-event(A(x))@i && event(B(x))@j ==> i = j.

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && inj-event(B(x))@j ==> (inj-event(A(y))@k ==> inj-event(B(y))@z && z >= k).

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  inj-event(A(x))@i && inj-event(B(x))@j ==> (event(A(y))@k ==> inj-event(B(y))@z && z >= j).

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && inj-event(B(x))@j ==> (inj-event(A(y))@k ==> inj-event(B(y))@z && z > j).

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && inj-event(B(x))@j ==> (event(A(y))@k ==> (inj-event(B(y)) ==> event(A(x)))).

query i:time, j:time, k:time, z:time, x:bitstring, y:bitstring;
  event(A(x))@i && inj-event(B(x))@j ==> (event(A(y))@k ==> (inj-event(B(y)) ==> event(A(x))) || k < j).

process
  in(c,x:bitstring);
  event B(x);
  event A(x);
  event B(x)

(* EXPECTPV
RESULT event(A(x_1))@i && event(B(x_1))@j ==> event(A(x_1)) is true.
RESULT event(A(x_1))@i && event(B(x_1))@j ==> j > i is false.
RESULT event(A(x_1))@i && event(B(x_1))@j ==> i = j is false.
RESULT event(A(x_1))@i && event(B(x_1))@j ==> (event(A(y))@k ==> event(B(y))@z && z ≥ k) is false.
RESULT event(A(x_1))@i && event(B(x_1))@j ==> (event(A(y))@k ==> event(B(y))@z && z ≥ j) is false.
RESULT (query encoded as event(A(x_1)) && event(v,B(x_1)) ==> (event(v_1,B(y)) ==> event(v,B(x_1))) && (event(A(y)) ==> event(v_1,B(y))))
RESULT (but event(A(x_1)) && event(v,B(x_1)) ==> event(v_1,B(y)) && event(v,B(x_1)) && event(A(y)) && event(v_1,B(y)) is true.)
RESULT event(A(x_1))@i && event(B(x_1))@j ==> (event(A(y))@k ==> event(B(y))@z && z > j) is false.
RESULT (query encoded as event(A(x_1)) && event(v,B(x_1)) ==> (event(v_1,B(y)) ==> event(v,B(x_1))) && (event(A(y)) ==> event(v_1,B(y))) && v_1 ≠ v)
RESULT (even event(A(x_1)) && event(v,B(x_1)) ==> event(v_1,B(y)) && event(v,B(x_1)) && event(A(y)) && event(v_1,B(y)) && v_1 ≠ v is false.)
RESULT event(A(x_1))@i && event(B(x_1))@j ==> (event(A(y))@k ==> (event(B(y)) ==> event(A(x_1)))) is false.
RESULT (query encoded as event(A(x_1)) && event(B(x_1)) ==> (event(v,B(y)) ==> event(A(x_1))) && (event(A(y)) ==> event(v,B(y))))
RESULT (but event(A(x_1)) && event(B(x_1)) ==> event(v,B(y)) && event(A(x_1)) && event(A(y)) && event(v,B(y)) is true.)
RESULT event(A(x_1))@i && event(B(x_1))@j ==> i = j is false.
RESULT inj-event(B(x_1))@j && event(A(x_1))@i ==> (inj-event(A(y))@k ==> inj-event(B(y))@z && z ≥ k) is false.
RESULT (query encoded as not (inj-event(B(x_1)) && event(A(x_1))))
RESULT (even not (event(B(x_1)) && event(A(x_1))) is false.)
RESULT inj-event(A(x_1))@i && inj-event(B(x_1))@j ==> (event(A(y))@k ==> inj-event(B(y))@z && z ≥ j) is false.
RESULT (query encoded as inj-event(A(x_1)) && inj-event(v,B(x_1)) ==> (inj-event_1(v_1,B(y)) ==> event(v,B(x_1))) && (event(A(y)) ==> inj-event_1(v_1,B(y))))
RESULT (but inj-event(A(x_1)) && inj-event(v,B(x_1)) ==> inj-event(v_1,B(y)) && event(A(y)) is true.)
RESULT inj-event(B(x_1))@j && event(A(x_1))@i ==> (inj-event(A(y))@k ==> inj-event(B(y))@z && z > j) is false.
RESULT (query encoded as inj-event(v,B(x_1)) && event(A(x_1)) ==> (inj-event_1(v_1,B(y)) ==> event(v,B(x_1))) && (inj-event(A(y)) ==> inj-event_1(v_1,B(y))) && v_1 ≠ v)
RESULT (even event(v,B(x_1)) && event(A(x_1)) ==> event(v_1,B(y)) && event(v,B(x_1)) && event(A(y)) && event(v_1,B(y)) && v_1 ≠ v is false.)
RESULT inj-event(B(x_1))@j && event(A(x_1))@i ==> (event(A(y))@k ==> (inj-event(B(y)) ==> event(A(x_1)))) is false.
RESULT (query encoded as inj-event(B(x_1)) && event(A(x_1)) ==> (inj-event_1(v,B(y)) ==> event(A(x_1))) && (event(A(y)) ==> inj-event_1(v,B(y))))
RESULT (but inj-event(B(x_1)) && event(A(x_1)) ==> inj-event(v,B(y)) && event(A(y)) is true.)
RESULT inj-event(B(x_1))@j && event(A(x_1))@i ==> (event(A(y))@k ==> (inj-event(B(y)) ==> event(A(x_1))) || j > k) is false.
RESULT (query encoded as inj-event(B(x_1))@i && event(A(x_1)) ==> ((inj-event_1(v,B(y)) ==> event(A(x_1))) && (event(A(y)) ==> inj-event_1(v,B(y)))) || (event(A(y))@i_1 && i > i_1))
RESULT (but inj-event(B(x_1))@i && event(A(x_1)) ==> (inj-event(v,B(y)) && event(A(y))) || (event(A(y))@i_1 && i > i_1) is true.)
0.072s (user 0.032s + system 0.040s), max rss 8776K
END *)
