Blame view

prism-4.3-linux64/doc/manual/ThePRISMLanguage/ParallelComposition.html 8.26 KB
8146dcf82   Thanasis Naskos   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
  
  <html>
  <head>
  
  <title>
  PRISM Manual | ThePRISMLanguage / ParallelComposition 
  </title>
  
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta name="keywords" content="prism, probabilistic, symbolic, model, checker, verification, birmingham, oxford, parker, norman, kwiatkowska">
  
  <link rel="icon" href="../pub/skins/offline/images/p16.ico" type="image/x-icon">
  <link rel="shortcut icon" href="../pub/skins/offline/images/p16.ico" type="image/x-icon">
  
  <!--HTMLHeader--><style type='text/css'><!--
    ul, ol, pre, dl, p { margin-top:0px; margin-bottom:0px; }
    code.escaped { white-space: nowrap; }
    .vspace { margin-top:1.33em; }
    .indent { margin-left:40px; }
    .outdent { margin-left:40px; text-indent:-40px; }
    a.createlinktext { text-decoration:none; border-bottom:1px dotted gray; }
    a.createlink { text-decoration:none; position:relative; top:-0.5em;
      font-weight:bold; font-size:smaller; border-bottom:none; }
    img { border:0px; }
    .editconflict { color:green; 
    font-style:italic; margin-top:1.33em; margin-bottom:1.33em; }
  
    table.markup { border:2px dotted #ccf; width:90%; }
    td.markup1, td.markup2 { padding-left:10px; padding-right:10px; }
    table.vert td.markup1 { border-bottom:1px solid #ccf; }
    table.horiz td.markup1 { width:23em; border-right:1px solid #ccf; }
    table.markup caption { text-align:left; }
    div.faq p, div.faq pre { margin-left:2em; }
    div.faq p.question { margin:1em 0 0.75em 0; font-weight:bold; }
    div.faqtoc div.faq * { display:none; }
    div.faqtoc div.faq p.question 
      { display:block; font-weight:normal; margin:0.5em 0 0.5em 20px; line-height:normal; }
    div.faqtoc div.faq p.question * { display:inline; }
     
      .frame 
        { border:1px solid #cccccc; padding:4px; background-color:#f9f9f9; }
      .lfloat { float:left; margin-right:0.5em; }
      .rfloat { float:right; margin-left:0.5em; }
  a.varlink { text-decoration:none; }
  
  .sourceblocklink {
    text-align: right;
    font-size: smaller;
  }
  .sourceblocktext {
    padding: 0.5em;
    border: 1px solid #808080;
    color: #000000;
    background-color: #f1f0ed;
  }
  .sourceblocktext div {
    font-family: monospace;
    font-size: small;
    line-height: 1;
    height: 1%;
  }
  .sourceblocktext div.head,
  .sourceblocktext div.foot {
    font: italic medium serif;
    padding: 0.5em;
  }
  
  --></style>  <meta name='robots' content='index,follow' />
  
  
  <link type="text/css" rel="stylesheet" href="../pub/skins/offline/css/base.css">
  <link type="text/css" rel="stylesheet" href="../pub/skins/offline/css/prism.css">
  <link type="text/css" rel="stylesheet" href="../pub/skins/offline/css/prismmanual.css">
  
  </head>
  
  <body text="#000000" bgcolor="#ffffff">
  
  <div id="layout-maincontainer">
  <div id="layout-main">
  
  <div id="prism-mainbox">
  
  <!-- ============================================================================= -->
  
  <!--PageHeaderFmt-->
  <!--/PageHeaderFmt-->
  
  <!--PageTitleFmt-->
    <div id="prism-man-title">
      <p><a class='wikilink' href='Main.html'>The PRISM Language</a> /
  </p><h1>Parallel Composition</h1>
  
    </div>
  <!--PageText-->
  <div id='wikitext'>
  <p>The probabilistic model corresponding to a PRISM language description is constructed as the <em>parallel composition</em> of its modules. In every state of the model, there is a set of commands (belonging to any of the modules) which are enabled, i.e. whose guards are satisfied in that state. The choice between which command is performed (i.e. the <em>scheduling</em>) depends on the model type.
  </p>
  <p class='vspace'>For an MDP, as in <a class='wikilink' href='Example1.html'>Example 1</a>, the choice is <em>nondeterministic</em>. By way of example, consider state <code>(0,0)</code> (i.e.  <code>x=0</code> and <code>y=0</code>). There are two commands enabled, one from each module:
  </p>
  <div class='vspace'></div>
  <div class='sourceblock ' id='sourceblock1'>
    <div class='sourceblocktext'><div class="prism">[] <span class="prismident">x</span>=<span class="prismnum">0</span> -&gt; <span class="prismnum">0.8</span>:(<span class="prismident">x</span>'=<span class="prismnum">0</span>) + <span class="prismnum">0.2</span>:(<span class="prismident">x</span>'=<span class="prismnum">1</span>);<br/>
  </div></div>
    <div class='sourceblocklink'><a href='http://prismmodelchecker.localhost/manual/ThePRISMLanguage/ParallelComposition?action=sourceblock&amp;num=1' type='text/plain'>[&#036;[Get Code]]</a></div>
  </div>
  
  <div class='vspace'></div>
  <div class='sourceblock ' id='sourceblock2'>
    <div class='sourceblocktext'><div class="prism">[] <span class="prismident">y</span>=<span class="prismnum">0</span> -&gt; <span class="prismnum">0.8</span>:(<span class="prismident">y</span>'=<span class="prismnum">0</span>) + <span class="prismnum">0.2</span>:(<span class="prismident">y</span>'=<span class="prismnum">1</span>);<br/>
  </div></div>
    <div class='sourceblocklink'><a href='http://prismmodelchecker.localhost/manual/ThePRISMLanguage/ParallelComposition?action=sourceblock&amp;num=2' type='text/plain'>[&#036;[Get Code]]</a></div>
  </div>
  
  <p class='vspace'>In state <code>(0,0)</code> of the MDP, there would be a nondeterministic choice between these two probability distributions:
  </p>
  <div class='vspace'></div><ul><li><code>0.8:(0,0) + 0.2:(1,0)</code> (module <code>M1</code> moves)
  </li><li><code>0.8:(0,0) + 0.2:(0,1)</code> (module <code>M2</code> moves)
  </li></ul><p class='vspace'>For a DTMC, the choice is <em>probabilistic</em>: each enabled command is selected with equal probability.
  If <a class='wikilink' href='Example1.html'>Example 1</a> was a DTMC, then in state <code>(0,0)</code> of the model
  the following probability distribution would result:
  </p>
  <div class='vspace'></div><ul><li><code>0.8:(0,0) + 0.1:(1,0) + 0.1:(0,1)</code>
  </li></ul><p class='vspace'>For a <a class='wikilink' href='CTMCs.html'>CTMC</a>, as will be discussed shortly,
  the choice is modelled as a "race" between transitions.
  </p>
  <p class='vspace'>See the later sections on "<a class='wikilink' href='Synchronisation.html'>Synchronisation</a>" and "<a class='wikilink' href='ProcessAlgebraOperators.html'>Process Algebra Operators</a>" for other topics related to parallel composition.
  </p>
  </div>
  
  
  <!--PageFooterFmt-->
    <div id='prism-man-footer'>
    </div>
  <!--/PageFooterFmt-->
  
  
  <!-- ============================================================================= -->
  
  </div> <!-- id="prism-mainbox" -->
  
  </div> <!-- id="layout-main" -->
  </div> <!-- id="layout-maincontainer" -->
  
  <div id="layout-leftcol">
  <div id="prism-navbar2">
  
  <h3><a class='wikilink' href='../Main/Main.html'>PRISM Manual</a></h3>
  <p><strong><a class='wikilink' href='Main.html'>The PRISM Language</a></strong>
  </p><ul><li><a class='wikilink' href='Main.html'>Introduction</a>
  </li><li><a class='wikilink' href='Example1.html'>Example 1</a>
  </li><li><a class='wikilink' href='ModelType.html'>Model Type</a>
  </li><li><a class='wikilink' href='ModulesAndVariables.html'>Modules And Variables</a>
  </li><li><a class='wikilink' href='Commands.html'>Commands</a>
  </li><li><a class='selflink' href='ParallelComposition.html'>Parallel Composition</a>
  </li><li><a class='wikilink' href='LocalNondeterminism.html'>Local Nondeterminism</a>
  </li><li><a class='wikilink' href='CTMCs.html'>CTMCs</a>
  </li><li><a class='wikilink' href='Example2.html'>Example 2</a>
  </li><li><a class='wikilink' href='Constants.html'>Constants</a>
  </li><li><a class='wikilink' href='Expressions.html'>Expressions</a>
  </li><li><a class='wikilink' href='Synchronisation.html'>Synchronisation</a>
  </li><li><a class='wikilink' href='ModuleRenaming.html'>Module Renaming</a>
  </li><li><a class='wikilink' href='MultipleInitialStates.html'>Multiple Initial States</a>
  </li><li><a class='wikilink' href='GlobalVariables.html'>Global Variables</a>
  </li><li><a class='wikilink' href='FormulasAndLabels.html'>Formulas And Labels</a>
  </li><li><a class='wikilink' href='PTAs.html'>PTAs</a>
  </li><li><a class='wikilink' href='CostsAndRewards.html'>Costs And Rewards</a>
  </li><li><a class='wikilink' href='ProcessAlgebraOperators.html'>Process Algebra Operators</a>
  </li><li><a class='wikilink' href='PRISMModelFiles.html'>PRISM Model Files</a>
  </li></ul><p>[ <a class='wikilink' href='AllOnOnePage.html'>View all</a> ]
  </p>
  
  
  </div>  <!-- id="prism-navbar2" -->
  </div> <!-- id="layout-leftcol" -->
  
  </body>
  </html>