Definition 2 Define the phase traces for a process P in an MSC scenario M to be
sequences of triples:
(S
0
, e
0
, S
1
) (S
1
, e
1
, S
2
) · · · (S
n
, e
n
, S
n+1
)
where e
0
, . . . , e
n
is an event trace of P , S
i
⊆ Ph, φ(e
i
) = S
i
, and S
n+1
is the last
phase for process P in the scenario M.
Each triple in a phase trace is referred to as an annotated event.
2 Dynamic Constraints
A temporal model T consists of a directed graph G, with vertex labelling ν : G
V
−→
2
Ph
, edge labelling ε : G
E
−→ E, and some vertex i that represents the initial moment.
Temporal formulae are defined as usual:
– T, v ² heiφ iff there is an edge (v, w) ∈ G
E
such that ε(v, w) = e, and T, w ² φ
– T, v ² [e]φ iff for every edge (v, w) ∈ G
E
where ε(v, w) = e, T, w ² φ
– T, v ² ¤φ iff T, v ² φ and T, w ² ¤φ for every edge (v, w) ∈ G
E
– T, v ² ♦φ iff there is some vertex w reachable from v such that T, w ² φ
The satisfiability of ordinary boolean formulae is defined as usual. Formula φ is satisfied
in T when T, i ² φ. φ is valid when it is satisfied in every model, when we write ` φ.
Definition 3 For a set S ⊆ Ph, define
V
S =
V
x∈S
x. For a phase trace t = (S, e, S
0
)·
t
0
, define its temporal semantics as
ktk =
^
S ∧ hei(
^
S
0
∧ kt
0
k)
A context C is any temporal formulae over P and E.
A temporal context controls how phases are related across the requirements scenarios.
Definition 4 For context C we define phase trace t to match phase trace t
0
when
` C ⇒ (ktk ⇒ ♦kt
0
k)
Intuitively t matches t
0
if after some initial delay, t
0
becomes the same as t within the
context defined by C.
Definition 5 Let a = (S, e, S
0
) be an annotated event. When 6` C ⇒ (
V
S ⇒
V
S
0
)
define a to be a phase transition event.
Define a phase transition trace to be a trace of annotated events terminating with a
phase transition event.
Let t
1
be the phase transition trace of the phase trace t
0
consisting of t
1
=
({Inactive}, ?activate, {Inactive}) ({Inactive}, !ack, {Inactive}) ({Inactive},
?load(URL), {Active})
In the rightmost MSC of figure 1 the initial annotated event of process ‘Browser’ is
t
2
= ( {Inactive}, ?load(URL), {Load File}).
From this we can prove ` ¤([load(URL)](Active ⇒ ‘LoadFile
0
)) ⇒ (kt
1
k ⇒
♦kt
2
k).
22