Threads And Data-Flow Synchronization

To create a thread:
      thread ... end
Primitive operations block until their arguments are sufficiently instantiated for the operation to be performed. For example:
      declare X = Y + 12
blocks until Y becomes instantiated. We say that it suspends on variable Y. This is known as data-flow synchronization.

The entire thread on which the operation executes suspends on variable Y:
      declare X = thread Y + 12 end