Urgency

In CIF, urgency indicates whether or not time may progress. CIF has three forms of urgency: event urgency, location urgency, and edge urgency. Edge urgency should be avoided, and is not explained here.

Event urgency

By default, all events in CIF are urgent. Events being urgent means that edges are taken as soon as possible. In other words, event transitions take priority over time transitions. Time can only progress if no event transitions are possible. It is not possible to make events non-urgent in a CIF model, but specific tools may allow making events non-urgent.

Location urgency

Consider the following CIF specification:

automaton use_case:
  location first:
    initial;
    edge tau goto second;

  location second:
    edge tau goto done;

  location done;
end

This automaton represents a use case, which goes from one location to the next. The state space is:

usecase nonurg state space

The states are labeled with the names of the current locations of automaton use_case and the current values of variable time. At the end of the use case, no events are possible, and thus time can progress infinitely. To force that in location done no time can progress, the location can be made urgent:

automaton use_case:
  location first:
    initial;
    edge tau goto second;

  location second:
    edge tau goto done;

  location done:
    urgent; // Location is now urgent.
end

The resulting state space is:

usecase urgloc state space