Non-equivalence of entry and exit actions
<wait for next event to arrive>
case(ET1): doExitAction(S1,ET1);
case(ET2): doExitAction(S1,ET2);
case(ET3): doExitAction(S1,ET3);
(Each event instance e# has an EventType(e#)=ET#.)
S2: switch(EventType(e#)){
case(ETx): doEntryAction(S2,ETx);
case(ET2): doEntryAction(S2,ET2);
case(ETz): doEntryAction(S2,ETz);
<exit when next event arrives>
Warning: Entry-Action(S2,e2) and Exit-Action(S1,e2) are equivalent, since both are state and event-dependent. However, other transitions into state S2 from different sources may be caused by the same event and require different Actions
(unless the machine is also backward-deterministic).
‘Delayed’ action on exit:
‘Immediate’ action on entry: