EE290N - Specification and Modeling of Reactive Real-Time Systems Lecture 14 - October 10, 1996, Scribe: Ravi Gunturi

The notion of a monotonic function was reviewed from last lecture. From the viewpoint of providing information, a monotonic function can provide a partial set of information about its ouputs given a partial set of information about its inputs.

Notation <= is the prefix order, Pi is the projection function

Sequential Functions

The term "sequential" has a few connotations. In circuits, sequential implies having the notion of a state, while in a programming language, it means that a program is executed as a sequence of steps. The notion of sequentiality we are interested in examining is called Vuillemin Sequentiality.

Definition A function F: SN -> SM is Vuillemin Sequential if

  1. The function F is continuous
  2. Given s in SN, there exists an i, 1<= i <= N such that for all s' in SN with s <= s' and P i ( s ) = P i ( s' ), F( s ) = F ( s' ).

Vuillemin Sequential functions characterize Kahn/McQueen processes with blocking reads. Kahn/McQueen blocking reads stipulate:

  • A process is a sequence of steps
  • The sequence of steps cannot continue until an input appears
  • The process cannot query to see if the input is present

    Therefore, for any pattern of inputs there is only one input that we are blocking on. The act of looking at (or blocking on) inputs will occur in a well-defined sequence.

    Examples

    1. The Fair-Merge process discussed in previous lectures is not V-Sequential. It was shown before that the functionality of this process cannot be implemented using Kahn/McQueen semantics.
    2. The identity function F: S2 -> S2 is not V-Sequential
    3. The identity function F: S -> S (i.e, one input and one output) is V-Sequential

    Examples (2) and (3) show that in general a Vuillemin Sequential process is not composable. An appropriate definition of compositionality from a programming language perspective is that an aggregation of sub-programs behave like a primitive in the language.

    Dataflow Processes

    Dataflow Processes are a special case of Kahn/McQueen process networks. A sequence of firings is a dataflow process or actor. A firing consumes input tokens and produces output tokens. A set of firing rules specify when an actor can fire.

    Formally, a dataflow process F = maps( f ), where f : S m -> S n is the firing function.
    We would like to choose f such that F is continuous, composable, and determinate.

    In order to satisfy the above stated constraints on F, it is sufficient that f be Vuillemin-Sequential! It is not sufficient however, for f to be continuous or stable or Kahn-Plotkin.

    Definition A function F is stable if

    1. it is a continuous function
    2. For all joinable Q such that Q is a subset of SN, F( Q ) is joinable and F( inf Q ) = inf F ( Q ) where inf ( A ) is the infimum or greatest lower bound of the set A.
    The above mentioned definition of stability was proposed by Gerard Berry.

    Gustave Function

    The Gustave function is an example of a function which is stable but not Vuillemin Sequential. The function is defined as follows over a set of values V = { 0, 1 }:

    Let [0...] be the sequence which begins with 0.
    Let [1...] be the sequence which begins with 1.
    Let [....] be the sequence which begin with 0, 1, or lambda. Then,

    F([....], [0...], [1...]) = [0]
    F([1...], [....], [0...]) = [0]
    F([0...], [1...], [....]) = [0]

    Any other input sequence produces [0 1]. The Gustave function is monotonic and stable but it is not sequential.

    Constraints on dataflow processes

    The firing rules impose a partial ordering constraint on the actor firings.
    Other practical constraints are
  • Scheduling cost: scheduling must be done as much as possible at compile time.
  • The number of unconsumed tokens should be bounded throughout execution if possible for the given graph.
  • The graph should not halt if there are enabled actors.
    Subsequent lectures will address these constraints.