This paper was converted on www.awesomepapers.org from LaTeX by an anonymous user.
Want to know more? Visit the Converter page.

Laboratoire de Mathématiques et Informatique pour la Complexité et les Systèmes, CentraleSupélec, 9 rue Joliot-Curie, Gif-sur-Yvette, Francehttps://orcid.org/0000-0002-5322-4337 Laboratory of Systems Requirements and Conformity Engineering, CEA-LIST, P.C. 174, Gif-sur-Yvette, Francehttps://orcid.org/0000-0001-6865-5108 Laboratoire de Mathématiques et Informatique pour la Complexité et les Systèmes, CentraleSupélec, 9 rue Joliot-Curie, Gif-sur-Yvette, Francehttps://orcid.org/0000-0002-8955-6835 \CopyrightErwan Mahe and Chritophe Gaston and Pascale Le Gall {CCSXML} <ccs2012> <concept> <concept_id>10003752.10010124.10010131.10010133</concept_id> <concept_desc>Theory of computation Denotational semantics</concept_desc> <concept_significance>300</concept_significance> </concept> <concept> <concept_id>10003752.10010124.10010131.10010134</concept_id> <concept_desc>Theory of computation Operational semantics</concept_desc> <concept_significance>300</concept_significance> </concept> <concept> <concept_id>10003752.10003753.10003761.10003764</concept_id> <concept_desc>Theory of computation Process calculi</concept_desc> <concept_significance>300</concept_significance> </concept> </ccs2012> \ccsdesc[300]Theory of computation Denotational semantics \ccsdesc[300]Theory of computation Operational semantics \ccsdesc[300]Theory of computation Process calculi \hideLIPIcs\EventEditors \EventNoEds1 \EventLongTitle \EventShortTitle \EventAcronym \EventYear \EventDate \EventLocation \EventLogo \SeriesVolume \ArticleNo

A structural operational semantics for interactions with a look at loops

Erwan Mahe    Christophe Gaston    Pascale Le Gall
Abstract

Message Sequence Charts & Sequence Diagrams are graphical models that represent the behavior of distributed and concurrent systems via the scheduling of discrete and local emission and reception events. We propose an Interaction Language (IL) to formalize such models, defined as a term algebra which includes strict and weak sequencing, alternative and parallel composition and four kinds of loops. This IL is equipped with a denotational-style semantics associating a set of traces (sequences of observed events) to each interaction. We then define a structural operational semantics in the style of process algebras and formally prove the equivalence of both semantics.

keywords:
interactions, sequence diagrams, distributed & concurrent systems, formal language, denotational semantics, operational semantics, loop
category:
\relatedversion

1 Introduction

Specifying the behavior of distributed and concurrent systems is the object of a large literature. In particular modelling asynchronous communications between concurrent processes is possible under a variety of formalisms, including process algebras [18], Petri Nets [4], series-parallel languages [9], distributed automata [1], or formalisms derived from Message Sequence Charts (MSC) [14]. In the context of this paper, we focus on the latter. MSCs are graphical models which represent the exchange of information between sub-systems. Various offshoots of MSCs, which notably include UML Sequence Diagrams (UML-SD), have been proposed and we may call languages from that family "Interaction Languages" (IL). Interactions are particularly interesting due to their graphical nature and ease of understanding.

In order to use interactions for formal verification, they have to be fitted with formal semantics. A major hurdle in defining those lies in the treatment of weak sequencing. In a few words, weak sequencing allows events taking place on different locations to occur in any order while strictly ordering those that take place on the same location. The survey [15] provides an overview of solutions found in the literature. Those can be roughly categorized as follows: (a) direct denotational semantics, which define the trace semantics of interactions directly. They either rely on partial order sets [19, 13] or algebraic operators [7]; (b) semantics by translation, which rely on translating interactions into some other models such as Petri Nets [3] or automata [8] and then use (generally operational-style) semantics of those other formalisms and; (c) direct operational-style semantics, which notably include that of [14].

While approaches in (c) are highly valuable for defining algorithms for formal verification, approaches in (a) are adapted to reason about interactions and their properties. Our contribution provides a framework encompassing (a) and (c) based on an IL which includes strict and weak sequencing, alternative and parallel composition and four semantically distinct loops. We propose a denotational-style semantics extending that of [7] with the addition of repetition operators in the form of variants of the algebraic Kleene closure. We also define a structural operational semantics in the fashion of process algebras [2] with a particular care for the handling of weak sequencing and which uses dedicated rules to address the various loops. The equivalence of both semantics is formally proven (with an automated proof made with Coq available in [11]). Languages such as MSC or UML-SD only propose a single loop construct. By contrast, our contribution highlights the use of distinct loops to express nuances in the repetition of behaviors.

This paper is organized as follows: Sec.2 introduces the concept of interactions and traces. Sec.3 defines repetition operators on sets of traces. Sec.4 presents the syntax of our IL and defines a trace semantics in denotational-style using operators introduced in the previous sections. Sec.5 defines a structural operational semantics on interactions with loops in the style of process calculus. In Sec.6, we demonstrate the equivalence of both semantics. Finally, in Sec.7 we discuss some related works and we conclude in Sec.8. Detailed demonstrations are included in the appendix.

2 Basic interactions & intuition of their meaning

Interactions describe the behavior of distributed and concurrent systems through the perspective of their internal and external communications. They are defined up to a signature Ω=(L,M)\Omega=(L,M) where LL is a set of lifelines and MM is a set of messages. Lifelines are abstractions of sub-systems, or groups of sub-systems while messages represent data sent and received by sub-systems.

2.1 Preliminaries

The executions of systems are characterized by sequences of events called communication actions (actions for short) which are of two kinds: either the emission of a message mMm\in M from a lifeline lLl\in L, denoted by l!ml!m, or the reception of a message mMm\in M by a lifeline lLl\in L, denoted by l?ml?m. We note 𝔸Ω\mathbb{A}_{\Omega} the set of actions defined up to Ω\Omega. For any such action aa, θ(a)\theta(a) denotes the lifeline on which aa occurs.

Sequences of actions from 𝔸Ω\mathbb{A}_{\Omega}, called traces, are words in 𝔸Ω\mathbb{A}_{\Omega}^{*}, with "." denoting the classical concatenation law and ϵ\epsilon being the empty word (empty trace). We denote by 𝕋Ω=𝔸Ω\mathbb{T}_{\Omega}=\mathbb{A}_{\Omega}^{*} the set of traces. Thus, for any two traces t1t_{1} and t2t_{2}, t1.t2t_{1}.t_{2} is the trace composed of the sequence of actions of t1t_{1} followed by the sequence of actions of t2t_{2}.

We now introduce operators111We use notations from [7]. to compose traces. Those operators model different notions of scheduling: the interleaving (||||) and the weak sequencing (;\scalerel×

×

b
;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
).

The set t1||t2t_{1}||t_{2} of interleavings of traces t1t_{1} and t2t_{2} is defined by:

ϵ||t2={t2}t1||ϵ={t1}(a1.t1)||(a2.t2)={a1.t|tt1||(a2.t2)}{a2.t|t(a1.t1)||t2}\begin{array}[]{lcl}\epsilon||t_{2}&=&\{t_{2}\}\\ t_{1}||\epsilon&=&\{t_{1}\}\\ (a_{1}.t_{1})||(a_{2}.t_{2})&=&\{a_{1}.t\leavevmode\nobreak\ |\leavevmode\nobreak\ t\in t_{1}||(a_{2}.t_{2})\}\cup\{a_{2}.t\leavevmode\nobreak\ |\leavevmode\nobreak\ t\in(a_{1}.t_{1})||t_{2}\}\end{array}

Interleaving allows elements of distinct traces to be reordered w.r.t. one another while preserving the order that is specific to each trace. By contrast, weak sequencing only allows such permutations when actions do not occur on the same lifeline. Defining weak sequencing requires introducing a predicate: for any trace tt and lifeline ll, the predicate t\scalerel×

×

bl
t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l
means that tt contains at least an action occurring on ll (we say that tt has conflicts w.r.t. ll). It is defined as follows:

ϵ\scalerel×

×

bl
=
(a.t)\scalerel×

×

bl
=(θ(a)=l)(t\scalerel×

×

bl
)
\begin{array}[]{lcl}\epsilon\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l&=&\bot\\ (a.t)\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l&=&(\theta(a)=l)\vee(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\end{array}

The set t1;\scalerel×

×

b
t2
t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2}
of weak sequencing of traces t1t_{1} and t2t_{2} is defined by:

ϵ;\scalerel×

×

b
t2
={t2}
t1;\scalerel×

×

b
ϵ
={t1}
(a1.t1);\scalerel×

×

b
(a2.t2)
={a1.t|tt1;\scalerel×

×

b
(a.t2)}
{a2.t|t(a1.t1);\scalerel×

×

b
t2,¬(a1.t1\scalerel×

×

bθ(a2))
}
\begin{array}[]{lcl}\epsilon;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2}&=&\{t_{2}\}\\ t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\epsilon&=&\{t_{1}\}\\ (a_{1}.t_{1});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}(a_{2}.t_{2})&=&\{a_{1}.t\leavevmode\nobreak\ |\leavevmode\nobreak\ t\in t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}(a.t_{2})\}\cup\left\{a_{2}.t\leavevmode\nobreak\ \middle|\leavevmode\nobreak\ \begin{array}[]{c}t\in(a_{1}.t_{1});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2},\;\neg(a_{1}.t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a_{2}))\end{array}\right\}\end{array}

The previous binary operators (".", ";\scalerel×

×

b
;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
" & "||||") defined on traces are canonically extended to sets of traces as follows. Given T1T_{1} and T2T_{2} two sets of traces, T1;T2T_{1};T_{2} denotes the set of all traces t1.t2t_{1}.t_{2} s.t. t1T1t_{1}\in T_{1} and t2T2t_{2}\in T_{2}. Likewise, with {;\scalerel×

×

b
,||}
\diamond\in\{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}},\leavevmode\nobreak\ ||\}
, T1T2T_{1}\diamond T_{2} is the union of all the sets t1t2t_{1}\diamond t_{2} s.t. t1T1t_{1}\in T_{1} and t2T2t_{2}\in T_{2}. By choosing ";" for denoting the extension of "." to sets of traces, we adopt the same notation as in [7]. ";" is called the strict sequencing operator. The use of the strict sequencing (";"), weak sequencing (";\scalerel×

×

b
;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
") and interleaving ("||||") operators is illustrated on the right of Fig.1 so as to compute the semantics of an example interaction. For instance, weak sequencing allows l1!m2{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}} to be reordered before l3?m1{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}} but not before l1!m1{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}} while interleaving allows l1!m4{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}} to be placed anywhere w.r.t. l1!m3{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}} and l2?m3{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}}.

2.2 Basic interactions

Interactions can be drawn as "sequence diagrams" of which an example is given in the left of Fig.1. Lifelines are drawn as vertical lines. Emission and reception actions are drawn as horizontal arrows carrying the transmitted message and which respectively exit the emitting lifeline or point towards the receiving lifeline. When a direct emission-reception causality can be identified we draw both actions as a single arrow from the emitter towards the receiver.

The top to bottom direction relates to the passing of time. An action (arrow) drawn above another generally occurs beforehand. This scheduling of actions corresponds to the weak sequencing operator. By contrast, strict sequencing may be used to enforce precedence relations between actions occurring on different lifelines. In Fig.1, the arrow carrying m1m_{1} and specifying its passing between l1l_{1} and l3l_{3} is modelled by the interaction strict(l1!m1,l3?m1)strict({\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}},{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}}). The fact that this arrow stands above that carrying m2m_{2} can be modelled using the weak sequencing operator: seq(strict(l1!m1,l3?m1),strict(l1!m2,l2?m2))seq(strict({\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}},{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}}),strict({\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}},{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{2}})). Using seqseq here instead of strictstrict allows for instance l2?m2{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{2}} to occur before l3?m1{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}} even though the latter is drawn above. However l1!m2{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}} cannot occur before l1!m1{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}} because they both occur on l1l_{1}.

Parallel and alternative compositions can also be used to specify more complex behavior. On Fig.1, the passing of m3m_{3} and the emission of m4m_{4} are scheduled using parallel composition. In the diagram representation this corresponds to the box labelled with "par". This can be modelled with the term par(strict(l1!m3,l2?m3),l1!m4)par(strict({\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}},{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}}),{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}}). Actions scheduled with parpar can occur in any order w.r.t. one another. Here, l1!m4{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}} can occur before l1!m3{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}}, after l2?m3{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}} or in between those two actions. Alternative composition proposes an exclusive non-deterministic choice between behaviors. Like parpar, altalt is drawn as a box labelled with "alt".

Refer to caption =(({l1!m1};{l3?m1});\scalerel×

×

b
({l1!m2};{l2?m2})
)
(({l1!m3};{l2?m3})||{l1!m4})
=({l1!m1.l3?m1};\scalerel×

×

b
{l1!m2.l2?m2}
)
({l1!m3.l2?m3}||{l1!m4})
={l1!m1.l3?m1.l1!m2.l2?m2,l1!m1.l1!m2.l3?m1.l2?m2,l1!m1.l1!m2.l2?m2.l3?m1l1!m3.l2?m3.l1!m4,l1!m3.l1!m4.l2?m3,l1!m4.l1!m3.l2?m3}
\begin{array}[]{l}=\left(\begin{array}[]{c}(\{{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}\};\{{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}}\})\\ ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}(\{{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}}\};\{{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{2}}\})\end{array}\right)\cup\left(\begin{array}[]{c}(\{{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}}\};\{{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}}\})\\ ||\{{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}}\}\end{array}\right)\\ \\ =\left(\begin{array}[]{c}\{{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}}\}\\ ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{2}}\}\end{array}\right)\cup\left(\begin{array}[]{c}\{{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}}.{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}}\}\\ ||\{{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}}\}\end{array}\right)\\ \\ =\left\{\begin{array}[]{c}{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{2}},\\ {\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{2}},\\ {\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m_{2}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{2}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{3}?m_{1}}\end{array}\right.\left.\begin{array}[]{c}{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}}.{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}}.{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}},\\ {\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}}.{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}}.{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}},\\ {\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{1}!m_{4}}.{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{3}}.{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{3}}\end{array}\right\}\\ \end{array}
Figure 1: Example of a basic interaction & its trace semantics

3 Repetition operators in the semantic domain

Scheduling operators define compositions of traces obtained from enabling or forbidding the reordering of actions according to some scheduling policy. All three are associative (in addition, |||| is commutative) and admit {ϵ}\{\epsilon\} as a neutral element. As a result, we can define (Kleene) closures of those operators to specify repetitions.

Definition 3.1 (Kleene closures).

For any {;,;\scalerel×

×

b
,||}
\diamond\in\{;,\leavevmode\nobreak\ ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}},\leavevmode\nobreak\ ||\}
and any T𝒫(𝕋Ω)T\in\mathcal{P}(\mathbb{T}_{\Omega}),

the Kleene closure TT^{\diamond*} of TT is defined by:

{T0={ϵ}Tj=TT(j1)for j>0T=jTj\left\{\begin{array}[]{lclr}T^{\diamond 0}&=&\{\epsilon\}&\\ T^{\diamond j}&=&T\diamond T^{\diamond(j-1)}&\textbf{for }j>0\\ T^{\diamond*}&=&\bigcup_{\begin{subarray}{c}j\in\mathbb{N}\end{subarray}}T^{\diamond j}&\end{array}\right.

The three Kleene closures ;\leavevmode\nobreak\ {}^{;*}, ;\scalerel×

×

b
\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
and ||\leavevmode\nobreak\ {}^{||*} are respectively called, strict, weak and interleaving Kleene closures.

Within the K-closure TT^{\diamond*} we can find traces obtained from the repetition (using \diamond as a scheduler) of any number of traces of TT. In the example from Fig.2 we consider a set TT containing two traces l1!m1.l2!m2{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}} and l2?m1{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}}. The first 3 powersets of TT (i.e. T;\scalerel×

×

b
0
T;\scalerel×

×

b
1
T;\scalerel×

×

b
2
T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}0}\cup T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}1}\cup T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}2}
) are displayed, the rest of the weak K-closure of TT (i.e. T;\scalerel×

×

b
T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
) is represented by the \cdots.

{l1!m1.l2!m2,l2?m1};\scalerel×

×

b
={ϵ,l1!m1.l2!m2,l2?m1,l1!m1.l2!m2.l1!m1.l2!m2,l1!m1.l1!m1.l2!m2.l2!m2,l1!m1.l2!m2.l2?m1,l2?m1.l2?m1,l2?m1.l1!m1.l2!m2,l1!m1.l2?m1.l2!m2,}
\left\{\begin{array}[]{l}{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}},\\ {\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}}\end{array}\right\}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}=\left\{\begin{array}[]{lclcl}\begin{array}[]{l}\epsilon,\\ {\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}},\\ {\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}},\end{array}&\nobreak\leavevmode\hfil&\begin{array}[]{l}{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}},\\ {\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}},\\ {\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}},\\ {\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}},\\ {\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}},\\ {\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}!m_{1}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}?m_{1}}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{2}!m_{2}},\\ \end{array}&\nobreak\leavevmode\hfil&\begin{array}[]{l}\cdots\end{array}\end{array}\right\}
Figure 2: Example illustrating the weak Kleene closure

