This is an old revision of the document!


Formal model definition

An Alvis model is defined as shown in Definition 1.

Definition 1. An Alvis model is a triple $\mathbf{A} = (H,B,\varphi)$, where:

  • $H$ is a hierarchical communication diagram,
  • $B$ is a syntactically correct code layer,
  • $\varphi$ is a system layer.

Moreover, each non-hierarchical agent $X$ belonging to the diagram $H$ must be defined in the code layer, and each agent defined in the code layer must belong to the diagram.

It should be underlined that currently Alvis Compiler supports $\alpha^0$ system layer only.

Before generation of the Haskell model representation models are transformed into equivalent non-hierarchical form. The transformation applies to the communication diagram only. Thus, from the theoretical point of view, we can consider models defined as $\mathbf{A} = (D,B,\varphi)$, where $D$ is a non-hierarchical communication diagram.

Definition 2. A non-hierarchical communication diagram is a triple $D = (A, C, \sigma)$, where:

  • A = {X_1,…,X_n} is the set of agents consisting of two disjoint sets, A_A, A_P such that A = A_AA_P, containing active and passive agents respectively;
  • CP × P, where P is the set of all ports, is the communication relation, such that:
    • a connection cannot be defined between ports of the same agent;
    • procedure ports are either input or output ones i.e. ports defined as procedures are used to transfer signals (values) either to or from a passive agent;
    • a connection between an active and a passive agent must be a procedure call;
    • a connection between two passive agents must be a procedure call from a non-procedure port.
  • The start function σ makes possible delaying activation of some agents.

Each element belonging to C is called a connection or a communication channel.

Names of agents that are initially activated are underlined in a communication diagram.

Go back