Glossary of Terms

Activity

Ongoing action that drives forward a simulation - either through time or events. Activities may be suspended and resumed as desired, or interrupted involuntarily.

Time

Representation of the progression of a simulation. Whereas the unit of time is arbitrary, its value always grows.

Time may only pass while all activities are suspended until a later time, not turn. An activity may actively wait for the progression of time, or implicitly delay until an event happens at a future point in time.

Turn

Inherent ordering of events happening at the same time.

Event

A well-defined occurrence at a specific point in time. Events may occur as result of activities (“when dinner is done”), as time passes (“after 20 time units”), or at predefined points in time (“at 2000 time units”),

Notification

Information sent to an activity, usually in response to an event. Notifications are only received when the activity is suspended, i.e. at an await, async for or async with.

Postponement

Suspension of an activity until a later turn at the same time. When an activity is postponed, notifications may be received and other activities may run but time does not advance.

note

μSim guarantees that all its primitives postpone on asynchronous operations. This ensures that activities are reliably and deterministically interwoven.

Suspension

Pause the execution of an activity, allowing other activities or time to advance. A suspended activity is only resumed when it receives a notification.

Suspension can only occur as part of asynchronous statements: waiting for the target of an await statement, fetching the next item of an async for statement, and entering/exiting an async with block.