Let us remark a useful property of the K-closures which is that TT=TT\diamond T^{\diamond*}=T^{\diamond*}.

Given a scheduling operator {;,;\scalerel×

×

b
,||}
\diamond\in\{;,\leavevmode\nobreak\ ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}},\leavevmode\nobreak\ ||\}
whenever a.tT1T2a.t\in T_{1}\diamond T_{2} (with aa and tt any action and trace and T1T_{1} and T2T_{2} any sets of traces), it may be so that action aa is taken from a trace a.ta.t^{\prime} that belongs to either T1T_{1} or T2T_{2}. In Def.3.2, we define restricted versions of the scheduling operators so as to impose action aa to be taken from T1T_{1}.

Definition 3.2 (Restricted scheduling operators).

For any {;,;\scalerel×

×

b
,||}
\diamond\in\{;,\leavevmode\nobreak\ ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}},\leavevmode\nobreak\ ||\}
, we define the operator \diamond^{\Lsh} such that for any sets of traces T1T_{1} and T2T_{2} we have:

T1T2={tT1T2|(t=a.t)(t1𝕋Ω, s.t. (a.t1T1)(t{t1}T2))}T_{1}\diamond^{\Lsh}T_{2}=\left\{\leavevmode\nobreak\ t\in T_{1}\diamond T_{2}\leavevmode\nobreak\ \middle|\leavevmode\nobreak\ (t=a.t^{\prime})\Rightarrow(\exists\leavevmode\nobreak\ t_{1}\in\mathbb{T}_{\Omega},\text{ s.t. }(a.t_{1}\in T_{1})\leavevmode\nobreak\ \wedge\leavevmode\nobreak\ (t\in\{t_{1}\}\diamond T_{2}))\leavevmode\nobreak\ \right\}

As an example, given T1={l1!m.l1?m}T_{1}=\{{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}?m}\} and T2={l2!m}T_{2}=\{{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{2}!m}\}, we have:

T1;\scalerel×

×

b
T2={l1!m.l1?m.l2!m,l1!m.l2!m.l1?m,l2!m.l1!m.l1?m}
 and T1;\scalerel×

×

b
T2={l1!m.l1?m.l2!m,l1!m.l2!m.l1?m}
\begin{array}[]{ccc}T_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}T_{2}=\left\{\begin{array}[]{l}{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}?m}.{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{2}!m},\\ {\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m}.{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{2}!m}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}?m},\\ {\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{2}!m}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}?m}\end{array}\right\}&\leavevmode\nobreak\ \leavevmode\nobreak\ \text{ and }\nobreak\leavevmode\nobreak\leavevmode&T_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}T_{2}=\left\{\begin{array}[]{l}{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}?m}.{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{2}!m},\\ {\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{1}!m}.{\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}l_{2}!m}.{\color[rgb]{1,.5,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,.5,0}l_{1}?m}\end{array}\right\}\end{array}

We use the restriction on operators to define Head-First closures (abbr. HF-closure) of scheduling operators in Def.3.3.

Definition 3.3 (Head-first closures).

For any {;,;\scalerel×

×

b
,||}
\diamond\in\{;,\leavevmode\nobreak\ ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}},\leavevmode\nobreak\ ||\}
, we define the Head-First closure of \diamond as {}^{\diamond^{\Lsh}*} i.e. the Kleene closure of the restricted \diamond^{\Lsh} operator.

In the following we will show that HF-closure and K-closure are equivalent for ; and |||| but that this is not the case for ;\scalerel×

×

b
;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
.

Lemma 3.4.

For any {;,||}\diamond\in\{;,\leavevmode\nobreak\ ||\}, T𝒫(𝕋Ω)T\in\mathcal{P}(\mathbb{T}_{\Omega}), tt in 𝕋Ω\mathbb{T}_{\Omega} and a𝔸Ωa\in\mathbb{A}_{\Omega} we have:

(a.tT)(t𝕋Ω s.t. (a.tT)(t{t}T))(a.t\in T^{\diamond*})\Rightarrow\left(\exists\leavevmode\nobreak\ t^{\prime}\in\mathbb{T}_{\Omega}\text{ s.t. }(a.t^{\prime}\in T)\wedge\leavevmode\nobreak\ (t\in\{t^{\prime}\}\diamond T^{\diamond*})\right)
Proof 3.5.

By induction on jj given a.tTja.t\in T^{\diamond j}. In the case of |||| we use its commutativity.

Lemma 3.6 (Equivalence of HF & K closures for ; & ||||).

For any set of traces TT:

T;=T; and T||=T||\begin{array}[]{ccc}T^{;^{\Lsh}*}=T^{;*}&\leavevmode\nobreak\ \leavevmode\nobreak\ \text{ and }\nobreak\leavevmode\nobreak\leavevmode&T^{||^{\Lsh}*}=T^{||*}\end{array}
Proof 3.7.

By induction on a member trace tt.

Let us detail a counter example showing that the weak K-closure ;\scalerel×

×

b
\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
and the weak HF-closure ;\scalerel×

×

b
\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
are not equivalent. Given T={l1!m1.l2?m1,l2!m2}T=\{l_{1}!m_{1}.l_{2}?m_{1},\leavevmode\nobreak\ l_{2}!m_{2}\}, let us consider the powerset T;\scalerel×

×

b
2
T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}2}
of TT. By definition, {l2!m2};\scalerel×

×

b
{l1!m1.l2?m1}T;\scalerel×

×

b
2
\{{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}!m_{2}}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{1}}.{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{1}}\}\subset T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}2}
. Here we can choose to take l1!m1{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{1}} as a first action and therefore t=l1!m1.l2!m2.l2?m1T;\scalerel×

×

b
2
t={\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{1}!m_{1}}.{\color[rgb]{1,0,0}\definecolor[named]{pgfstrokecolor}{rgb}{1,0,0}l_{2}!m_{2}}.{\color[rgb]{.5,0,.5}\definecolor[named]{pgfstrokecolor}{rgb}{.5,0,.5}l_{2}?m_{1}}\in T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}2}
. However, tT;\scalerel×

×

b
T=T;\scalerel×

×

b
2
t\not\in T;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}T=T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}2}
. Also, we have tT;\scalerel×

×

b
j
t\not\in T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}j}
for any jj smaller or greater that 22. This can be explained by not having the correct actions and/or not the right numbers of actions to reconstitute tt. As a result tT;\scalerel×

×

b
t\not\in T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
and hence T;\scalerel×

×

b
T;\scalerel×

×

b
T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}\not\subseteq T^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
. This example will be further illustrated in Sec.5.4 with the help of the operational semantics.

4 Syntax & denotational semantics

Interactions terms are defined inductively. Basic building blocks include the empty interaction \varnothing which specifies the empty behavior ϵ\epsilon (observation of no action) and any atomic action aa, which specifies the single-element trace aa (observation of aa). More complex behavior can then be specified inductively using:

  • binary constructors, which are strictstrict, seqseq, parpar and altalt (introduced in Sec.2.2)

  • unary constructors, which are loopXloop_{X} (the strict loop), loopHloop_{H} (the head loop up to the weak sequencing operator), loopSloop_{S} (the weak loop) and loopPloop_{P} (the parallel loop)

Definition 4.1 (Interaction Language).

We denote by 𝕀Ω\mathbb{I}_{\Omega} the set of terms inductively defined by the set of operation symbols =012\mathcal{F}=\mathcal{F}_{0}\cup\mathcal{F}_{1}\cup\mathcal{F}_{2} s.t.:

  • symbols or arity 0 (constants) are 0={}𝔸Ω\mathcal{F}_{0}=\{\varnothing\}\cup\mathbb{A}_{\Omega}

  • symbols of arity 11 are 1={loopX,loopH,loopS,loopP}\mathcal{F}_{1}=\{loop_{X},\leavevmode\nobreak\ loop_{H},\leavevmode\nobreak\ loop_{S},\leavevmode\nobreak\ loop_{P}\}

  • symbols of arity 22 are 2={strict,seq,par,alt}\mathcal{F}_{2}=\{strict,\leavevmode\nobreak\ seq,\leavevmode\nobreak\ par,\leavevmode\nobreak\ alt\}

In Def.4.1 we define our Interaction Language (IL) as a set of terms 𝕀Ω\mathbb{I}_{\Omega} inductively defined from \mathcal{F} a finite set of symbols provided with arity in \mathbb{N}. The set of sets of traces 𝒫(𝕋Ω)\mathcal{P}(\mathbb{T}_{\Omega}) admits the structure of a \mathcal{F}-algebra using operators introduced in Sec.2 and Sec.3. The denotational semantics of interactions is then defined in Def.4.2 using the initial homomorphism associated to this \mathcal{F}-algebra.

Definition 4.2 (Denotational semantics).

𝒜=(𝒫(𝕋Ω),{f𝒜|f})\mathcal{A}=(\mathcal{P}(\mathbb{T}_{\Omega}),\leavevmode\nobreak\ \{f^{\mathcal{A}}\leavevmode\nobreak\ |\leavevmode\nobreak\ f\in\mathcal{F}\}) is the \mathcal{F}-algebra defined by its carrier 𝒫(𝕋Ω)\mathcal{P}(\mathbb{T}_{\Omega}) and the following interpretations of the operation symbols in \mathcal{F}:

𝒜={ϵ}a𝒜={a}strict𝒜=;seq𝒜=;\scalerel×

×

b
par𝒜=||alt𝒜=
loopX𝒜=;loopH𝒜=;\scalerel×

×

b
loopS𝒜=;\scalerel×

×

b
loopP𝒜=||
\begin{array}[]{ccccc}\begin{array}[]{lcl}\varnothing^{\mathcal{A}}&=&\{\epsilon\}\\ a^{\mathcal{A}}&=&\{a\}\end{array}&\nobreak\leavevmode\nobreak\leavevmode\nobreak\leavevmode\nobreak\leavevmode\hfil&\begin{array}[]{lcl}strict^{\mathcal{A}}&=&;\\ seq^{\mathcal{A}}&=&;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\\ par^{\mathcal{A}}&=&||\\ alt^{\mathcal{A}}&=&\cup\end{array}&\nobreak\leavevmode\nobreak\leavevmode\nobreak\leavevmode\nobreak\leavevmode\hfil&\begin{array}[]{lcl}loop_{X}^{\mathcal{A}}&=&\leavevmode\nobreak\ {}^{;*}\\ loop_{H}^{\mathcal{A}}&=&\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}\\ loop_{S}^{\mathcal{A}}&=&\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}\\ loop_{P}^{\mathcal{A}}&=&\leavevmode\nobreak\ {}^{||*}\end{array}\end{array}

The denotational semantics σd\sigma_{d} of 𝕀Ω\mathbb{I}_{\Omega} is the unique \mathcal{F}-homomorphism σd:𝕀Ω𝒫(𝕋Ω)\sigma_{d}:\mathbb{I}_{\Omega}\rightarrow\mathcal{P}(\mathbb{T}_{\Omega}) between the free term \mathcal{F}-algebra222The free term \mathcal{F}-algebra is defined by its carrier 𝕀Ω\mathbb{I}_{\Omega} and by interpreting operation symbols of \mathcal{F} as constructors of new terms: for ff\in\mathcal{F} of arity jj, for t1,tj𝕀Ωt_{1},\ldots t_{j}\in\mathbb{I}_{\Omega}, f(t1,tj)f(t_{1},\ldots t_{j}) is interpreted as itself. 𝒯\mathcal{T}_{\mathcal{F}} and 𝒜\mathcal{A}.

The semantics of constants \varnothing and a𝔸Ωa\in\mathbb{A}_{\Omega} are sets containing a single element being respectively {ϵ}\{\epsilon\} and {a}\{a\}. The strictstrict, seqseq, parpar and altalt symbols are respectively associated to the ;, ;\scalerel×

×

b
;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
, |||| and union \cup operators on sets of traces. Their use is shown on Fig.1. On the right of Fig.1, we detail the semantics of the interaction drawn on the left. The resulting set of traces is given on the bottom right. loopXloop_{X}, loopHloop_{H}, loopPloop_{P}, loopSloop_{S} are semantically distinct (as shown on simple examples in [13]). From a system designer perspective, using either loop is motivated by different goals:

  • With loopX(i)loop_{X}(i), each existing instance of a repeatable behavior (specified by ii) must be executed entirely before any other can start. This implies that, at any given moment there can only exists zero or a single instance. loopXloop_{X} can therefore be used to specify some critical repeatable behavior of which there can only exist one instance at a time.

  • With loopP(i)loop_{P}(i), all existing instances can be executed concurrently w.r.t. one another, and, at any given moment, new instances can be created. loopPloop_{P} can therefore be used to specify protocols in which any number of new sessions can be created and run in parallel.

  • With loopS(i)loop_{S}(i), new instances can be created whenever the action triggering the instantiation occurs on a lifeline which is not occulted by previous instances. This can be roughly explained as follows: (1) on each individual lifeline only one instance can be active and (2) given that, for any such instance, a lifeline might "have finished" before the others then it is allowed to start another instance. loopSloop_{S} can therefore be used to specify repeatable behaviors that are sequential but that have no enforced synchronization mechanisms.

  • The head loop loopHloop_{H} is associated to the weak HF-closure operator ;\scalerel×

    ×

    b
    \leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
    which is an ad-hoc algebraic artifact and not a K-closure. We include it in our IL because it might correspond to a more intuitive understanding of sequential loops than loopSloop_{S}, as illustrated in Sec.5.4.

5 A structural operational semantics

In this section we present a structural operational semantics for interactions in the style of process calculus [2]. It relies on the definition (by structural induction) of two predicates: "ii\downarrow" (the termination predicate) indicates that interaction term ii accepts the empty trace and "i𝑎ii\xrightarrow{a}i^{\prime}" (the execution relation) indicates that traces a.ta.t such that tt is accepted by ii^{\prime} are accepted by ii. We define \downarrow in Sec.5.1. The relation \rightarrow allows the determination, for any interaction ii, of which actions aa can be immediately executed, and, of potential follow-up interactions ii^{\prime} which express continuations tt of traces a.ta.t accepted by ii. Defining an execution relation \rightarrow is a staple of process calculus [2]. However, as we want to define such a similar relation \rightarrow for our IL, particular care is needed when dealing with weak sequencing. Hence we introduce intermediate notions in Sec.5.2 before defining \rightarrow in Sec.5.3.

5.1 Termination

By reasoning on the structure of an interaction term ii, we can determine whether or not the empty trace ϵ\epsilon belongs to its semantics. When this holds, we say that ii terminates and use the notation ii\downarrow as in [2]. \downarrow is defined as an inductive predicate in Def.5.1 and its characterization w.r.t. the semantics σd\sigma_{d} of interactions is given in Lem.5.2.

Definition 5.1 (Termination).

The predicate 𝕀Ω\downarrow\subset\mathbb{I}_{\Omega} is s.t. for any i1i_{1} and i2i_{2} from 𝕀Ω\mathbb{I}_{\Omega}, any f{strict,seq,par}f\in\{strict,seq,par\} and any k{X,H,S,P}k\in\{X,H,S,P\} we have:

  \top     \varnothing\downarrow

       i1i_{1}\downarrow     alt(i1,i2)alt(i_{1},i_{2})\downarrow

       i2i_{2}\downarrow     alt(i1,i2)alt(i_{1},i_{2})\downarrow

  i1i_{1}\downarrow         i2i_{2}\downarrow     f(i1,i2)f(i_{1},i_{2})\downarrow

        \top     loopk(i1)loop_{k}(i_{1})\downarrow

All rules of Def.5.1 are evident. The empty interaction \varnothing only accepts ϵ\epsilon, and thus terminates. An interaction with a loop at its root terminates because it is possible to repeat zero times its content. As alt(i1,i2)alt(i_{1},i_{2}) specifies a choice, it terminates iff either i1i_{1} or i2i_{2} terminates. An interaction of the form f(i1,i2)f(i_{1},i_{2}), with ff being a scheduling constructor, terminates iff both i1i_{1} and i2i_{2} terminate.

Lemma 5.2 (Termination w.r.t. σd\sigma_{d}).

For any i𝕀Ωi\in\mathbb{I}_{\Omega} we have (i)(ϵσd(i))(i\downarrow)\Leftrightarrow(\epsilon\in\sigma_{d}(i))

Proof 5.3.

By induction on the term structure of interactions.

5.2 Dealing with weak-sequencing using evasion & pruning

