Blame view

prism-4.3-linux64/doc/manual/ThePRISMLanguage/MultipleInitialStates.html 7.6 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
181
182
183
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">
  
  <html>
  <head>
  
  <title>
  PRISM Manual | ThePRISMLanguage / MultipleInitialStates 
  </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>Multiple Initial States</h1>
  
    </div>
  <!--PageText-->
  <div id='wikitext'>
  <p>Typically, a <a class='wikilink' href='ModulesAndVariables.html'>variable</a> declaration
  specifies the initial value for that variable.
  The <em>initial state</em> for the model is then defined by the initial value for all variables.
  It is possible, however, to specify that a model has <em>multiple</em> initial states.
  This is done using the <code><strong>init</strong>...<strong>endinit</strong></code> construct,
  which can be placed anywhere in the file except within a module definition,
  and removing any initial values from variable declarations.
  Between the <code><strong>init</strong></code> and <code><strong>endinit</strong></code> keywords, there should be a
  predicate over all the variables of the model.
  Any state which satisfies this predicate is an initial state.
  </p>
  <p class='vspace'>Consider again <a class='wikilink' href='Example1.html'>Example 1</a>.
  As it stands, there is a single initial state <code>(0,0)</code> (i.e.  <code>x=0</code> and <code>y=0</code>).
  If we remove the <code><strong>init</strong> 0</code> part of both variable declarations
  and add the following to the end of the file:
  </p>
  <div class='vspace'></div>
  <div class='sourceblock ' id='sourceblock1'>
    <div class='sourceblocktext'><div class="prism"><span class="prismkeyword">init</span> <span class="prismident">x</span>=<span class="prismnum">0</span> <span class="prismkeyword">endinit</span><br/>
  </div></div>
    <div class='sourceblocklink'><a href='http://prismmodelchecker.localhost/manual/ThePRISMLanguage/MultipleInitialStates?action=sourceblock&amp;num=1' type='text/plain'>[&#036;[Get Code]]</a></div>
  </div>
  
  <p class='vspace'>there will be three initial states: <code>(0,0)</code>, <code>(0,1)</code> and <code>(0,2)</code>.
  Similarly, we could instead add:
  </p>
  <div class='vspace'></div>
  <div class='sourceblock ' id='sourceblock2'>
    <div class='sourceblocktext'><div class="prism"><span class="prismkeyword">init</span> <span class="prismident">x</span>+<span class="prismident">y</span>=<span class="prismnum">1</span> <span class="prismkeyword">endinit</span><br/>
  </div></div>
    <div class='sourceblocklink'><a href='http://prismmodelchecker.localhost/manual/ThePRISMLanguage/MultipleInitialStates?action=sourceblock&amp;num=2' type='text/plain'>[&#036;[Get Code]]</a></div>
  </div>
  
  <p class='vspace'>in which case there would be two initial states: <code>(0,1)</code> and <code>(1,0)</code>.
  </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='wikilink' 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='selflink' 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>