@@ -143,36 +143,21 @@ CONSTANTS BUFFER_SIZE, NUM_CONSUMERS, PRODUCER
143
143
144
144
\* BEGIN TRANSLATION PCal-e64ab9284c1a4c5172f564abb6f099c4
145
145
CONSTANT defaultInitValue
146
- VARIABLES network , processor , stream , netWrite , netRead , procWrite , netWrite0 ,
147
- procWrite0 , netRead0 , netWrite1 , sRead , sWrite , netWrite2 , sWrite0 ,
148
- pc
146
+ VARIABLES network , processor , stream , pc
149
147
150
148
(* define statement *)
151
149
NUM_NODES == ( NUM_CONSUMERS ) + ( 1 )
152
150
153
151
VARIABLE requester
154
152
155
- vars == << network , processor , stream , netWrite , netRead , procWrite ,
156
- netWrite0 , procWrite0 , netRead0 , netWrite1 , sRead , sWrite ,
157
- netWrite2 , sWrite0 , pc , requester >>
153
+ vars == << network , processor , stream , pc , requester >>
158
154
159
155
ProcSet == ( ( 1 ) .. ( NUM_CONSUMERS ) ) \cup ( { PRODUCER } )
160
156
161
157
Init == (* Global variables *)
162
158
/\ network = [ id \in ( 0 ) .. ( ( NUM_NODES ) - ( 1 ) ) |-> << >> ]
163
159
/\ processor = 0
164
160
/\ stream = 0
165
- /\ netWrite = defaultInitValue
166
- /\ netRead = defaultInitValue
167
- /\ procWrite = defaultInitValue
168
- /\ netWrite0 = defaultInitValue
169
- /\ procWrite0 = defaultInitValue
170
- /\ netRead0 = defaultInitValue
171
- /\ netWrite1 = defaultInitValue
172
- /\ sRead = defaultInitValue
173
- /\ sWrite = defaultInitValue
174
- /\ netWrite2 = defaultInitValue
175
- /\ sWrite0 = defaultInitValue
176
161
(* Process Producer *)
177
162
/\ requester = [ self \in { PRODUCER } |-> defaultInitValue ]
178
163
/\ pc = [ self \in ProcSet |-> CASE self \in ( 1 ) .. ( NUM_CONSUMERS ) -> "c"
@@ -181,76 +166,50 @@ Init == (* Global variables *)
181
166
c ( self ) == /\ pc [ self ] = "c"
182
167
/\ IF TRUE
183
168
THEN /\ pc ' = [ pc EXCEPT ! [ self ] = "c1" ]
184
- /\ UNCHANGED << network , processor , netWrite0 ,
185
- procWrite0 >>
186
- ELSE /\ netWrite0 ' = network
187
- /\ procWrite0 ' = processor
188
- /\ network ' = netWrite0 '
189
- /\ processor ' = procWrite0 '
190
- /\ pc ' = [ pc EXCEPT ! [ self ] = "Done" ]
191
- /\ UNCHANGED << stream , netWrite , netRead , procWrite , netRead0 ,
192
- netWrite1 , sRead , sWrite , netWrite2 , sWrite0 ,
193
- requester >>
169
+ ELSE /\ pc ' = [ pc EXCEPT ! [ self ] = "Done" ]
170
+ /\ UNCHANGED << network , processor , stream , requester >>
194
171
195
172
c1 ( self ) == /\ pc [ self ] = "c1"
196
- /\ ( Len ( network [ PRODUCER ] ) ) < ( BUFFER_SIZE )
197
- /\ netWrite ' = [ network EXCEPT ! [ PRODUCER ] = Append ( network [ PRODUCER ] , self ) ]
198
- /\ network ' = netWrite '
199
- /\ pc ' = [ pc EXCEPT ! [ self ] = "c2" ]
200
- /\ UNCHANGED << processor , stream , netRead , procWrite , netWrite0 ,
201
- procWrite0 , netRead0 , netWrite1 , sRead , sWrite ,
202
- netWrite2 , sWrite0 , requester >>
173
+ /\ LET value1 == self IN
174
+ /\ ( Len ( ( network ) [ PRODUCER ] ) ) < ( BUFFER_SIZE )
175
+ /\ network ' = [ network EXCEPT ! [ PRODUCER ] = Append ( ( network ) [ PRODUCER ] , value1 ) ]
176
+ /\ pc ' = [ pc EXCEPT ! [ self ] = "c2" ]
177
+ /\ UNCHANGED << processor , stream , requester >>
203
178
204
179
c2 ( self ) == /\ pc [ self ] = "c2"
205
- /\ ( Len ( network [ self ] ) ) > ( 0 )
206
- /\ LET msg0 == Head ( network [ self ] ) IN
207
- /\ netWrite ' = [ network EXCEPT ! [ self ] = Tail ( network [ self ] ) ]
208
- /\ netRead ' = msg0
209
- /\ procWrite ' = netRead '
210
- /\ network ' = netWrite '
211
- /\ processor ' = procWrite '
212
- /\ pc ' = [ pc EXCEPT ! [ self ] = "c" ]
213
- /\ UNCHANGED << stream , netWrite0 , procWrite0 , netRead0 , netWrite1 ,
214
- sRead , sWrite , netWrite2 , sWrite0 , requester >>
180
+ /\ ( Len ( ( network ) [ self ] ) ) > ( 0 )
181
+ /\ LET msg00 == Head ( ( network ) [ self ] ) IN
182
+ /\ network ' = [ network EXCEPT ! [ self ] = Tail ( ( network ) [ self ] ) ]
183
+ /\ LET yielded_network1 == msg00 IN
184
+ /\ processor ' = yielded_network1
185
+ /\ pc ' = [ pc EXCEPT ! [ self ] = "c" ]
186
+ /\ UNCHANGED << stream , requester >>
215
187
216
188
Consumer ( self ) == c ( self ) \/ c1 ( self ) \/ c2 ( self )
217
189
218
190
p ( self ) == /\ pc [ self ] = "p"
219
191
/\ IF TRUE
220
192
THEN /\ pc ' = [ pc EXCEPT ! [ self ] = "p1" ]
221
- /\ UNCHANGED << network , stream , netWrite2 , sWrite0 >>
222
- ELSE /\ netWrite2 ' = network
223
- /\ sWrite0 ' = stream
224
- /\ network ' = netWrite2 '
225
- /\ stream ' = sWrite0 '
226
- /\ pc ' = [ pc EXCEPT ! [ self ] = "Done" ]
227
- /\ UNCHANGED << processor , netWrite , netRead , procWrite , netWrite0 ,
228
- procWrite0 , netRead0 , netWrite1 , sRead , sWrite ,
229
- requester >>
193
+ ELSE /\ pc ' = [ pc EXCEPT ! [ self ] = "Done" ]
194
+ /\ UNCHANGED << network , processor , stream , requester >>
230
195
231
196
p1 ( self ) == /\ pc [ self ] = "p1"
232
- /\ ( Len ( network [ self ] ) ) > ( 0 )
233
- /\ LET msg1 == Head ( network [ self ] ) IN
234
- /\ netWrite1 ' = [ network EXCEPT ! [ self ] = Tail ( network [ self ] ) ]
235
- /\ netRead0 ' = msg1
236
- /\ requester ' = [ requester EXCEPT ! [ self ] = netRead0 ' ]
237
- /\ network ' = netWrite1 '
238
- /\ pc ' = [ pc EXCEPT ! [ self ] = "p2" ]
239
- /\ UNCHANGED << processor , stream , netWrite , netRead , procWrite ,
240
- netWrite0 , procWrite0 , sRead , sWrite , netWrite2 ,
241
- sWrite0 >>
197
+ /\ ( Len ( ( network ) [ self ] ) ) > ( 0 )
198
+ /\ LET msg10 == Head ( ( network ) [ self ] ) IN
199
+ /\ network ' = [ network EXCEPT ! [ self ] = Tail ( ( network ) [ self ] ) ]
200
+ /\ LET yielded_network00 == msg10 IN
201
+ /\ requester ' = [ requester EXCEPT ! [ self ] = yielded_network00 ]
202
+ /\ pc ' = [ pc EXCEPT ! [ self ] = "p2" ]
203
+ /\ UNCHANGED << processor , stream >>
242
204
243
205
p2 ( self ) == /\ pc [ self ] = "p2"
244
- /\ sWrite ' = ( ( stream ) + ( 1 ) ) % ( BUFFER_SIZE )
245
- /\ sRead ' = sWrite '
246
- /\ ( Len ( network [ requester [ self ] ] ) ) < ( BUFFER_SIZE )
247
- /\ netWrite1 ' = [ network EXCEPT ! [ requester [ self ] ] = Append ( network [ requester [ self ] ] , sRead ' ) ]
248
- /\ network ' = netWrite1 '
249
- /\ stream ' = sWrite '
250
- /\ pc ' = [ pc EXCEPT ! [ self ] = "p" ]
251
- /\ UNCHANGED << processor , netWrite , netRead , procWrite , netWrite0 ,
252
- procWrite0 , netRead0 , netWrite2 , sWrite0 ,
253
- requester >>
206
+ /\ stream ' = ( ( stream ) + ( 1 ) ) % ( BUFFER_SIZE )
207
+ /\ LET yielded_stream0 == stream ' IN
208
+ LET value00 == yielded_stream0 IN
209
+ /\ ( Len ( ( network ) [ requester [ self ] ] ) ) < ( BUFFER_SIZE )
210
+ /\ network ' = [ network EXCEPT ! [ requester [ self ] ] = Append ( ( network ) [ requester [ self ] ] , value00 ) ]
211
+ /\ pc ' = [ pc EXCEPT ! [ self ] = "p" ]
212
+ /\ UNCHANGED << processor , requester >>
254
213
255
214
Producer ( self ) == p ( self ) \/ p1 ( self ) \/ p2 ( self )
256
215
0 commit comments