Weak sequencing only allows interleavings between actions that occur on different lifelines. As a result, within an interaction of the form i=seq(i1,i2)i=seq(i_{1},i_{2}), some actions that can be executed in i2i_{2} may also be executed in seq(i1,i2)seq(i_{1},i_{2}). In other words, given a trace a.tσd(i)a.t\in\sigma_{d}(i), action aa might correspond to an action expressed by i2i_{2}. This is however conditioned by the ability of i1i_{1} to express traces that have no conflict w.r.t. aa so that aa may be placed in front of what is expressed by i1i_{1} when recomposing a.ta.t.

In the previous section we have seen that the termination predicate ii\downarrow states that interaction ii is able to express the empty trace. We define "evasion" as a similar, although weaker, notion than "termination" that can be described as a form of local termination. For a lifeline ll, we say that ii evades ll, denoted by i\scalerel×

×

b
l
i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
, if ii accepts at least one trace that does not contain actions occurring on ll. Evasion is defined inductively in Def.5.4. For any i𝕀Ωi\in\mathbb{I}_{\Omega} and lLl\in L, it is always decidable whether i\scalerel×

×

b
l
i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
or ¬(i\scalerel×

×

b
l
)
\neg(i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l)
. We may then denote by i↓̸\scalerel×

×

b
l
i\not{\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}l
the fact that ¬(i\scalerel×

×

b
l
)
\neg(i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l)
and say that ii collides with ll.

Definition 5.4 (Evasion).

The predicate \scalerel×

×

b
𝕀Ω×L
\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\subset\mathbb{I}_{\Omega}\times L
is s.t. for any i1i_{1} and i2i_{2} from 𝕀Ω\mathbb{I}_{\Omega}, any lLl\in L, any a𝔸Ωa\in\mathbb{A}_{\Omega}, any f{strict,seq,par}f\in\{strict,seq,par\} and any k{X,H,S,P}k\in\{X,H,S,P\} we have:

  θ(a)l\theta(a)\neq l     \scalerel×

×

b
l
\varnothing\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l

  θ(a)l\theta(a)\neq l     a\scalerel×

×

b
l
a\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l

       i1\scalerel×

×

b
l
i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
    alt(i1,i2)\scalerel×

×

b
l
alt(i_{1},i_{2})\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l

       i2\scalerel×

×

b
l
i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
    alt(i1,i2)\scalerel×

×

b
l
alt(i_{1},i_{2})\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l

  i1\scalerel×

×

b
l
i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
  
       i2\scalerel×

×

b
l
i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
        f(i1,i2)\scalerel×

×

b
l
f(i_{1},i_{2})\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l

         \scalerel×

×

b
\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
    loopk(i1)\scalerel×

×

b
l
loop_{k}(i_{1})\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l

The empty interaction \varnothing evades any lifeline as ϵ\epsilon contains no action. An interaction reduced to a single action aa evades ll iff aa does not occur on ll. As for termination, an interaction with a loop at its root evades any lifeline because it accepts ϵ\epsilon. Choice and scheduling operators are also handled in the same manner as for the termination predicate.

Lemma 5.5 (Evasion w.r.t. σd\sigma_{d}).

For any lLl\in L and i𝕀Ωi\in\mathbb{I}_{\Omega}, (i\scalerel×

×

b
l
)
(tσd(i),¬(t\scalerel×

×

bl
)
)
(i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l)\Leftrightarrow(\exists\leavevmode\nobreak\ t\in\sigma_{d}(i),\neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l))

Proof 5.6.

By induction on the term structure of interactions.

Let us remark that, for any i𝕀Ωi\in\mathbb{I}_{\Omega}, if ii\downarrow then lL\forall\leavevmode\nobreak\ l\in L, i\scalerel×

×

b
l
i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
. Indeed, ϵ\epsilon has no conflict w.r.t. any ll. However the opposite does not hold: it suffices to consider L={l1,l2}L=\{l_{1},l_{2}\} and i=alt(l1!m,l2!m)i=alt(l_{1}!m,l_{2}!m) and observe that lL\forall\leavevmode\nobreak\ l\in L, i\scalerel×

×

b
l
i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
holds while ii\downarrow does not.

Refer to caption\faTimesCircle\faTimesCircle\faCheckCircle altalt\faCheckCircle strictstrict\faTimesCirclel1!m1{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}\faCheckCirclel2?m1{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}\faTimesCircleseqseq\faCheckCirclestrictstrict\faCheckCirclel3!m2{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{3}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{2}}\faCheckCirclel1?m2{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{2}}\faCheckCircleloopXloop_{X}\faCheckCirclestrictstrict\faTimesCirclel1!m3{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{3}}\faCheckCirclel2?m3{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{3}}\faTimesCircle
Figure 3: Illustration of the evasion predicate (here w.r.t. lifeline l2l_{2})

The application of the evasion predicate (w.r.t. lifeline l2l_{2}) is illustrated on Fig.3. On the right is represented the syntaxic structure of an interaction ii, and, on the left, the corresponding drawing as a sequence diagram. On the syntax tree, the nodes are decorated with symbols \faCheckCircle to signify that the sub-interaction underneath that node evades l2l_{2} or \faTimesCircle to indicate that this is not the case (i.e. that it collides with l2l_{2}). Starting from the leaves we can decorate all nodes and conclude once the root is reached. By taking the right branch of the alternative and by choosing not to instantiate the loop, we can see that ii accepts some traces that have no conflict w.r.t. lifeline l2l_{2} (in our case, only the trace l3!m2.l1?m2l_{3}!m_{2}.l_{1}?m_{2}). As a result the interaction ii verifies i\scalerel×

×

b
l2
i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l_{2}
. On the diagram representation, evasion can be illustrated by drawing a line over the lifeline of interest. This line can be decomposed into several segments that correspond to specific areas of the diagram (operands) and that are colored either in green or in red. The coloration of the segment depends on whether the sub-interaction corresponding to the operand evades or collides with the lifeline of interest.

With evasion we can determine whether or not an action aa that is executable in i2i_{2} i.e. s.t. i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} is also executable in i=seq(i1,i2)i=seq(i_{1},i_{2}). However, this is not enough to define a rule seq(i1,i2)𝑎iseq(i_{1},i_{2})\xrightarrow{a}i^{\prime} which is compatible with the semantics σd\sigma_{d}. ii^{\prime} must specify continuations tt s.t. a.tσd(i)a.t\in\sigma_{d}(i). By definition of σd\sigma_{d}, continuation traces tt have to be build from traces t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2t_{2} such that ¬(t1\scalerel×

×

bθ(a)
)
\neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
and a.t2σd(i2)a.t_{2}\in\sigma_{d}(i_{2}). By defining i1i_{1}^{\prime} as the interaction which expresses exactly those traces t1t_{1} s.t. ¬(t1\scalerel×

×

bθ(a)
)
\neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
we may produce a rule seq(i1,i2)𝑎seq(i1,i2)seq(i_{1},i_{2})\xrightarrow{a}seq(i_{1}^{\prime},i_{2}^{\prime}) that is compatible with σd\sigma_{d}. The computation of i1i_{1}^{\prime} is ensured by a process that we call pruning.

Pruning is defined as an inductive relation \scalerel*
×
×
b
\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\longrightarrow
s.t. i\scalerel*
×
×
b
𝑙i
i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i^{\prime}
indicates that the pruning of i𝕀Ωi\in\mathbb{I}_{\Omega} w.r.t. lLl\in L yields i𝕀Ωi^{\prime}\in\mathbb{I}_{\Omega}. Pruning is defined so has to preserve "a maxima" the original semantics of ii so that σd(i)σd(i)\sigma_{d}(i^{\prime})\subseteq\sigma_{d}(i) is the maximum subset of σd(i)\sigma_{d}(i) that contains no trace conflicting with ll (see Lem.5.10).

Definition 5.7 (Pruning).

The pruning relation \scalerel*
×
×
b
𝕀Ω×L×𝕀Ω
\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\longrightarrow\subset\mathbb{I}_{\Omega}\times L\times\mathbb{I}_{\Omega}
is s.t. for any lLl\in L, any f{strict,seq,par}f\in\{strict,seq,par\} and any k{X,H,S,P}k\in\{X,H,S,P\}:

    \scalerel*
×
×
b
𝑙
\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}
    \scalerel*
×
×
b
𝑙
\varnothing\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}\varnothing

  θ(a)l\theta(a)\neq l\scalerel*
×
×
b
𝑙
\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}
        a\scalerel*
×
×
b
𝑙a
a\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}a

  i1\scalerel*
×
×
b
𝑙i1
i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}
  
       i2\scalerel*
×
×
b
𝑙i2
i_{2}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{2}^{\prime}
    f(i1,i2)\scalerel*
×
×
b
𝑙f(i1,i2)
f(i_{1},i_{2})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}f(i_{1}^{\prime},i_{2}^{\prime})

     i1\scalerel*
×
×
b
𝑙i1
i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}
  
       i2\scalerel*
×
×
b
𝑙i2
i_{2}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{2}^{\prime}
    alt(i1,i2)\scalerel*
×
×
b
𝑙alt(i1,i2)
alt(i_{1},i_{2})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}alt(i_{1}^{\prime},i_{2}^{\prime})

       i1\scalerel*
×
×
b
𝑙i1
i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}
  i2↓̸\scalerel×

×

b
l
i_{2}\not{\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}l
  alt(i1,i2)\scalerel*
×
×
b
𝑙i1
alt(i_{1},i_{2})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}

       i2\scalerel*
×
×
b
𝑙i2
i_{2}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{2}^{\prime}
  i1↓̸\scalerel×

×

b
l
i_{1}\not{\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}l
  alt(i1,i2)\scalerel*
×
×
b
𝑙i2
alt(i_{1},i_{2})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{2}^{\prime}

           i1\scalerel*
×
×
b
𝑙i1
i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}
    loopk(i1)\scalerel*
×
×
b
𝑙loopk(i1)
loop_{k}(i_{1})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}loop_{k}(i_{1}^{\prime})

              i1↓̸\scalerel×

×

b
l
i_{1}\not{\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}l
  loopk(i1)\scalerel*
×
×
b
𝑙
loop_{k}(i_{1})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}\varnothing

Let us immediately remark that evasion and pruning are intertwined notions. Indeed, as per Lem.5.8 evasion is equivalent to the existence and unicity of a pruned interaction. We could define pruning without evasion. However, so as to draw parallels w.r.t. the termination predicate and in order to separate concerns and ease the understanding of proofs we have defined both notions separately.

Lemma 5.8 (Conditional existence & unicity for pruning).

For any i𝕀Ωi\in\mathbb{I}_{\Omega} and any lLl\in L:

(i\scalerel×

×

b
l
)
(!i𝕀Ω s.t. i\scalerel*
×
×
b
𝑙i
)
(i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l)\Leftrightarrow(\exists!\leavevmode\nobreak\ i^{\prime}\in\mathbb{I}_{\Omega}\text{ s.t. }i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i^{\prime})
Proof 5.9.

Immediate, by induction on the term structure of interactions.

Let us comment on the rules defining the pruning relation. We have \scalerel*
×
×
b
𝑙
\varnothing\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}\varnothing
because the semantics of \varnothing being {ϵ}\{\epsilon\}, there are no conflicts w.r.t. ll. Any action a𝔸Ωa\in\mathbb{A}_{\Omega} is prunable iff θ(a)l\theta(a)\neq l. In such a case, aa needs not be eliminated and thus a\scalerel*
×
×
b
𝑙a
a\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}a
. For i=alt(i1,i2)i=alt(i_{1},i_{2}) to be prunable we must have either or both of i1\scalerel×

×

b
l
i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
or i2\scalerel×

×

b
l
i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
. If both branches evade ll they can be pruned and kept as alternatives in the new interaction term. If only a single one does, we only keep the pruned version of this single branch. For any scheduling constructor ff, if i=f(i1,i2)i=f(i_{1},i_{2}), in order to have i\scalerel×

×

b
l
i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
we must have both i1\scalerel×

×

b
l
i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
and i2\scalerel×

×

b
l
i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
. In that case the unique interaction ii^{\prime} such that i\scalerel*
×
×
b
𝑙i
i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i^{\prime}
is simply defined as the scheduling, using ff, of the pruned versions of i1i_{1} and i2i_{2}. Finally, for loops, i.e. i=loopk(i1)i=loop_{k}(i_{1}) with k{X,H,S,P}k\in\{X,H,S,P\}, we distinguish two cases: (a) if i1↓̸\scalerel×

×

b
l
i_{1}\not\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
then any execution of i1i_{1} will yield a trace conflicting ll. Therefore it is necessary to forbid repetition; (b) if i1\scalerel×

×

b
l
i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
then it is not necessary to forbid repetition, given that i1i_{1} can be pruned as i1\scalerel*
×
×
b
𝑙i1
i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}
with i1i_{1}^{\prime} not expressing traces conflicting ll. This being the modification which preserves a maximum amount of traces, we have loopk(i1)\scalerel*
×
×
b
𝑙loopk(i1)
loop_{k}(i_{1})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}loop_{k}(i_{1}^{\prime})
.

Refer to caption \pgfmathresultptaltalt\pgfmathresultptstrictstrict\pgfmathresultptl1!m1{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}\pgfmathresultptl2?m1{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}\pgfmathresultptseqseq\pgfmathresultptstrictstrict\pgfmathresultptl3!m2{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{3}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{2}}\pgfmathresultptl1?m2{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{2}}\pgfmathresultptloopXloop_{X}\pgfmathresultptstrictstrict\pgfmathresultptl1!m3{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{3}}\pgfmathresultptl2?m3{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{3}}\pgfmathresultpt\varnothing Refer to caption
before pruning pruning w.r.t l3{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{3}} after pruning
Figure 4: Illustration of pruning

We have seen that the interaction ii of Fig.3 satisfies i\scalerel×

×

b
l2
i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l_{2}
. Therefore Lem.5.8 implies the existence of a unique ii^{\prime} s.t. i\scalerel*
×
×
b
l2i
i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l_{2}}i^{\prime}
. Fig.4 illustrates the computation of ii^{\prime}. The blue lines represent the modifications in the syntax of ii that occur during its pruning into ii^{\prime}. On Fig.3 we decorated sub-interactions of ii with \faTimesCircle whenever they did not evade l2l_{2}. During pruning, those sub-interactions must be eliminated given that the resulting term must not express actions occurring on l2l_{2}. Hence, on Fig.4, we have crossed in blue the problematic sub-interactions. The root node is an altalt. Let us note i=alt(i1,i2)i=alt(i_{1},i_{2}). On Fig.3 we have seen that we have i1↓̸\scalerel×

×

b
l2
i_{1}\not{\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}l_{2}
and i2\scalerel×

×

b
l2
i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l_{2}
. Therefore we have i\scalerel*
×
×
b
l2i2
i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l_{2}}i_{2}^{\prime}
with i2i_{2}^{\prime} being such that i2\scalerel*
×
×
b
l2i2
i_{2}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l_{2}}i_{2}^{\prime}
. This selection of the right branch of the altalt is illustrated on Fig.4 by the curved arrow which "replaces" the altalt by the seqseq on its bottom right. There remains to determine i2i_{2}^{\prime} s.t. i2\scalerel*
×
×
b
l2i2
i_{2}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l_{2}}i_{2}^{\prime}
. At the root of i2i_{2} we have a seqseq. Let us note i2=seq(iA,iB)i_{2}=seq(i_{A},i_{B}). As per Fig.3 we have both iA\scalerel×

×

b
l2
i_{A}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l_{2}
and iB\scalerel×

×

b
l2
i_{B}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l_{2}
and therefore i2=seq(iA,iB)i_{2}^{\prime}=seq(i_{A}^{\prime},i_{B}^{\prime}) such that iA\scalerel*
×
×
b
l2iA
i_{A}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l_{2}}i_{A}^{\prime}
and iB\scalerel*
×
×
b
l2iB
i_{B}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l_{2}}i_{B}^{\prime}
. Underneath iAi_{A}, no actions occur on l2l_{2} and hence iA=iAi_{A}^{\prime}=i_{A}. At the root of iBi_{B} we have a loopXloop_{X}. Let us note iB=loopX(iC)i_{B}=loop_{X}(i_{C}). As per Fig.3 we have iC↓̸\scalerel×

×

b
l2
i_{C}\not{\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}l_{2}
and therefore iB=i_{B}^{\prime}=\varnothing which is illustrated on Fig.4 by the {\color[rgb]{0,0,1}\definecolor[named]{pgfstrokecolor}{rgb}{0,0,1}\leftarrow\varnothing} in blue, which "replaces" the loopXloop_{X} by \varnothing. Finally there remain i=seq(iA,)i^{\prime}=seq(i_{A},\varnothing), which is drawn as a SD on the right of Fig.4.

Lem.5.10 states that given i\scalerel*
×
×
b
𝑙i
i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i^{\prime}
, the pruned interaction ii^{\prime} exactly specifies all the executions of ii that do not involve ll.

