P = (a->b->P).
Q = (c->b->Q).
||S1 = (P||Q).
S2 = (a->c->b->S2 | c->a->b->S2).
Hint: load the definitions of P, Q, S1 into LTSA; do Compose
and see that the result is equivalent to S2.
Why isn't S2 exactly the same as S1? How come and S1 is "optimised"?
CLIENT = (call->wait->continue->CLIENT). SERVER = (request->service->reply->SERVER). ||CLIENT_SERVER = (CLIENT || SERVER) /{call/request, reply/wait}.