Lemma 5.10 (Pruning w.r.t. σd\sigma_{d}).

For any lLl\in L and any ii and ii^{\prime} from 𝕀Ω\mathbb{I}_{\Omega}:

(i\scalerel*
×
×
b
𝑙i
)
(σd(i)={tσd(i)|¬(t\scalerel×

×

bl
)
}
)
(i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i^{\prime})\Rightarrow(\sigma_{d}(i^{\prime})=\{t\in\sigma_{d}(i)\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\})
Proof 5.11.

By induction on the term structure of interactions.

In the next section we make use of pruning so as to formally define an execution relation \rightarrow for our IL and we use it to formulate a structural operational semantics in the style of process algebra.

5.3 Execution relation & operational semantics

A structural operational semantics, presented in the style of Plotkin [17] allows determining accepted traces tσd(i1)t\in\sigma_{d}(i_{1}) such that t=a1..ant=a_{1}.\cdots.a_{n} through the assertion of a succession of predicates of the form ijajij+1i_{j}\xrightarrow{a_{j}}i_{j+1} representing the evolution of the system. By expressing action aja_{j}, the system goes from being modelled by iji_{j} to being modelled by ij+1i_{j+1}. We present this execution relation "\rightarrow" as an inductive predicate, in a similar fashion as the pruning relation "\scalerel*
×
×
b
\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\longrightarrow
".

Definition 5.12 (Execution relation).

The execution relation 𝕀Ω×𝔸Ω×𝕀Ω\rightarrow\subset\mathbb{I}_{\Omega}\times\mathbb{A}_{\Omega}\times\mathbb{I}_{\Omega} is s.t.:

    𝑎\xrightarrow{a}     a𝑎a\xrightarrow{a}\varnothing

       i1𝑎i1i_{1}\xrightarrow{a}i^{\prime}_{1}     alt(i1,i2)𝑎i1alt(i_{1},i_{2})\xrightarrow{a}i^{\prime}_{1}

       i2𝑎i2i_{2}\xrightarrow{a}i^{\prime}_{2}     alt(i1,i2)𝑎i2alt(i_{1},i_{2})\xrightarrow{a}i^{\prime}_{2}

            i1𝑎i1i_{1}\xrightarrow{a}i^{\prime}_{1}     par(i1,i2)𝑎par(i1,i2)par(i_{1},i_{2})\xrightarrow{a}par(i^{\prime}_{1},i_{2})

            i2𝑎i2i_{2}\xrightarrow{a}i^{\prime}_{2}     par(i1,i2)𝑎par(i1,i2)par(i_{1},i_{2})\xrightarrow{a}par(i_{1},i^{\prime}_{2})

               i1𝑎i1i_{1}\xrightarrow{a}i^{\prime}_{1}     strict(i1,i2)𝑎strict(i1,i2)strict(i_{1},i_{2})\xrightarrow{a}strict(i^{\prime}_{1},i_{2})

         i2𝑎i2i_{2}\xrightarrow{a}i^{\prime}_{2}   i1i_{1}\downarrow   strict(i1,i2)𝑎i2strict(i_{1},i_{2})\xrightarrow{a}i^{\prime}_{2}

            i1𝑎i1i_{1}\xrightarrow{a}i^{\prime}_{1}     seq(i1,i2)𝑎seq(i1,i2)seq(i_{1},i_{2})\xrightarrow{a}seq(i^{\prime}_{1},i_{2})

  i1\scalerel*
×
×
b
θ(a)i1
i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i_{1}^{\prime}
  
       i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime}
    seq(i1,i2)𝑎seq(i1,i2)seq(i_{1},i_{2})\xrightarrow{a}seq(i_{1}^{\prime},i_{2}^{\prime})

                  i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}     loopX(i1)𝑎strict(i1,loopX(i1))loop_{X}(i_{1})\xrightarrow{a}strict(i_{1}^{\prime},loop_{X}(i_{1}))

                 i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}     loopH(i1)𝑎seq(i1,loopH(i1))loop_{H}(i_{1})\xrightarrow{a}seq(i_{1}^{\prime},loop_{H}(i_{1}))

        i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}         loopS(i1)\scalerel*
×
×
b
θ(a)i
loop_{S}(i_{1})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i^{\prime}
    loopS(i1)𝑎seq(i,seq(i1,loopS(i1)))loop_{S}(i_{1})\xrightarrow{a}seq(i^{\prime},seq(i_{1}^{\prime},loop_{S}(i_{1})))

                i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}     loopP(i1)𝑎par(i1,loopP(i1))loop_{P}(i_{1})\xrightarrow{a}par(i_{1}^{\prime},loop_{P}(i_{1}))

The formulation of most of the rules is very similar to what can be found in process algebras. The notable differences mainly concern the rules handling weak sequencing and loops. In an interaction reduced to an action aa, aa may be executed with a𝑎a\xrightarrow{a}\varnothing so that what remains to be executed is the empty interaction \varnothing. If within i=alt(i1,i2)i=alt(i_{1},i_{2}), action aa can be executed in either i1i_{1} or i2i_{2} with either i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} or i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} then it may be executed in ii and the resulting interaction is either i1i_{1}^{\prime} or i2i_{2}^{\prime}. For i=par(i1,i2)i=par(i_{1},i_{2}), if we have either i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} or i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} then aa may be executed in ii and the resulting interaction naturally is either par(i1,i2)par(i_{1}^{\prime},i_{2}) or par(i1,i2)par(i_{1},i_{2}^{\prime}). Executing actions on the left of either a strictstrict or a seqseq follow the same rule as in the case of a parpar because no precedence relations are enforced on the left-hand side. However, it is only possible to execute an action aa on the right of i=strict(i1,i2)i=strict(i_{1},i_{2}) if i1i_{1} terminates. Indeed, in that case i1i_{1} may express the empty trace ϵ\epsilon as per Lem.5.2 and nothing prevents aa to be the first action to be executed. The resulting interaction is then i2i_{2}^{\prime} given that we force i1i_{1} to express ϵ\epsilon. Likewise, within i=seq(i1,i2)i=seq(i_{1},i_{2}) there is a condition for executing an action aa on the right. This condition is that i1\scalerel×

×

b
θ(a)
i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\theta(a)
, which, as per Lem.5.8 is implied by the condition i1\scalerel*
×
×
b
θ(a)i1
i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i_{1}^{\prime}
. Given i2i_{2}^{\prime} s.t. i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} we therefore have i𝑎seq(i1,i2)i\xrightarrow{a}seq(i_{1}^{\prime},i_{2}^{\prime}) given that we prune the left sub-interaction and execute the action on the right sub-interaction.

The rules for loopXloop_{X}, loopHloop_{H} and loopPloop_{P} reflect the definitions of the corresponding HF-closures which respectively are ;\leavevmode\nobreak\ {}^{;^{\Lsh}*}, ;\scalerel×

×

b
\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
and ||\leavevmode\nobreak\ {}^{||^{\Lsh}*}. Let us indeed consider (k,,f){(X,;,strict),(H,;\scalerel×

×

b
,seq)
,(P,||,par)}
(k,\diamond,f)\in\{(X,;,strict),(H,;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}},seq),(P,||,par)\}
. Whenever i𝑎ii\xrightarrow{a}i^{\prime} we have loopk(i)𝑎f(i,loopk(i))loop_{k}(i)\xrightarrow{a}f(i^{\prime},loop_{k}(i)). As a result, any tσd(f(i,loopk(i)))t\in\sigma_{d}(f(i^{\prime},loop_{k}(i))) is s.t. t{t1}σd(loopk(i))t\in\{t_{1}\}\diamond\sigma_{d}(loop_{k}(i)) for a certain t1σd(i)t_{1}\in\sigma_{d}(i^{\prime}). Given that a.t1σd(i)a.t_{1}\in\sigma_{d}(i), this corresponds to choosing action aa from the first iteration of the loop i.e. a.t{a.t1}σd(loopk(i))σd(i)σd(loopk(i))a.t\in\{a.t_{1}\}\diamond^{\Lsh}\sigma_{d}(loop_{k}(i))\subset\sigma_{d}(i)\diamond^{\Lsh}\sigma_{d}(loop_{k}(i)), which coincides with using the restricted operator \diamond^{\Lsh} as a scheduler. loopHloop_{H} is explicitly associated to ;\scalerel×

×

b
\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
and thus the formulation of its rule is self-evident. In the case of loopXloop_{X} and loopPloop_{P} it is the fact that the HF and K-closures of ; and |||| are equivalent (as per Lem.3.6) which enables their respective rules to be formulated in this manner.

The rule for loopSloop_{S} allows for the first action aa of a trace a.ta.t to be taken from a later iteration of the loop. Let us consider i=loopS(i1)i=loop_{S}(i_{1}) and a.tσd(i)a.t\in\sigma_{d}(i). The rule is formulated such that tσd(seq(i,seq(i1,i)))t\in\sigma_{d}(seq(i^{\prime},seq(i_{1}^{\prime},i))) with i\scalerel*
×
×
b
θ(a)i
i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i^{\prime}
and i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}. Indeed, action aa is expressed by sub-interaction i1i_{1} so there exists i1i_{1}^{\prime} s.t. i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}. Also, given that ii is a loop, it is always prunable (Lem.5.8) so there exists ii^{\prime} s.t. i\scalerel*
×
×
b
θ(a)i
i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i^{\prime}
. The fact that tσd(seq(i,seq(i1,i)))t\in\sigma_{d}(seq(i^{\prime},seq(i_{1}^{\prime},i))) translates into having tσd(i);\scalerel×

×

b
σd(i1);\scalerel×

×

b
σd(i)
t\in\sigma_{d}(i^{\prime});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i_{1}^{\prime});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)
. Then:

  • If aa is taken from the first iteration of the loop, then, given that ϵσd(i)\epsilon\in\sigma_{d}(i^{\prime}) (Lem.5.10) we have t{ϵ};\scalerel×

    ×

    b
    {t1};\scalerel×

    ×

    b
    σd(i)
    t\in\{\epsilon\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{1}^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)
    with t1t_{1}^{\prime} a continuation of the first iteration s.t. t1=a.t1σd(i1)t_{1}=a.t_{1}^{\prime}\in\sigma_{d}(i_{1}).

  • If aa is taken from the second iteration of the loop, let us consider t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) the first iteration and t2=a.t2σd(i1)t_{2}=a.t_{2}^{\prime}\in\sigma_{d}(i_{1}) the second one (from which aa is taken and hence t2σd(i1)t_{2}^{\prime}\in\sigma_{d}(i_{1}^{\prime})). We then have t{t1};\scalerel×

    ×

    b
    {t2};\scalerel×

    ×

    b
    σd(i)
    t\in\{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{2}^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)
    and the condition ¬(t1\scalerel×

    ×

    bθ(a)
    )
    \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
    . This condition implies, as per Lem.5.10 that {t1}σd(i)\{t_{1}\}\subset\sigma_{d}(i^{\prime}).

  • The reasoning is the same when aa is taken from later instances. Let us indeed consider a.t{t1};\scalerel×

    ×

    b
    ;\scalerel×

    ×

    b
    {tn1};\scalerel×

    ×

    b
    {tn};\scalerel×

    ×

    b
    σd(i)
    a.t\in\{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{n-1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{n}^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)
    . We then have {t1};\scalerel×

    ×

    b
    ;\scalerel×

    ×

    b
    {tn1}σd(i)
    \{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{n-1}\}\subset\sigma_{d}(i^{\prime})
    because ii^{\prime} is either a loop (and therefore absorbing) or the empty interaction (in that degenerate case all the tjt_{j} are ϵ\epsilon) and hence the rules indeed allows aa to be taken from any iteration.

Definition 5.13 (Operational semantics).

σo:𝕀Ω𝒫(𝕋Ω)\sigma_{o}:\mathbb{I}_{\Omega}\rightarrow\mathcal{P}(\mathbb{T}_{\Omega}) is s.t.:

      ii\downarrow     ϵσo(i)\epsilon\in\sigma_{o}(i)

  tσo(i)t\in\sigma_{o}(i^{\prime})         i𝑎ii\xrightarrow{a}i^{\prime}          a.tσo(i)a.t\in\sigma_{o}(i)

This execution relation then constitutes the small steps of the operational semantics σo\sigma_{o} that we define in Def.5.13.

5.4 Illustrative example

seq(i,i)seq(i,i) Refer to captionl1!m1\xrightarrow{{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}}Refer to captionl2!m2\xrightarrow{{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{2}}}Refer to captionl2?m1\xrightarrow{{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}}
loopH(i)loop_{H}(i) Refer to captionl1!m1\xrightarrow{{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}}Refer to caption
loopS(i)loop_{S}(i) Refer to captionl1!m1\xrightarrow{{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{1}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}}Refer to captionl2!m2\xrightarrow{{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}!{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{2}}}Refer to captionl2?m1\xrightarrow{{\color[rgb]{0.0859375,0.0859375,0.51171875}\definecolor[named]{pgfstrokecolor}{rgb}{0.0859375,0.0859375,0.51171875}l_{2}}?{\color[rgb]{0.05859375,0.3359375,0.05859375}\definecolor[named]{pgfstrokecolor}{rgb}{0.05859375,0.3359375,0.05859375}m_{1}}}Refer to caption
Figure 5: Illustration of the operational semantics & of the counter-example from Sec.3

On Fig.5 we illustrate both the operational semantics and the counter-example from Sec.3 showcasing the difference between loopHloop_{H} and loopSloop_{S}. We consider repetitions of i=alt(strict(l1!m1,l2?m1),l2!m2)i=alt(strict(l_{1}!m_{1},l_{2}?m_{1}),l_{2}!m_{2}). On the first row we illustrate the construction of a trace accepted by seq(i,i)seq(i,i) where ii is repeated twice using weak sequencing. Here, the second occurrence of action l1!m1l_{1}!m_{1} (at the bottom) is immediately executable because, with pruning, we can force the choice of the right branch of the first alternative which evades l1l_{1}. From that point on the execution of the remainder is straightforward, and, in total, we can conclude that the trace t=l1!m1.l2!m2.l2?m1t=l_{1}!m_{1}.l_{2}!m_{2}.l_{2}?m_{1} is expressed by seq(i,i)seq(i,i). Now, if we were to try to reproduce this behavior using loopHloop_{H} to repeat ii (i.e. with loopH(i)loop_{H}(i)) we would get what is illustrated on the second row of Fig.5. We can manage to execute the first action l1!m1l_{1}!m_{1} but from that point, the second action of tt which is l2!m2l_{2}!m_{2} is not executable. Indeed, the presence of l2?m1l_{2}?m_{1} at the top of the diagram prevents it to be executed. As we have indicated earlier (and by definition) loopHloop_{H} is associated to the weak HF-closure ;\scalerel×

×

b
\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
and not to the K-closure ;\scalerel×

×

b
\leavevmode\nobreak\ {}^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
. It is therefore expected that tt could not be accepted by loopH(i)loop_{H}(i) in this example. However, as illustrated on the third row of Fig.5, loopS(i)loop_{S}(i) can recognize tt. The addition of the pruned version of the loop allows one to delay the determination of the instance as part of which the initial l1!m1l_{1}!m_{1} is executed. In this case, the pruned loop is instanciated once, which means that l1!m1l_{1}!m_{1} was part of the second instance.

6 Proving the equivalence of both semantics

In the following we formally prove the equivalence of σo\sigma_{o} and σd\sigma_{d}. Details of the proofs are available in the appendix and a formalisation using Coq is available in [11].

Let us at first prove that for any interaction ii we have σo(i)σd(i)\sigma_{o}(i)\subset\sigma_{d}(i). The first step to do so is to characterize the execution relation "\rightarrow" w.r.t. σd\sigma_{d}, which we do in Lem.6.1.

Lemma 6.1 (Property 1 of \rightarrow w.r.t. σd\sigma_{d}).

For any a𝔸Ωa\in\mathbb{A}_{\Omega}, t𝕋Ωt\in\mathbb{T}_{\Omega} and ii and ii^{\prime} from 𝕀Ω\mathbb{I}_{\Omega}:

((i𝑎i)(tσd(i)))(a.tσd(i))\left(\begin{array}[]{c}(i\xrightarrow{a}i^{\prime})\wedge(t\in\sigma_{d}(i^{\prime}))\end{array}\right)\Rightarrow(a.t\in\sigma_{d}(i))
Proof 6.2.

By induction on the 13 cases that makes the hypothesis i𝑎ii\xrightarrow{a}i^{\prime} possible.

We then remark that Lem.6.1 and Lem.5.2 state that the σd\sigma_{d} semantics accepts the same two construction rules (that for the empty trace ϵ\epsilon and that for non empty traces of the form a.ta.t) as those that define σo\sigma_{o} inductively. As a result any trace that might be accepted according to σo\sigma_{o} must also be accepted according to σd\sigma_{d}. This implies the inclusion from Th.6.3.

Theorem 6.3 (Inclusion of σo\sigma_{o} in σd\sigma_{d}).

For any i𝕀Ωi\in\mathbb{I}_{\Omega} we have σo(i)σd(i)\sigma_{o}(i)\subset\sigma_{d}(i)

Proof 6.4.

By induction on a member trace tt.

Let us now prove the reciprocate, i.e. that for any interaction ii, σd(i)σo(i)\sigma_{d}(i)\subset\sigma_{o}(i). As in the previous case, we provide, with Lem.6.5, a characterization of "\rightarrow" w.r.t. σd\sigma_{d}. Lem.6.5 is, in a certain manner, the reciprocate of Lem.6.1.

Lemma 6.5 (Property 2 of \rightarrow w.r.t. σd\sigma_{d}).

For any a𝔸Ωa\in\mathbb{A}_{\Omega}, t𝕋Ωt\in\mathbb{T}_{\Omega} and i𝕀Ωi\in\mathbb{I}_{\Omega}:

(a.tσd(i))(i𝕀Ω,(i𝑎i)(tσd(i)))(a.t\in\sigma_{d}(i))\Rightarrow\left(\exists\leavevmode\nobreak\ i^{\prime}\in\mathbb{I}_{\Omega},\leavevmode\nobreak\ \begin{array}[]{c}(i\xrightarrow{a}i^{\prime})\wedge(t\in\sigma_{d}(i^{\prime}))\end{array}\right)
Proof 6.6.

By induction on the term structure of interactions.

Thanks to Lem.6.5 and the characterization from Lem.5.2 we conclude with Th.6.7.

Theorem 6.7 (Inclusion of σd\sigma_{d} in σo\sigma_{o}).

For any i𝕀Ωi\in\mathbb{I}_{\Omega} we have σd(i)σo(i)\sigma_{d}(i)\subset\sigma_{o}(i)

Proof 6.8.

By induction on a member trace tt.

We have therefore proven both inclusion and can conclude that the operational semantics σo\sigma_{o} is indeed equivalent to the denotational-style semantics σd\sigma_{d}.

7 Related works

The main inspiration for the syntax & denotational semantics of our IL is [7]. In [7], a semantics for interactions is formulated using operators on sets of traces. However, loops are not handled. In [14], an operational semantics for MSC is presented. Similarities between [14] and our work notably include the use of pruning which, in [14], relates to a "permission relation". However we have some major distinctions concerning which constructors are defined and how they are handled by rules of the semantics. In [14] loops are not handled and there is no strictstrict constructor. Indeed, causal relations between actions occurring on different lifelines (e.g. emission-reception) are handled by maps that are updated during execution. In [15] a survey of formal semantics associated to UML-SDs is proposed. It is notable that UML-SDs are described semi-formally in the norm [16]. This allows for a rich language with operators such as assertassert or negatenegate [5] which are not covered in our IL. However a full formalisation proves difficult, as explained in [15, 5]. As mentioned in the introduction, most approaches rely on translations towards other formalisms [3] or consist in denotational semantics [19] that are most often based on partial order sets. The extent to which UML-SDs are formalised may vary [15]; some works formalize loops [10], others do not [7], and some only allow finitely many iterations [19]. In all cases where there are loops, only one loop operator is proposed and may correspond to either loopHloop_{H} or loopSloop_{S}.

Earlier works of ours [13, 12] focused on the application of the operational semantics for formal verification. In particular we were interested in the static analysis of traces and multi-traces (sets of locally defined traces) against interaction specifications (the membership problem). In those works we have used an "algorithmicized" version of the operational semantics. The inductive predicates for \downarrow, \scalerel×

×

b
\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
and the \scalerel*
×
×
b
\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\longrightarrow
and \rightarrow relations were presented in functional style and we separated concerns between the determination of which actions are immediately executable (uniquely identified by their positions) and the execution of said actions. Novel contributions in this paper w.r.t. [13, 12] consist in the distinction of loopSloop_{S} & loopHloop_{H}, the formulation of the operational semantics in the style of process algebras and the proof of equivalence w.r.t. a denotational semantics (a Coq proof is available in [11]).

8 Conclusion & further work

In this paper we defined an IL for specifying the behavior of distributed and concurrent systems. This language includes weak and strict sequencing, parallel & alternative composition as well as four distinct loop operators to specify different kinds of repetition. We formulate the semantics of this IL: (1) in denotational-style, making use of composition & algebraic operators and (2) in operational-style by reconstructing accepted traces via the succession of atomic executions. The equivalence of both formulations is proven (Coq proof in [11]). As demonstrated in [13, 12], the operational semantics can be further exploited in formal verification techniques such as multi-trace analysis. Other techniques may be explored in further work, such as online testing, monitoring or test generation. In addition, we may also investigate enriching our language with some form of value passing i.e. instead of exchanging abstract messages mMm\in M we may interpret them concretely or symbolically with typed data. This last point is notably addressed in some process calculi frameworks [6].

References

  • [1] S. Akshay, Benedikt Bollig, Paul Gastin, Madhavan Mukund, and K. Narayan Kumar. Distributed timed automata with independently evolving clocks. In Franck van Breugel and Marsha Chechik, editors, 19th Conf. on Concurrency Theory (CONCUR), pages 82–97, Berlin, Heidelberg, 2008. Springer Berlin Heidelberg.
  • [2] J.C.M. Baeten. Process algebra with explicit termination. Computing science reports. Technische Universiteit Eindhoven, 2000.
  • [3] Christoph Eichner, Hans Fleischhack, Roland Meyer, Ulrik Schrimpf, and Christian Stehno. Compositional semantics for uml 2.0 sequence diagrams using petri nets. In Andreas Prinz, Rick Reed, and Jeanne Reed, editors, SDL 2005: Model Driven, pages 133–148, Berlin, Heidelberg, 2005. Springer Berlin Heidelberg.
  • [4] Serge Haddad and Igor Khmelnitsky. Dynamic recursive petri nets. In Ryszard Janicki, Natalia Sidorova, and Thomas Chatain, editors, Application and Theory of Petri Nets and Concurrency, pages 345–366, Cham, 2020. Springer International Publishing.
  • [5] David Harel and Shahar Maoz. Assert and negate revisited: Modal semantics for UML sequence diagrams. Software and Systems Modeling, 7(2):237–252, 2008.
  • [6] Anna Ingólfsdóttir and Huimin Lin. A symbolic approach to value-passing processes. In J.A. Bergstra, A. Ponse, and S.A. Smolka, editors, Handbook of Process Algebra, pages 427–478. Elsevier Science, Amsterdam, 2001. doi:10.1016/B978-044482830-9/50025-4.
  • [7] Alexander Knapp and Till Mossakowski. UML Interactions Meet State Machines - An Institutional Approach. In 7th Conf. on Algebra and Coalgebra in Computer Science (CALCO), volume 72 of Leibniz International Proceedings in Informatics (LIPIcs), 2017.
  • [8] Alexander Knapp and Jochen Wuttke. Model checking of uml 2.0 interactions. In Thomas Kühne, editor, Models in Software Engineering, pages 42–51, Berlin, Heidelberg, 2007. Springer Berlin Heidelberg.
  • [9] Kamal Lodaya and Pascal Weil. Series-parallel languages and the bounded-width property. Theor. Comput. Sci., 237(1–2):347–380, April 2000. doi:10.1016/S0304-3975(00)00031-1.
  • [10] Lunjin Lu and Dae-Kyoo Kim. Required behavior of sequence diagrams: Semantics and conformance. ACM Trans. Softw. Eng. Methodol., 23(2), April 2014. doi:10.1145/2523108.
  • [11] Erwan Mahe. Coq proof for the equivalence of the semantics. erwanm974.github.io/coq_hibou_label_semantics_equivalence/. Accessed: 2021-04-29.
  • [12] Erwan Mahe, Boutheina Bannour, Christophe Gaston, Arnault Lapitre, and Pascale Le Gall. A small-step approach to multi-trace checking against interactions. In Proceedings of the 36th Annual ACM Symposium on Applied Computing, SAC ’21, page 1815–1822, New York, NY, USA, 2021. Association for Computing Machinery. doi:10.1145/3412841.3442054.
  • [13] Erwan Mahe, Christophe Gaston, and Pascale Le Gall. Revisiting semantics of interactions for trace validity analysis. In Heike Wehrheim and Jordi Cabot, editors, Fundamental Approaches to Software Engineering, pages 482–501, Cham, 2020. Springer International Publishing.
  • [14] Sjouke Mauw and Michel Adriaan Reniers. Operational semantics for msc’96. Computer Networks, 31(17):1785–1799, 1999. doi:10.1016/S1389-1286(99)00060-2.
  • [15] Zoltán Micskei and Hélène Waeselynck. The many meanings of uml 2 sequence diagrams: a survey. Software & Systems Modeling, 10(4):489–514, 2011.
  • [16] OMG. Unified Modeling Language v2.5.1. omg.org/spec/UML/2.5.1/PDF, 12 2017.
  • [17] Gordon Plotkin. A structural approach to operational semantics. The Journal of Logic and Algebraic Programming, 60-61:17–139, 07 2004. doi:10.1016/j.jlap.2004.05.001.
  • [18] Arend Rensink and Heike Wehrheim. Weak sequential composition in process algebras. In Bengt Jonsson and Joachim Parrow, editors, 5th Conf. on Concurrency Theory (CONCUR), Lecture Notes in Computer Science, pages 226–241. Springer, 1994. doi:10.1007/BFb0015012.
  • [19] Harald Störrle. Semantics of interactions in uml 2.0. In IEEE Symposium on Human Centric Computing Languages and Environments, 2003. Proceedings. 2003, pages 129–136, 10 2003. doi:10.1109/HCC.2003.1260216.

Appendix A Proofs of section 3

Lemma (Lem.3.4).

For any {;,||}\diamond\in\{;,\leavevmode\nobreak\ ||\}, T𝒫(𝕋Ω)T\in\mathcal{P}(\mathbb{T}_{\Omega}), tt in 𝕋Ω\mathbb{T}_{\Omega} and a𝔸Ωa\in\mathbb{A}_{\Omega} we have:

(a.tT)(t𝕋Ω s.t. {(a.tT)(t({t}T)))(a.t\in T^{\diamond*})\Rightarrow\left(\exists\leavevmode\nobreak\ t^{\prime}\in\mathbb{T}_{\Omega}\text{ s.t. }\left\{\begin{array}[]{l}(a.t^{\prime}\in T)\\ \wedge\leavevmode\nobreak\ (t\in(\{t^{\prime}\}\diamond T^{\diamond*}))\end{array}\right.\right)
Proof A.1.

By definition of the K-closure, a.tTa.t\in T^{\diamond*} implies the existence of j0j\geq 0 s.t. a.tTja.t\in T^{\diamond j}. We can then reason by induction on the power jj:

  • we cannot have j=0j=0 because T0={ϵ}T^{\diamond 0}=\{\epsilon\}

  • if j=1j=1 then a.tT1=Ta.t\in T^{\diamond 1}=T and t{t}{ϵ}{t}Tt\in\{t\}\diamond\{\epsilon\}\subset\{t\}\diamond T^{\diamond*} therefore the property holds

  • if j>1j>1 the fact that a.tTj=TT(j1)a.t\in T^{\diamond j}=T\diamond T^{\diamond(j-1)} implies the existence of t′′Tt^{\prime\prime}\in T s.t. a.t{t′′}T(j1)a.t\in\{t^{\prime\prime}\}\diamond T^{\diamond(j-1)} then:

    • if =;\diamond=; this implies that:

      • *

        either t′′t^{\prime\prime} is of the form a.ta.t^{\prime} and t{t};T;(j1)t\in\{t^{\prime}\};T^{;(j-1)} and therefore t{t};T;t\in\{t^{\prime}\};T^{;*}

      • *

        or t′′=ϵt^{\prime\prime}=\epsilon and a.tT;(j1)a.t\in T^{;(j-1)} and we can use the induction hypothesis to conclude

    • if =||\diamond=|| this implies that:

      • *

        either t′′t^{\prime\prime} is of the form a.ta.t^{\prime} and t{t}||T||(j1)t\in\{t^{\prime}\}||T^{||(j-1)} and therefore t{t}||T||t\in\{t^{\prime}\}||T^{||*}

      • *

        or there exists a certain t′′′t^{\prime\prime\prime} s.t. we have a.t′′′T||(j1)a.t^{\prime\prime\prime}\in T^{||(j-1)} and t{t′′}||{t′′′}t\in\{t^{\prime\prime}\}||\{t^{\prime\prime\prime}\}. Let us then remark that given that we have a.t′′′T||(j1)a.t^{\prime\prime\prime}\in T^{||(j-1)} we can apply the induction hypothesis to reveal tt^{\prime} such that a.tTa.t^{\prime}\in T and t′′′{t}||T||t^{\prime\prime\prime}\in\{t^{\prime}\}||T^{||*}. We can then use the associativity and commutativity of |||| as follows:

        t{t′′}||({t}||T||)t{t′′}||(T||||{t}) commutativityt({t′′}||T||)||{t} associativitytT||||{t} property of Kleene closuret{t}||T|| commutativity\begin{array}[]{lclr}t\in\{t^{\prime\prime}\}||(\{t^{\prime}\}||T^{||*})&\Rightarrow&t\in\{t^{\prime\prime}\}||(T^{||*}||\{t^{\prime}\})&\text{ commutativity}\\ &\Rightarrow&t\in(\{t^{\prime\prime}\}||T^{||*})||\{t^{\prime}\}&\text{ associativity}\\ &\Rightarrow&t\in T^{||*}||\{t^{\prime}\}&\text{ property of Kleene closure}\\ &\Rightarrow&t\in\{t^{\prime}\}||T^{||*}&\text{ commutativity}\end{array}
Lemma (Lem.3.6).

For any set of traces TT:

T;=T; and T||=T||\begin{array}[]{ccc}T^{;^{\Lsh}*}=T^{;*}&\leavevmode\nobreak\ \leavevmode\nobreak\ \text{ and }\nobreak\leavevmode\nobreak\leavevmode&T^{||^{\Lsh}*}=T^{||*}\end{array}
Proof A.2.

Let us consider {;,||}\diamond\in\{;,\leavevmode\nobreak\ ||\}. By definition, we already have TTT^{\diamond^{\Lsh}*}\subset T^{\diamond*}. To prove the other inclusion let us reason by induction on a member trace:

  • by definition ϵT\epsilon\in T^{\diamond^{\Lsh}*} and ϵT\epsilon\in T^{\diamond*}

  • if the trace is of the form a.ta.t then if a.tTa.t\in T^{\diamond*}, then, as per Lem.3.4 there exists a trace tt^{\prime} such that a.tTa.t^{\prime}\in T and t{t}Tt\in\{t^{\prime}\}\diamond T^{\diamond*}. This in turn implies that:

    • given that action aa is taken from a.ta.t^{\prime}, we have a.t{a.t}Ta.t\in\{a.t^{\prime}\}\diamond^{\Lsh}T^{\diamond*}

    • and there exists t′′Tt^{\prime\prime}\in T^{\diamond*} such that t{t}{t′′}t\in\{t^{\prime}\}\diamond\{t^{\prime\prime}\}. Given that t′′t^{\prime\prime} is strictly smaller than a.ta.t, we can apply the induction hypothesis to obtain that t′′Tt^{\prime\prime}\in T^{\diamond^{\Lsh}*}.

    Therefore we have that a.t{a.t}Ta.t\in\{a.t^{\prime}\}\diamond^{\Lsh}T^{\diamond^{\Lsh}*}, and hence a.tTa.t\in T^{\diamond^{\Lsh}*}

Appendix B Proofs of section 5

Lemma (Lem.5.2).

For any i𝕀Ωi\in\mathbb{I}_{\Omega} we have (i)(ϵσd(i))(i\downarrow)\Leftrightarrow(\epsilon\in\sigma_{d}(i))

Proof B.1.

Let us reason by induction on the term structure of ii.

  • If i=i=\varnothing the empty interaction, then we have both \varnothing\downarrow and ϵσd()\epsilon\in\sigma_{d}(\varnothing).

  • If i𝔸Ωi\in\mathbb{A}_{\Omega}, we have neither ii\downarrow nor ϵσd(i)\epsilon\in\sigma_{d}(i).

  • Let us now suppose that ii is of the form strict(i1,i2)strict(i_{1},i_{2}), with i1i_{1} and i2i_{2} two sub-interactions that satisfy the induction hypotheses (i1)(ϵσd(i1))(i_{1}\downarrow)\Leftrightarrow(\epsilon\in\sigma_{d}(i_{1})) and (i2)(ϵσd(i2))(i_{2}\downarrow)\Leftrightarrow(\epsilon\in\sigma_{d}(i_{2})).

    • \Leftarrow

      Let us suppose that ϵσd(i)\epsilon\in\sigma_{d}(i). By definition of σd\sigma_{d} for the strictstrict constructor, this implies the existence of t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) such that ϵ(t1;t2)\epsilon\in(t_{1};t_{2}). This trivially implies that t1=ϵt_{1}=\epsilon and t2=ϵt_{2}=\epsilon. We can therefore apply the induction hypotheses, to obtain that i1i_{1}\downarrow and i2i_{2}\downarrow. This in turn means that strict(i1,i2)strict(i_{1},i_{2})\downarrow.

    • \Rightarrow

      Reciprocally, if strict(i1,i2)strict(i_{1},i_{2})\downarrow, this means that both i1i_{1}\downarrow and i2i_{2}\downarrow. As per the induction hypotheses, this means that ϵσd(i1)\epsilon\in\sigma_{d}(i_{1}) and ϵσd(i2)\epsilon\in\sigma_{d}(i_{2}). Therefore ϵσd(i)\epsilon\in\sigma_{d}(i).

  • For interactions of the form par(i1,i2)par(i_{1},i_{2}) and seq(i1,i2)seq(i_{1},i_{2}), the reasoning is the same as for the previous case.

  • If ii is of the form alt(i1,i2)alt(i_{1},i_{2}):

    • \Leftarrow

      If ϵσd(i)\epsilon\in\sigma_{d}(i) this means that either ϵσd(i1)\epsilon\in\sigma_{d}(i_{1}) or ϵσd(i2)\epsilon\in\sigma_{d}(i_{2}) or both. Let us suppose that it is in σd(i1)\sigma_{d}(i_{1}) (the other cases can be treated similarly). As per the induction hypothesis, we have i1i_{1}\downarrow which implies that alt(i1,i2)alt(i_{1},i_{2})\downarrow.

    • \Rightarrow

      Reciprocally, if alt(i1,i2)alt(i_{1},i_{2})\downarrow, then either i1i_{1}\downarrow or i2i_{2}\downarrow (or both). Let us suppose we have i1i_{1}\downarrow. The induction hypothesis implies that ϵσd(i1)\epsilon\in\sigma_{d}(i_{1}) and hence ϵσd(i)\epsilon\in\sigma_{d}(i).

  • If i=loopk(i1)i=loop_{k}(i_{1}), with k{X,H,S,P}k\in\{X,H,S,P\} we always have ii\downarrow and ϵσd(i)\epsilon\in\sigma_{d}(i).

Lemma (Lem.5.5).

For any lLl\in L and i𝕀Ωi\in\mathbb{I}_{\Omega}, (i\scalerel×

×

b
l
)
(tσd(i),¬(t\scalerel×

×

bl
)
)
(i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l)\Leftrightarrow(\exists\leavevmode\nobreak\ t\in\sigma_{d}(i),\neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l))

Proof B.2.

Given lLl\in L, let us reason by induction on the term structure of ii.

  • If i=i=\varnothing, then we have \scalerel×

    ×

    b
    l
    \varnothing\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
    and ϵσd()\epsilon\in\sigma_{d}(\varnothing) satisfies ¬(ϵ\scalerel×

    ×

    bl
    )
    \neg(\epsilon\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
    .

  • If i=a𝔸Ωi=a\in\mathbb{A}_{\Omega}, we have:

    • a\scalerel×

      ×

      b
      l
      a\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      iff θ(a)l\theta(a)\neq l

    • and σd(i)={a}\sigma_{d}(i)=\{a\} with trace aa verifying ¬(a\scalerel×

      ×

      bl
      )
      \neg(a\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      iff θ(a)l\theta(a)\neq l

    The two conditions are therefore equivalent.

  • Let us now suppose that ii is of the form strict(i1,i2)strict(i_{1},i_{2}), with i1i_{1} and i2i_{2} two sub-interactions that satisfy the induction hypotheses (we use the distributivity of \scalerel×

    ×

    b
    \scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}
    over ;):

    • \Rightarrow

      If i\scalerel×

      ×

      b
      l
      i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      then both i1\scalerel×

      ×

      b
      l
      i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      and i2\scalerel×

      ×

      b
      l
      i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      . We can therefore apply the induction hypotheses, which lets us consider two traces t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) such that ¬(t1\scalerel×

      ×

      bl
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      and ¬(t2\scalerel×

      ×

      bl
      )
      \neg(t_{2}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      . By definition of σd\sigma_{d}, we have (t1;t2)σd(i)(t_{1};t2)\subset\sigma_{d}(i). This implies that t(t1;t2)\exists\leavevmode\nobreak\ t\in(t_{1};t2) s.t. ¬(t\scalerel×

      ×

      bl
      )
      \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      and this trace is in σd(i)\sigma_{d}(i).

    • \Leftarrow

      Reciprocally, if tσd(strict(i1,i2))\exists\leavevmode\nobreak\ t\in\sigma_{d}(strict(i_{1},i_{2})) s.t. ¬(t\scalerel×

      ×

      bl
      )
      \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      , then, by definition of σd\sigma_{d}, this means that there exist two traces t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) s.t. t(t1;t2)t\in(t_{1};t_{2}). Then, we have ¬(t1\scalerel×

      ×

      bl
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      and ¬(t2\scalerel×

      ×

      bl
      )
      \neg(t_{2}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      . We can therefore apply the induction hypothesis which implies that i1\scalerel×

      ×

      b
      l
      i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      and i2\scalerel×

      ×

      b
      l
      i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      , which, per the definition of \scalerel×

      ×

      b
      \downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
      , implies that i\scalerel×

      ×

      b
      l
      i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      .

  • For interactions of the form par(i1,i2)par(i_{1},i_{2}) and seq(i1,i2)seq(i_{1},i_{2}), the reasoning is the same as for the previous case except that we reason on (respectively) the operators |||| and ;\scalerel×

    ×

    b
    ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
    over both of which the conflict \scalerel×

    ×

    b
    \scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}
    is also distributive.

  • If i=alt(i1,i2)i=alt(i_{1},i_{2}):

    • \Rightarrow

      If i\scalerel×

      ×

      b
      l
      i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      then either or both i1\scalerel×

      ×

      b
      l
      i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      and i2\scalerel×

      ×

      b
      l
      i_{2}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      . Let us suppose we have i1\scalerel×

      ×

      b
      l
      i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      (the other cases are similar). By the induction hypothesis, we have t1σd(i1)\exists\leavevmode\nobreak\ t_{1}\in\sigma_{d}(i_{1}) s.t. ¬(t1\scalerel×

      ×

      bl
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      . We then simply observe that σd(i1)σd(i)\sigma_{d}(i_{1})\subset\sigma_{d}(i).

    • \Leftarrow

      Reciprocally, if tσd(alt(i1,i2))\exists\leavevmode\nobreak\ t\in\sigma_{d}(alt(i_{1},i_{2})) s.t. ¬(t\scalerel×

      ×

      bl
      )
      \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      , this means that this trace tt must be found in either σd(i1)\sigma_{d}(i_{1}) or σd(i2)\sigma_{d}(i_{2}). Let us suppose the first case (the other is similar). We can therefore apply the induction hypothesis which implies that i1\scalerel×

      ×

      b
      l
      i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      . Then, by the definition of \scalerel×

      ×

      b
      \downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
      , this implies that i\scalerel×

      ×

      b
      l
      i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      .

  • Let us finally consider the case where ii is of the form loopk(i1)loop_{k}(i_{1}), with k{X,H,S,P}k\in\{X,H,S,P\}. By definition, we always have i\scalerel×

    ×

    b
    l
    i\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
    and the empty trace ϵσd(i)\epsilon\in\sigma_{d}(i) verifies ¬(ϵ\scalerel×

    ×

    bl
    )
    \neg(\epsilon\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
    .

Lemma (Lem.5.10).

For any lLl\in L and any ii and ii^{\prime} from 𝕀Ω\mathbb{I}_{\Omega}:

(i\scalerel*
×
×
b
𝑙i
)
(σd(i)={tσd(i)|¬(t\scalerel×

×

bl
)
}
)
(i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i^{\prime})\Rightarrow(\sigma_{d}(i^{\prime})=\{t\in\sigma_{d}(i)\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\})
Proof B.3.

Given lLl\in L, let us reason by induction on the term structure of ii.

  • If i=i=\varnothing then \scalerel*
    ×
    ×
    b
    𝑙
    \varnothing\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}\varnothing
    and σd()={ϵ}\sigma_{d}(\varnothing)=\{\epsilon\}. ϵ\epsilon having no conflict w.r.t. ll, the property holds.

  • If i=a𝔸Ωi=a\in\mathbb{A}_{\Omega}, the precondition a\scalerel×

    ×

    b
    l
    a\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
    implies that θ(i)l\theta(i)\neq l. Also, we have a\scalerel*
    ×
    ×
    b
    𝑙a
    a\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}a
    and σd(a)={a}\sigma_{d}(a)=\{a\} has a single trace with no conflict w.r.t. ll. Hence the property holds.

  • Let us now suppose that ii is of the form strict(i1,i2)strict(i_{1},i_{2}), with i1i_{1} and i2i_{2} two sub-interactions that satisfy induction hypotheses i.e. such that, given i1\scalerel*
    ×
    ×
    b
    𝑙i1
    i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}
    and i2\scalerel*
    ×
    ×
    b
    𝑙i2
    i_{2}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{2}^{\prime}
    we have σd(i1)={t1σd(i1)|¬(t1\scalerel×

    ×

    bl
    )
    }
    \sigma_{d}(i_{1}^{\prime})=\{t_{1}\in\sigma_{d}(i_{1})\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\}
    and σd(i2)={t2σd(i2)|¬(t2\scalerel×

    ×

    bl
    )
    }
    \sigma_{d}(i_{2}^{\prime})=\{t_{2}\in\sigma_{d}(i_{2})\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t_{2}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\}
    . Also, by definition of pruning, we have i\scalerel*
    ×
    ×
    b
    𝑙strict(i1,i2)
    i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}strict(i_{1}^{\prime},i_{2}^{\prime})
    and let us denote it by i=strict(i1,i2)i^{\prime}=strict(i_{1}^{\prime},i_{2}^{\prime}) for short.

    • \subset

      If tσd(i)t\in\sigma_{d}(i^{\prime}) then there exist t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}^{\prime}) such that t(t1;t2)t\in(t_{1};t_{2}). By the induction hypothesis, we have t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and ¬(t1\scalerel×

      ×

      b
      )
      l
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b})l
      and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) and ¬(t2\scalerel×

      ×

      b
      )
      l
      \neg(t_{2}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b})l
      . Therefore tσd(i1);σd(i2)=σd(i)t\in\sigma_{d}(i_{1});\sigma_{d}(i_{2})=\sigma_{d}(i), and ¬(t\scalerel×

      ×

      bl
      )
      \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      .

    • \supset

      If tσd(i)t\in\sigma_{d}(i) is s.t. ¬(t\scalerel×

      ×

      bl
      )
      \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      then this implies the existence of t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) s.t. t(t1;t2)t\in(t_{1};t_{2}). The fact that ¬(t\scalerel×

      ×

      bl
      )
      \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      implies that both ¬(t1\scalerel×

      ×

      bl
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      and ¬(t2\scalerel×

      ×

      bl
      )
      \neg(t_{2}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)
      . According to the induction hypothesis, this means that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}^{\prime}). Therefore (t1;t2)σd(i)(t_{1};t_{2})\subset\sigma_{d}(i^{\prime}) and hence tσd(i)t\in\sigma_{d}(i^{\prime}).

  • For interactions of the form par(i1,i2)par(i_{1},i_{2}) and seq(i1,i2)seq(i_{1},i_{2}), the reasoning is the same as for the previous case except that we reason on (respectively) the operators |||| and ;\scalerel×

    ×

    b
    ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
    over both of which the conflict \scalerel×

    ×

    b
    \scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}
    is also distributive.

  • Let us now suppose that ii is of the form loopk(i1)loop_{k}(i_{1}) with k{X,H,S,P}k\in\{X,H,S,P\} and let us note \diamond the corresponding operator on sets of traces, i.e. =;\diamond=; if k=Xk=X, =;\scalerel×

    ×

    b
    \diamond=;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}
    if k=Hk=H, =;\scalerel×

    ×

    b
    \diamond=;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
    if k=Sk=S and =||\diamond=|| if k=Pk=P. We then have:

    • if i1↓̸\scalerel×

      ×

      b
      l
      i_{1}\not{\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}l
      , then loopk(i1)\scalerel*
      ×
      ×
      b
      𝑙
      loop_{k}(i_{1})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}\varnothing
      . As per the reciprocate of Lem.5.5, if i1i_{1} does not avoid ll, this means that all the traces from σd(i1)\sigma_{d}(i_{1}) have conflicts with ll. This means that all the traces obtained from merging traces from i1i_{1} have conflicts with ll. Therefore the empty trace ϵ\epsilon is the only trace from σd(loopk(i1))\sigma_{d}(loop_{k}(i_{1})) which has no conflict with ll. Given that σd()={ϵ}\sigma_{d}(\varnothing)=\{\epsilon\}, the property holds.

    • if i1\scalerel×

      ×

      b
      l
      i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}l
      , then there exists a unique i1i_{1}^{\prime} such that i1\scalerel*
      ×
      ×
      b
      𝑙i1
      i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{l}i_{1}^{\prime}
      and we suppose the induction hypothesis σd(i1)={t1σd(i1)|¬(t1\scalerel×

      ×

      bl
      )
      }
      \sigma_{d}(i_{1}^{\prime})=\{t_{1}\in\sigma_{d}(i_{1})\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\}
      . Then we have:

      σd(loopk(i1))=σd(i1)={tσd(i1)|¬(t\scalerel×

      ×

      bl
      )
      }
      ={tσd(i1)|¬(t\scalerel×

      ×

      bl
      )
      }
      ={tσd(loopk(i1)))|¬(t\scalerel×

      ×

      bl)
      }
      \begin{array}[]{lcl}\sigma_{d}(loop_{k}(i_{1}^{\prime}))&=&\sigma_{d}(i_{1}^{\prime})^{\diamond*}\\ &=&\{t\in\sigma_{d}(i_{1})\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\}^{\diamond*}\\ &=&\{t\in\sigma_{d}(i_{1})^{\diamond*}\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\}\\ &=&\{t\in\sigma_{d}(loop_{k}(i_{1})))\leavevmode\nobreak\ |\leavevmode\nobreak\ \neg(t\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}l)\}\end{array}

      Indeed, the conflict \scalerel×

      ×

      b
      \scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}
      distributes over \diamond and hence any trace obtained from merging traces from i1i_{1} has no conflict w.r.t. ll iff it is obtained from merging traces from i1i_{1} that all have no conflict with ll. Therefore, traces that have no conflict w.r.t. ll are exactly those that are obtained from merging traces with no conflicts w.r.t. ll. Those traces are those from loopk(i1)loop_{k}(i_{1}^{\prime}) as per the induction hypothesis. Therefore the property holds.

Appendix C Proofs of section 6

Lemma (Lem.6.1).

For any a𝔸Ωa\in\mathbb{A}_{\Omega}, t𝕋Ωt\in\mathbb{T}_{\Omega} and ii and ii^{\prime} from 𝕀Ω\mathbb{I}_{\Omega}:

((i𝑎i)(tσd(i)))(a.tσd(i))\left(\begin{array}[]{c}(i\xrightarrow{a}i^{\prime})\wedge(t\in\sigma_{d}(i^{\prime}))\end{array}\right)\Rightarrow(a.t\in\sigma_{d}(i))
Proof C.1.

Given ii and ii^{\prime} in 𝕀Ω\mathbb{I}_{\Omega}, aa in 𝔸Ω\mathbb{A}_{\Omega} and t𝕋Ωt\in\mathbb{T}_{\Omega}, let us suppose that i𝑎ii\xrightarrow{a}i^{\prime} and that tσd(i)t\in\sigma_{d}(i^{\prime}). In order to prove a.tσd(i)a.t\in\sigma_{d}(i) let us reason by induction on the cases that makes the hypothesis i𝑎ii\xrightarrow{a}i^{\prime} possible. There are 13 such cases, as per the 13 rules from Def.5.12:

  1. 1.

    when executing an atomic action, we have i𝔸Ωi\in\mathbb{A}_{\Omega} and i=i^{\prime}=\varnothing. Then σd(i)={i}\sigma_{d}(i)=\{i\} and σd()={ϵ}\sigma_{d}(\varnothing)=\{\epsilon\}. The property i.ϵ=iσd(i)i.\epsilon=i\in\sigma_{d}(i) holds.

  2. 2.

    when executing an action on the left of an alternative, we have ii of the form alt(i1,i2)alt(i_{1},i_{2}), and i=i1i^{\prime}=i_{1}^{\prime} such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}. As a result, i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and tσd(i1)t\in\sigma_{d}(i_{1}^{\prime}). We can therefore apply the induction hypothesis on sub-interaction i1i_{1} to obtain that a.tσd(i1)a.t\in\sigma_{d}(i_{1}). Given that σd(i1)σd(i)\sigma_{d}(i_{1})\subset\sigma_{d}(i), the property holds.

  3. 3.

    the case for executing an action on the right of an alternative can be treated similarly

  4. 4.

    when executing an action on the left of a parpar, we have ii of the form par(i1,i2)par(i_{1},i_{2}), and i=par(i1,i2)i^{\prime}=par(i_{1}^{\prime},i_{2}) such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and tσd(par(i1,i2))t\in\sigma_{d}(par(i_{1}^{\prime},i_{2})). By definition of σd\sigma_{d}, we have that there exist (t1,t2)σd(i1)×σd(i2)(t_{1}^{\prime},t_{2})\in\sigma_{d}(i_{1}^{\prime})\times\sigma_{d}(i_{2}) s.t. t(t1||t2)t\in(t_{1}^{\prime}||t_{2}). Therefore we have i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and t1σd(i1)t_{1}^{\prime}\in\sigma_{d}(i_{1}^{\prime}). Hence we can apply the induction hypothesis on sub-interaction i1i_{1} to obtain that a.t1σd(i1)a.t_{1}^{\prime}\in\sigma_{d}(i_{1}). Given that σd(par(i1,i2))\sigma_{d}(par(i_{1},i_{2})) is the union of all the (tα||tβ)(t_{\alpha}||t_{\beta}) with tαt_{\alpha} and tβt_{\beta} traces from i1i_{1} and i2i_{2}, we have that (a.t1||t2)σd(i)(a.t_{1}^{\prime}||t_{2})\subset\sigma_{d}(i). In particular, we know that t(t1||t2)t\in(t_{1}^{\prime}||t_{2}), so, by definition of the |||| operator, we have that a.t(a.t1||t2)a.t\in(a.t_{1}^{\prime}||t_{2}). Therefore the property holds.

  5. 5.

    the case for executing an action on the right of a parpar can be treated similarly

  6. 6.

    executing an action on the left of a strictstrict can be treated like 4.

  7. 7.

    when executing an action on the right of a strictstrict, we have ii of the form strict(i1,i2)strict(i_{1},i_{2}), and i=i2i^{\prime}=i_{2}^{\prime} such that i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} with the added hypothesis that i1i_{1}\downarrow. Given that tσd(i2)t\in\sigma_{d}(i_{2}^{\prime}) and i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime}, we can apply the induction hypothesis on sub-interaction i2i_{2} to obtain that a.tσd(i2)a.t\in\sigma_{d}(i_{2}). Given that σd(strict(i1,i2))\sigma_{d}(strict(i_{1},i_{2})) includes σd(i2)\sigma_{d}(i_{2}) when i1i_{1}\downarrow, and given that we know i1i_{1}\downarrow to be true, the property holds.

  8. 8.

    executing an action on the left of a seqseq can be treated like 4.

  9. 9.

    when executing an action on the right of a seqseq, we have ii of the form seq(i1,i2)seq(i_{1},i_{2}), and i=seq(i1,i2)i^{\prime}=seq(i_{1}^{\prime},i_{2}^{\prime}) such that i1\scalerel*
    ×
    ×
    b
    θ(a)i1
    i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i_{1}^{\prime}
    and i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} with the added hypothesis that i1\scalerel×

    ×

    b
    θ(a)
    i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\theta(a)
    implied by the fact that i1i_{1} prunes into i1i_{1}^{\prime}. Given that tσd(i)t\in\sigma_{d}(i^{\prime}), there exists t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}^{\prime}) s.t. t(t1;\scalerel×

    ×

    b
    t2)
    t\in(t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})
    . We then remark that:

    • i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}^{\prime}). Hence we can apply the induction hypothesis on sub-interaction i2i_{2} to obtain that a.t2σd(i2)a.t_{2}\in\sigma_{d}(i_{2}).

    • the fact that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}) implies, as per Lem.5.10 that ¬(t1\scalerel×

      ×

      bθ(a)
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
      . As a result, by definition of the weak sequencing operator, (t1;\scalerel×

      ×

      b
      a.t2)
      (t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}a.t_{2})
      includes a.ta.t.

    Finally, given that σd(i)\sigma_{d}(i) includes all (tα;\scalerel×

    ×

    b
    tβ)
    (t_{\alpha};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{\beta})
    s.t. tασd(i1)t_{\alpha}\in\sigma_{d}(i_{1}) and tβσd(i2)t_{\beta}\in\sigma_{d}(i_{2}), we have, in particular (t1;\scalerel×

    ×

    b
    a.t2)
    σd(i)
    (t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}a.t_{2})\subset\sigma_{d}(i)
    . Hence the property holds.

  10. 10.

    when executing an action underneath a loopXloop_{X}, we have ii of the form loopX(i1)loop_{X}(i_{1}) and i=strict(i1,loopX(i1))i^{\prime}=strict(i_{1}^{\prime},loop_{X}(i_{1})) such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime}. We have that tσd(i)t\in\sigma_{d}(i^{\prime}). Therefore there exists t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i)t_{2}\in\sigma_{d}(i) s.t. t(t1;t2)t\in(t_{1};t_{2}). We then remark that:

    • i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}). Hence we can apply the induction hypothesis on sub-interaction i1i_{1}, which implies that a.t1σd(i1)a.t_{1}\in\sigma_{d}(i_{1}).

    • and as a result, given that t2σd(loopX(i1))=σd(i1);t_{2}\in\sigma_{d}(loop_{X}(i_{1}))=\sigma_{d}(i_{1})^{;*}, and a.t1σd(i1)a.t_{1}\in\sigma_{d}(i_{1}), we have, (a.t1;t2)σd(i1);(a.t_{1};t_{2})\subset\sigma_{d}(i_{1})^{;*} i.e. (a.t1;t2)σd(i)(a.t_{1};t_{2})\subset\sigma_{d}(i)

    Then, given that t(t1;t2)t\in(t_{1};t_{2}), we have immediately that a.t(a.t1;t2)a.t\in(a.t_{1};t_{2}) because it is always possible to add actions from the left. Therefore a.tσd(i)a.t\in\sigma_{d}(i), so the property holds.

  11. 11.

    executing an action underneath a loopHloop_{H} can be treated like 10.

  12. 12.

    when executing an action underneath a loopSloop_{S}, we have ii of the form loopS(i1)loop_{S}(i_{1}) and i=seq(i0,seq(i1,loopS(i1)))i^{\prime}=seq(i_{0}^{\prime},seq(i_{1}^{\prime},loop_{S}(i_{1}))) such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and i\scalerel*
    ×
    ×
    b
    θ(a)i0
    i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i_{0}^{\prime}
    . Given that tσd(i)t\in\sigma_{d}(i^{\prime}), there exists t0σd(i0)t_{0}\in\sigma_{d}(i_{0}^{\prime}), t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i)t_{2}\in\sigma_{d}(i) s.t. t(t0;\scalerel×

    ×

    b
    t1;\scalerel×

    ×

    b
    t2)
    t\in(t_{0};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})
    . We then remark that:

    • Given that i\scalerel*
      ×
      ×
      b
      θ(a)i0
      i\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i_{0}^{\prime}
      we have that:

      • σd(i0)σd(i)\sigma_{d}(i_{0}^{\prime})\subset\sigma_{d}(i) and, given that σd(i)=σd(i1);\scalerel×

        ×

        b
        \sigma_{d}(i)=\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
        , is a weak Kleene closure we have that σd(i);\scalerel×

        ×

        b
        σd(i)σd(i)
        \sigma_{d}(i);_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)\subset\sigma_{d}(i)
        and therefore σd(i0);\scalerel×

        ×

        b
        σd(i)σd(i)
        \sigma_{d}(i_{0}^{\prime});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)\subset\sigma_{d}(i)

      • and, given that t0σd(i0)t_{0}\in\sigma_{d}(i_{0}^{\prime}), we have as per Lem.5.10 that ¬(t0\scalerel×

        ×

        bθ(a)
        )
        \neg(t_{0}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
        . Therefore, for any tβt_{\beta} and any tα(t0;\scalerel×

        ×

        b
        tβ)
        t_{\alpha}\in(t_{0};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{\beta})
        we have a.tα(t0;\scalerel×

        ×

        b
        a.tβ)
        a.t_{\alpha}\in(t_{0};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}a.t_{\beta})
        given that we can take action aa, which have no conflict w.r.t t0t_{0}, on the right side

    • We have i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}). Hence we can apply the induction hypothesis on sub-interaction i1i_{1}, which implies that a.t1σd(i1)a.t_{1}\in\sigma_{d}(i_{1})

    • Given that t2σd(loopS(i1))=σd(i1);\scalerel×

      ×

      b
      t_{2}\in\sigma_{d}(loop_{S}(i_{1}))=\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
      , and a.t1σd(i1)a.t_{1}\in\sigma_{d}(i_{1}), we have, (a.t1;\scalerel×

      ×

      b
      t2)
      σd(i1);\scalerel×

      ×

      b
      (a.t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})\subset\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
      i.e. (a.t1;\scalerel×

      ×

      b
      t2)
      σd(i)
      (a.t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})\subset\sigma_{d}(i)

    Finally, given a.t(t0;\scalerel×

    ×

    b
    a.t1;\scalerel×

    ×

    b
    t2)
    (σd(i0);\scalerel×

    ×

    b
    σd(i))
    σd(i)
    a.t\in(t_{0};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}a.t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})\subset(\sigma_{d}(i_{0}^{\prime});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i))\subset\sigma_{d}(i)
    , the property holds.

  13. 13.

    executing an action underneath a loopPloop_{P} can be treated like 10.

Theorem (Th.6.3).

For any i𝕀Ωi\in\mathbb{I}_{\Omega} we have σo(i)σd(i)\sigma_{o}(i)\subset\sigma_{d}(i)

Proof C.2.

Let us consider i𝕀Ωi\in\mathbb{I}_{\Omega} and tσo(i)t\in\sigma_{o}(i) and let us reason by induction on the trace tt.

  • If t=ϵt=\epsilon, then, as per the definition of σo\sigma_{o}, this means that ii\downarrow. Then as per Lem.5.2, this means that ϵσd(i)\epsilon\in\sigma_{d}(i).

  • If t=a.tt=a.t^{\prime} then, by definition of σo\sigma_{o}, a.tσo(i)a.t^{\prime}\in\sigma_{o}(i) iff i𝕀Ω\exists\leavevmode\nobreak\ i^{\prime}\in\mathbb{I}_{\Omega} s.t. i𝑎ii\xrightarrow{a}i^{\prime} and tσo(i)t^{\prime}\in\sigma_{o}(i^{\prime}). Let us therefore consider such an interaction ii^{\prime}. By the induction hypothesis on trace tt^{\prime}, we have (tσo(i))(tσd(i))(t^{\prime}\in\sigma_{o}(i^{\prime}))\Rightarrow(t^{\prime}\in\sigma_{d}(i^{\prime})). As a result we have i𝑎ii\xrightarrow{a}i^{\prime} and tσd(i)t^{\prime}\in\sigma_{d}(i^{\prime}). We can therefore apply Lem.6.1 to conclude that a.tσd(i)a.t^{\prime}\in\sigma_{d}(i). Hence the property holds.

Lemma C.3 (Lem.6.5).

For any a𝔸Ωa\in\mathbb{A}_{\Omega}, t𝕋Ωt\in\mathbb{T}_{\Omega} and i𝕀Ωi\in\mathbb{I}_{\Omega}:

(a.tσd(i))(i𝕀Ω,(i𝑎i)(tσd(i)))(a.t\in\sigma_{d}(i))\Rightarrow\left(\exists\leavevmode\nobreak\ i^{\prime}\in\mathbb{I}_{\Omega},\leavevmode\nobreak\ \begin{array}[]{c}(i\xrightarrow{a}i^{\prime})\wedge(t\in\sigma_{d}(i^{\prime}))\end{array}\right)
Proof C.4.

Let us consider i𝕀Ωi\in\mathbb{I}_{\Omega}, a𝔸Ωa\in\mathbb{A}_{\Omega} and t𝕋Ωt\in\mathbb{T}_{\Omega}. Let us suppose that a.tσd(i)a.t\in\sigma_{d}(i) and let us reason by induction on the term structure of ii.

  • we cannot have i=i=\varnothing because it contradicts a.tσd(i)a.t\in\sigma_{d}(i)

  • if i𝔸Ωi\in\mathbb{A}_{\Omega} then a.tσd(i)a.t\in\sigma_{d}(i) implies that i=ai=a and t=ϵt=\epsilon. We then have the existence of i=i^{\prime}=\varnothing which indeed satisfies that a𝑎a\xrightarrow{a}\varnothing and ϵσd()\epsilon\in\sigma_{d}(\varnothing)

  • if ii is of the form alt(i1,i2)alt(i_{1},i_{2}) then a.tσd(i)a.t\in\sigma_{d}(i) implies either a.tσd(i1)a.t\in\sigma_{d}(i_{1}) or a.tσd(i2)a.t\in\sigma_{d}(i_{2}). Let us suppose it is the first case (the second is identical). Then, we can apply the induction hypothesis on sub-interaction i1i_{1}, which reveals the existence of i1i_{1}^{\prime} such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and tσd(i1)t\in\sigma_{d}(i_{1}^{\prime}). By definition of the execution relation "\rightarrow", this implies that alt(i1,i2)𝑎i1alt(i_{1},i_{2})\xrightarrow{a}i_{1}^{\prime}. As a result, we have identified i=i1i^{\prime}=i_{1}^{\prime} which satisfies the property.

  • if ii is of the form par(i1,i2)par(i_{1},i_{2}) then a.tσd(i)a.t\in\sigma_{d}(i) implies the existence of traces t1t_{1} and t2t_{2} such that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) and a.t(t1||t2)a.t\in(t_{1}||t_{2}). This then implies:

    • either that t1t_{1} is of the form a.t1a.t_{1}^{\prime} and t(t1||t2)t\in(t_{1}^{\prime}||t_{2})

    • or t2t_{2} is of the form a.t2a.t_{2}^{\prime} and t(t1||t2)t\in(t_{1}||t_{2}^{\prime})

    As both case can be treated identically, let us suppose it is the first case. Given that we have a.t1σd(i1)a.t_{1}^{\prime}\in\sigma_{d}(i_{1}), we can apply the induction hypothesis on sub-interaction i1i_{1}, which reveals the existence of i1i_{1}^{\prime} such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and t1σd(i1)t_{1}^{\prime}\in\sigma_{d}(i_{1}^{\prime}). By definition of the execution relation "\rightarrow", this implies that par(i1,i2)𝑎par(i1,i2)par(i_{1},i_{2})\xrightarrow{a}par(i_{1}^{\prime},i_{2}). By definition of σd\sigma_{d}, given that t1σd(i1)t_{1}^{\prime}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}), we have (t1||t2)σd(par(i1,i2))(t_{1}^{\prime}||t_{2})\subset\sigma_{d}(par(i_{1}^{\prime},i_{2})). Then, given that t(t1||t2)t\in(t_{1}^{\prime}||t_{2}), this implies that tσd(par(i1,i2))t\in\sigma_{d}(par(i_{1}^{\prime},i_{2})). We therefore have identified i=par(i1,i2)i^{\prime}=par(i_{1}^{\prime},i_{2}) which satisfies the property.

  • if ii is of the form strict(i1,i2)strict(i_{1},i_{2}) then a.tσd(i)a.t\in\sigma_{d}(i) implies the existence of traces t1t_{1} and t2t_{2} such that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) and a.t(t1;t2)a.t\in(t_{1};t_{2}). This then implies:

    • either that t1t_{1} is of the form a.t1a.t_{1}^{\prime} and t(t1;t2)t\in(t_{1}^{\prime};t_{2}). In that case we can apply the induction hypothesis on sub-interaction i1i_{1}, which reveals the existence of i1i_{1}^{\prime} s.t. i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and t1σd(i1)t_{1}^{\prime}\in\sigma_{d}(i_{1}^{\prime}). By definition of the execution relation "\rightarrow", this implies that strict(i1,i2)𝑎strict(i1,i2)strict(i_{1},i_{2})\xrightarrow{a}strict(i_{1}^{\prime},i_{2}). By definition of σd\sigma_{d}, given that t1σd(i1)t_{1}^{\prime}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}), we have (t1;t2)σd(strict(i1,i2))(t_{1}^{\prime};t_{2})\subset\sigma_{d}(strict(i_{1}^{\prime},i_{2})). Then, given that t(t1;t2)t\in(t_{1}^{\prime};t_{2}) this implies that tσd(strict(i1,i2))t\in\sigma_{d}(strict(i_{1}^{\prime},i_{2})). Hence i=strict(i1,i2)i^{\prime}=strict(i_{1}^{\prime},i_{2}) satisfies the property.

    • or that t1=ϵt_{1}=\epsilon and t2=a.tt_{2}=a.t. On the one hand, the fact that t1=ϵσd(i1)t_{1}=\epsilon\in\sigma_{d}(i_{1}) implies, as per Lem.5.2, that i1i_{1}\downarrow. On the other hand, with t2=a.tσd(i2)t_{2}=a.t\in\sigma_{d}(i_{2}), we can apply the induction hypothesis on sub-interaction i2i_{2}, which reveals the existence of i2i_{2}^{\prime} s.t. i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} and tσd(i2)t\in\sigma_{d}(i_{2}^{\prime}). By definition of the execution relation "\rightarrow", and because the precondition i1i_{1}\downarrow is verified, this implies that strict(i1,i2)𝑎i2strict(i_{1},i_{2})\xrightarrow{a}i_{2}^{\prime}. As a result, we have identified i=i2i^{\prime}=i_{2}^{\prime} which satisfies the property.

  • if ii is of the form seq(i1,i2)seq(i_{1},i_{2}) then a.tσd(i)a.t\in\sigma_{d}(i) implies the existence of traces t1t_{1} and t2t_{2} such that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}) and a.t(t1;\scalerel×

    ×

    b
    t2)
    a.t\in(t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})
    . This then implies:

    • either that t1=a.t1t_{1}=a.t_{1}^{\prime} and t(t1;\scalerel×

      ×

      b
      t2)
      t\in(t_{1}^{\prime};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})
      . In that case we can apply the induction hypothesis on sub-interaction i1i_{1}, which reveals the existence of i1i_{1}^{\prime} s.t. i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and t1σd(i1)t_{1}^{\prime}\in\sigma_{d}(i_{1}^{\prime}). By definition of the execution relation "\rightarrow", this implies that seq(i1,i2)𝑎seq(i1,i2)seq(i_{1},i_{2})\xrightarrow{a}seq(i_{1}^{\prime},i_{2}). By definition of σd\sigma_{d}, given that t1σd(i1)t_{1}^{\prime}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i2)t_{2}\in\sigma_{d}(i_{2}), we have (t1;\scalerel×

      ×

      b
      t2)
      σd(seq(i1,i2))
      (t_{1}^{\prime};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})\subset\sigma_{d}(seq(i_{1}^{\prime},i_{2}))
      . Then, given that t(t1;\scalerel×

      ×

      b
      t2)
      t\in(t_{1}^{\prime};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2})
      , this implies that tσd(seq(i1,i2))t\in\sigma_{d}(seq(i_{1}^{\prime},i_{2})). We therefore have identified i=seq(i1,i2)i^{\prime}=seq(i_{1}^{\prime},i_{2}) which satisfies the property.

    • or that ¬(t1\scalerel×

      ×

      bθ(a)
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
      and that t2t_{2} is of the form a.t2a.t_{2}^{\prime} with t(t1;\scalerel×

      ×

      b
      t2)
      t\in(t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2}^{\prime})
      . On the one hand, the fact that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) is such that ¬(t1\scalerel×

      ×

      bθ(a)
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
      , ensures, as per Lem.5.5, that i1\scalerel×

      ×

      b
      θ(a)
      i_{1}\downarrow^{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\theta(a)
      and therefore, as per Lem.5.8, that there exists a unique i1i_{1}^{\prime} such that i1\scalerel*
      ×
      ×
      b
      θ(a)i1
      i_{1}\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i_{1}^{\prime}
      . On the other hand, with t2=a.t2σd(i2)t_{2}=a.t_{2}^{\prime}\in\sigma_{d}(i_{2}), we can apply the induction hypothesis on sub-interaction i2i_{2}, which reveals the existence of i2i_{2}^{\prime} s.t. i2𝑎i2i_{2}\xrightarrow{a}i_{2}^{\prime} and t2σd(i2)t_{2}^{\prime}\in\sigma_{d}(i_{2}^{\prime}). By definition of the execution relation "\rightarrow", this implies that seq(i1,i2)𝑎seq(i1,i2)seq(i_{1},i_{2})\xrightarrow{a}seq(i_{1}^{\prime},i_{2}^{\prime}). Given that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}) is such that ¬(t1\scalerel×

      ×

      bθ(a)
      )
      \neg(t_{1}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
      , as per Lem.5.10, this implies that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}). By definition of σd\sigma_{d}, given that t1σd(i1)t_{1}\in\sigma_{d}(i_{1}^{\prime}) and t2σd(i2)t_{2}^{\prime}\in\sigma_{d}(i_{2}^{\prime}), we have (t1;\scalerel×

      ×

      b
      t2)
      σd(seq(i1,i2))
      (t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2}^{\prime})\subset\sigma_{d}(seq(i_{1}^{\prime},i_{2}^{\prime}))
      . Then, given that t(t1;\scalerel×

      ×

      b
      t2)
      t\in(t_{1};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}t_{2}^{\prime})
      , this implies that tσd(seq(i1,i2))t\in\sigma_{d}(seq(i_{1}^{\prime},i_{2}^{\prime})). We therefore have identified i=seq(i1,i2)i^{\prime}=seq(i_{1}^{\prime},i_{2}^{\prime}) which satisfies the property.

  • if ii is of the form loopX(i1)loop_{X}(i_{1}) then a.tσd(i)a.t\in\sigma_{d}(i) means that a.tσd(i1);a.t\in\sigma_{d}(i_{1})^{;*} and hence, as per Lem.3.4, this implies the existence of a trace tt^{\prime} such that a.tσd(i1)a.t^{\prime}\in\sigma_{d}(i_{1}) and t{t};σd(i1);t\in\{t^{\prime}\};\sigma_{d}(i_{1})^{;*}. Then, the fact that a.tσd(i1)a.t^{\prime}\in\sigma_{d}(i_{1}) allows us to apply the induction hypothesis on sub-interaction i1i_{1} to reveal the existence of i1i_{1}^{\prime} such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and tσd(i1)t^{\prime}\in\sigma_{d}(i_{1}^{\prime}). By definition of the execution relation "\rightarrow", this implies that loopX(i1)𝑎strict(i1,loopX(i1))loop_{X}(i_{1})\xrightarrow{a}strict(i_{1}^{\prime},loop_{X}(i_{1})). By definition of σd\sigma_{d}, given that tσd(i1)t^{\prime}\in\sigma_{d}(i_{1}^{\prime}) and that t{t};σd(i1);t\in\{t^{\prime}\};\sigma_{d}(i_{1})^{;*}, we have that tσd(strict(i1,loopX(i1)))t\in\sigma_{d}(strict(i_{1}^{\prime},loop_{X}(i_{1}))). Hence i=strict(i1,loopX(i1))i^{\prime}=strict(i_{1}^{\prime},loop_{X}(i_{1})) satisfies the property.

  • for ii is of the form loopP(i1)loop_{P}(i_{1}) the proof can be handled as in the previous case

  • if ii is of the form loopH(i1)loop_{H}(i_{1}) then a.tσd(i)a.t\in\sigma_{d}(i) means that a.tσd(i1);\scalerel×

    ×

    b
    a.t\in\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
    . By definition, there exists j>0j>0 such that a.tσd(i1);\scalerel×

    ×

    b
    j
    =σd(i1);\scalerel×

    ×

    b
    σd(i1);\scalerel×

    ×

    b
    (j1)
    σd(i1);\scalerel×

    ×

    b
    σd(i1);\scalerel×

    ×

    b
    a.t\in\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}j}=\sigma_{d}(i_{1});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}(j-1)}\subset\sigma_{d}(i_{1});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
    . Because the restricted operator ;\scalerel×

    ×

    b
    ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}
    only allows to take the first action of recomposed traces from the left hand side, we can identify a trace tt^{\prime} s.t. a.tσd(i1)a.t^{\prime}\in\sigma_{d}(i_{1}) and t{t};\scalerel×

    ×

    b
    σd(i1);\scalerel×

    ×

    b
    t\in\{t^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
    . Hence, we can apply the induction hypothesis on sub-interaction i1i_{1} to reveal the existence of i1i_{1}^{\prime} such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and tσd(i1)t^{\prime}\in\sigma_{d}(i_{1}^{\prime}). By definition of the execution relation "\rightarrow", this implies that loopH(i1)𝑎seq(i1,loopH(i1))loop_{H}(i_{1})\xrightarrow{a}seq(i_{1}^{\prime},loop_{H}(i_{1})). By definition of σd\sigma_{d}, given that tσd(i1)t^{\prime}\in\sigma_{d}(i_{1}^{\prime}) and that t{t};\scalerel×

    ×

    b
    σd(i1);\scalerel×

    ×

    b
    t\in\{t^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}^{\Lsh}*}
    , we have that tσd(seq(i1,loopH(i1)))t\in\sigma_{d}(seq(i_{1}^{\prime},loop_{H}(i_{1}))). We therefore have identified i=seq(i1,loopH(i1))i^{\prime}=seq(i_{1}^{\prime},loop_{H}(i_{1})) which satisfies the property.

  • if ii is of the form loopS(i1)loop_{S}(i_{1}) then a.tσd(i)a.t\in\sigma_{d}(i) means that a.tσd(i1);\scalerel×

    ×

    b
    a.t\in\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}*}
    . By definition there exists n>0n>0 such that a.tσd(i1);\scalerel×

    ×

    b
    n
    a.t\in\sigma_{d}(i_{1})^{;_{\scalerel*{\leavevmode{\ooalign{\raisebox{3.47221pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}n}
    . As a result, we can identify traces t1t_{1} through tnt_{n} such that for any j[1,n]j\in[1,n], tjσd(i1)t_{j}\in\sigma_{d}(i_{1}) and a.t{t1};\scalerel×

    ×

    b
    ;\scalerel×

    ×

    b
    {tn}
    a.t\in\{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{n}\}
    . By definition of the weak sequencing operator, action aa is taken from a certain tjt_{j} with j[1,n]j\in[1,n] which is therefore of the form tj=a.tjt_{j}=a.t_{j}^{\prime} and we have, for any k<jk<j, ¬(tk\scalerel×

    ×

    bθ(a)
    )
    \neg(t_{k}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
    (otherwise we could not take aa from tjt_{j}) and t{t1};\scalerel×

    ×

    b
    ;\scalerel×

    ×

    b
    {tj1};\scalerel×

    ×

    b
    {tj};\scalerel×

    ×

    b
    {tj+1};\scalerel×

    ×

    b
    ;\scalerel×

    ×

    b
    {tn}
    t\in\{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j-1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j}^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j+1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{n}\}
    . We can then remark the following:

    • considering i0i_{0}^{\prime} such that loopS(i1)\scalerel*
      ×
      ×
      b
      θ(a)i0
      loop_{S}(i_{1})\mathrlap{\raisebox{-0.125pt}{\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}}\xrightarrow{\theta(a)}i_{0}^{\prime}
      (which existence is guaranteed by Lem.5.8 given that a loop always evades any lifeline), because, for any k<jk<j, we have ¬(tk\scalerel×

      ×

      bθ(a)
      )
      \neg(t_{k}\scalerel*{\leavevmode{\ooalign{\raisebox{6.94444pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}\theta(a))
      then, as per Lem.5.10, for all k<jk<j, we have tkσd(i0)t_{k}\in\sigma_{d}(i_{0}^{\prime}). Then:

      • *

        If all the tkt_{k} are the empty trace then {t1};\scalerel×

        ×

        b
        ;\scalerel×

        ×

        b
        {tj1}={ϵ}σd(i0)
        \{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j-1}\}=\{\epsilon\}\subset\sigma_{d}(i_{0}^{\prime})
        (σd(i0)\sigma_{d}(i_{0}^{\prime}) contains at least ϵ\epsilon because loopS(i1)loop_{S}(i_{1}) does)

      • *

        If at least one tkt_{k} is not the empty trace then i0i_{0}^{\prime} is a non empty loopSloop_{S}, and, because it is a loopSloop_{S}, given that for all k<jk<j, we have tkσd(i0)t_{k}\in\sigma_{d}(i_{0}^{\prime}) then {t1};\scalerel×

        ×

        b
        ;\scalerel×

        ×

        b
        {tj1}σd(i0)
        \{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j-1}\}\subset\sigma_{d}(i_{0}^{\prime})
        (because a loopSloop_{S} is closed under repetition by ;\scalerel×

        ×

        b
        ;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}
        )

      Hence {t1};\scalerel×

      ×

      b
      ;\scalerel×

      ×

      b
      {tj1}σd(i0)
      \{t_{1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j-1}\}\subset\sigma_{d}(i_{0}^{\prime})
      and therefore tσd(i0);\scalerel×

      ×

      b
      {tj};\scalerel×

      ×

      b
      {tj+1};\scalerel×

      ×

      b
      ;\scalerel×

      ×

      b
      {tn}
      t\in\sigma_{d}(i_{0}^{\prime});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j}^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j+1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{n}\}

    • given that, for any k>jk>j we have that tkσd(i)t_{k}\in\sigma_{d}(i) and because ii is a loop (i=loopS(i1)i=loop_{S}(i_{1})), then {tj+1};\scalerel×

      ×

      b
      ;\scalerel×

      ×

      b
      {tn}σd(i)
      \{t_{j+1}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\cdots;_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{n}\}\subset\sigma_{d}(i)
      and therefore tσd(i0);\scalerel×

      ×

      b
      {tj};\scalerel×

      ×

      b
      σd(i)
      t\in\sigma_{d}(i_{0}^{\prime});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j}^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)

    • given that tj=a.tjσd(i1)t_{j}=a.t_{j}^{\prime}\in\sigma_{d}(i_{1}) we can apply the induction hypothesis on sub-interaction i1i_{1} to reveal the existence of i1i_{1}^{\prime} such that i1𝑎i1i_{1}\xrightarrow{a}i_{1}^{\prime} and tjσd(i1)t_{j}^{\prime}\in\sigma_{d}(i_{1}^{\prime}). By definition of the execution relation "\rightarrow", this implies that loopS(i1)𝑎seq(i0,seq(i1,loopS(i1)))loop_{S}(i_{1})\xrightarrow{a}seq(i_{0}^{\prime},seq(i_{1}^{\prime},loop_{S}(i_{1})))

    • finally, given that we have shown that tσd(i0);\scalerel×

      ×

      b
      {tj};\scalerel×

      ×

      b
      σd(i)
      t\in\sigma_{d}(i_{0}^{\prime});_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\{t_{j}^{\prime}\};_{\scalerel*{\leavevmode{\ooalign{\raisebox{4.8611pt}{$\times$}\cr\raisebox{0.0pt}{\scalebox{1.0}[-1.0]{$\times$}}\cr}}}{b}}\sigma_{d}(i)
      and because tjσd(i1)t_{j}^{\prime}\in\sigma_{d}(i_{1}^{\prime}), by definition of σd\sigma_{d} we can conclude that tσd(seq(i0,seq(i1,loopS(i1))))t\in\sigma_{d}(seq(i_{0}^{\prime},seq(i_{1}^{\prime},loop_{S}(i_{1})))). Therefore we have identified i=seq(i0,seq(i1,loopS(i1)))i^{\prime}=seq(i_{0}^{\prime},seq(i_{1}^{\prime},loop_{S}(i_{1}))) which satisfies the property.

Theorem (Th.6.7).

For any i𝕀Ωi\in\mathbb{I}_{\Omega} we have σo(i)σd(i)\sigma_{o}(i)\supset\sigma_{d}(i)

Proof C.5.

Let us consider i𝕀Ωi\in\mathbb{I}_{\Omega} and tσd(i)t\in\sigma_{d}(i) and let us reason by induction on the trace tt.

  • If t=ϵt=\epsilon, the fact that t=ϵσd(i)t=\epsilon\in\sigma_{d}(i) implies, as per Lem.5.2, that ii\downarrow. Then, by definition of σo\sigma_{o}, this means that ϵσo(i)\epsilon\in\sigma_{o}(i).

  • If t=a.tt=a.t^{\prime} then, the fact that a.tσd(i)a.t^{\prime}\in\sigma_{d}(i) implies, as per Lem.6.5, that there exists an interaction ii^{\prime} such that i𝑎ii\xrightarrow{a}i^{\prime} and tσd(i)t^{\prime}\in\sigma_{d}(i^{\prime}). Let us therefore consider such an interaction ii^{\prime}. By the induction hypothesis on trace tt^{\prime}, we have (tσd(i))(tσo(i))(t^{\prime}\in\sigma_{d}(i^{\prime}))\Rightarrow(t^{\prime}\in\sigma_{o}(i^{\prime})). As a result we have i𝑎ii\xrightarrow{a}i^{\prime} and tσo(i)t^{\prime}\in\sigma_{o}(i^{\prime}). By definition of the operational semantics, this implies that a.tσo(i)a.t^{\prime}\in\sigma_{o}(i). Hence the property holds.