Skip to content

Commit 04b3deb

Browse files
committed
cleanup
1 parent 2c3689e commit 04b3deb

File tree

1 file changed

+38
-40
lines changed

1 file changed

+38
-40
lines changed

Test/civl/samples/ABD.bpl

Lines changed: 38 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,13 @@ var {:layer 0, 1} replica_store: [ReplicaId]StampedValue;
186186
//////////////////////////////////////////////////////////////////////////
187187
// Yield invariants
188188

189-
yield invariant {:layer 1} Monotonic(cond: bool, ts: TimeStamp, rid: ReplicaId);
189+
yield invariant {:layer 1} Monotonic#1(cond: bool, ts: TimeStamp, rid: ReplicaId);
190190
invariant cond ==> le(ts, replica_store[rid]->ts);
191191

192192
yield invariant {:layer 1} MonotonicAll(old_replica_store: [ReplicaId]StampedValue);
193193
invariant (forall rid: ReplicaId:: IsReplica(rid) ==> le(old_replica_store[rid]->ts, replica_store[rid]->ts));
194194

195-
yield invariant {:layer 1} MonotonicInduction(q: ReplicaSet, ts: TimeStamp, i: int);
195+
yield invariant {:layer 1} MonotonicInduction#1(q: ReplicaSet, ts: TimeStamp, i: int);
196196
invariant (forall rid: ReplicaId:: q[rid] && i <= rid && rid < numReplicas ==> le(ts, replica_store[rid]->ts));
197197

198198
yield invariant {:layer 1} ReplicaInv();
@@ -205,15 +205,15 @@ yield invariant {:layer 1} LastWriteInv({:linear} one_pid: One ProcessId, pid_la
205205
invariant lt(TimeStamp(last_write[one_pid->val], one_pid->val), pid_last_ts);
206206
invariant (forall ts: TimeStamp:: Map_Contains(value_store, ts) && ts->pid == one_pid->val ==> le(ts, pid_last_ts));
207207

208-
yield invariant {:layer 1} ValueStoreInv(ts: TimeStamp, value: Value);
208+
yield invariant {:layer 1} ValueStoreInv#1(ts: TimeStamp, value: Value);
209209
invariant Map_Contains(value_store, ts) && Map_At(value_store, ts) == value;
210210

211211
yield invariant {:layer 1} AddToValueStoreInv({:linear} one_pid: One ProcessId, ts: TimeStamp);
212212
invariant one_pid->val == ts->pid;
213213
invariant !Map_Contains(value_store, ts);
214214

215215
yield invariant {:layer 2} TimeStampQuorum();
216-
invariant (exists {:pool "Q"} q: ReplicaSet:: {:add_to_pool "Q", q} IsQuorum(q) && (forall rid: ReplicaId:: q[rid] ==> le(TS, replica_ts[rid])));
216+
invariant (exists q: ReplicaSet:: IsQuorum(q) && (forall rid: ReplicaId:: q[rid] ==> le(TS, replica_ts[rid])));
217217

218218
yield invariant {:layer 2} Monotonic#2(cond: bool, ts: TimeStamp, rid: ReplicaId);
219219
invariant cond ==> le(ts, replica_ts[rid]);
@@ -236,7 +236,7 @@ yield invariant {:layer 4} Yield#4();
236236
// Procedures and actions
237237

238238
yield procedure {:layer 4} ReadClient({:linear} one_pid: One ProcessId) returns (value: Value)
239-
preserves call ValueStoreInv(LeastTimeStamp(), InitValue);
239+
preserves call ValueStoreInv#1(LeastTimeStamp(), InitValue);
240240
preserves call ReplicaInv();
241241
requires call ValidTimeStamp();
242242
preserves call TimeStampQuorum();
@@ -247,17 +247,16 @@ preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
247247
var {:layer 2, 3} w: ReplicaSet;
248248
var ts: TimeStamp;
249249

250-
par old_ts, w := Begin(one_pid) | ValueStoreInv(LeastTimeStamp(), InitValue) | ValidTimeStamp() | ValueStoreInv#3(LeastTimeStamp(), InitValue);
250+
par old_ts, w := Begin(one_pid) | ValueStoreInv#1(LeastTimeStamp(), InitValue) | ValidTimeStamp() | ValueStoreInv#3(LeastTimeStamp(), InitValue);
251251
call Yield#4();
252252
call q, ts, value := Read(one_pid, old_ts, w);
253-
assume {:add_to_pool "Q", q} true;
254253
call Yield#4();
255254
par End(one_pid, ts);
256255
}
257256

258257
yield procedure {:layer 4} WriteClient({:linear} one_pid: One ProcessId, value: Value, in: ReplicaSet) returns (ts: TimeStamp, out: ReplicaSet)
259-
requires call MonotonicInduction(in, TimeStamp(last_write[one_pid->val], one_pid->val), 0);
260-
ensures call MonotonicInduction(out, ts, 0);
258+
requires call MonotonicInduction#1(in, TimeStamp(last_write[one_pid->val], one_pid->val), 0);
259+
ensures call MonotonicInduction#1(out, ts, 0);
261260
requires call LastWriteInv(one_pid, TimeStamp(last_write[one_pid->val], one_pid->val));
262261
ensures call LastWriteInv(one_pid, ts);
263262
requires call ValidTimeStamp();
@@ -270,7 +269,6 @@ preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
270269
par old_ts, w := Begin(one_pid) | ValidTimeStamp() | ValueStoreInv#3(LeastTimeStamp(), InitValue);
271270
call Yield#4();
272271
call out, ts := Write(one_pid, value, in, old_ts, w);
273-
assume {:add_to_pool "Q", out} true;
274272
call Yield#4();
275273
call End(one_pid, ts);
276274
}
@@ -294,21 +292,21 @@ refines action {:layer 4} _ {
294292
assume Map_Contains(value_store, ts);
295293
value := Map_At(value_store, ts);
296294
}
297-
preserves call ValueStoreInv(LeastTimeStamp(), InitValue);
295+
preserves call ValueStoreInv#1(LeastTimeStamp(), InitValue);
298296
preserves call ReplicaInv();
299297
preserves call AtLeastGlobalTimeStamp(w, old_ts);
300298
preserves call ValidTimeStamp();
301299
preserves call TimeStampQuorum();
302-
requires {:layer 3} IsQuorum(w);
303-
preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
304300
ensures call AtLeastGlobalTimeStamp(q, ts);
305301
ensures {:layer 2} IsQuorum(q);
302+
requires {:layer 3} IsQuorum(w);
303+
preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
306304
{
307305
var {:layer 1} old_replica_store: [ReplicaId]StampedValue;
308306

309307
call {:layer 1} old_replica_store := Copy(replica_store);
310308
call ts, value, q := QueryPhase(old_replica_store, old_ts, w);
311-
par q := UpdatePhase(ts, value) | AtLeastGlobalTimeStamp(w, old_ts) | ValidTimeStamp() | ValueStoreInv(LeastTimeStamp(), InitValue);
309+
par q := UpdatePhase(ts, value) | AtLeastGlobalTimeStamp(w, old_ts) | ValidTimeStamp() | ValueStoreInv#1(LeastTimeStamp(), InitValue);
312310
}
313311

314312
yield procedure {:layer 3} Write({:linear} one_pid: One ProcessId, value: Value, in: ReplicaSet, old_ts: TimeStamp, {:hide} {:layer 2, 3} w: ReplicaSet) returns ( out: ReplicaSet, ts: TimeStamp)
@@ -317,17 +315,17 @@ refines action {:layer 4} _ {
317315
assume !Map_Contains(value_store, ts);
318316
value_store := Map_Update(value_store, ts, value);
319317
}
320-
requires call MonotonicInduction(in, TimeStamp(last_write[one_pid->val], one_pid->val), 0);
321-
ensures call MonotonicInduction(out, ts, 0);
318+
requires call MonotonicInduction#1(in, TimeStamp(last_write[one_pid->val], one_pid->val), 0);
319+
ensures call MonotonicInduction#1(out, ts, 0);
322320
requires call LastWriteInv(one_pid, TimeStamp(last_write[one_pid->val], one_pid->val));
323321
ensures call LastWriteInv(one_pid, ts);
324322
preserves call AtLeastGlobalTimeStamp(w, old_ts);
325323
preserves call ValidTimeStamp();
326324
preserves call TimeStampQuorum();
327-
requires {:layer 3} IsQuorum(w);
328-
preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
329325
ensures call AtLeastGlobalTimeStamp(out, ts);
330326
ensures {:layer 2} IsQuorum(out);
327+
requires {:layer 3} IsQuorum(w);
328+
preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
331329
{
332330
var q: ReplicaSet;
333331
var _value: Value;
@@ -341,13 +339,13 @@ ensures {:layer 2} IsQuorum(out);
341339
}
342340

343341
yield right procedure {:layer 3} QueryPhase({:layer 1} old_replica_store: [ReplicaId]StampedValue, old_ts: TimeStamp, {:layer 2, 3} w: ReplicaSet) returns (max_ts: TimeStamp, max_value: Value, q: ReplicaSet)
344-
preserves call ValueStoreInv(LeastTimeStamp(), InitValue);
342+
preserves call ValueStoreInv#1(LeastTimeStamp(), InitValue);
345343
preserves call ReplicaInv();
346344
preserves call MonotonicAll(old_replica_store);
345+
ensures call ValueStoreInv#1(max_ts, max_value);
346+
ensures {:layer 1} IsQuorum(q) && (forall rid: ReplicaId:: q[rid] ==> le(old_replica_store[rid]->ts, max_ts));
347347
preserves call AtLeastGlobalTimeStamp(w, old_ts);
348348
preserves call ValidTimeStamp();
349-
ensures call ValueStoreInv(max_ts, max_value);
350-
ensures {:layer 1} IsQuorum(q) && (forall rid: ReplicaId:: q[rid] ==> le(old_replica_store[rid]->ts, max_ts));
351349
preserves call TimeStampQuorum();
352350
requires {:layer 3} IsQuorum(w);
353351
preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
@@ -360,13 +358,13 @@ ensures {:layer 3} Map_Contains(value_store, max_ts) && Map_At(value_store, max_
360358

361359
yield right procedure {:layer 3} QueryPhaseHelper(i: int, q: ReplicaSet, {:layer 1} old_replica_store: [ReplicaId]StampedValue, old_ts: TimeStamp, {:layer 2, 3} w: ReplicaSet) returns (max_ts: TimeStamp, max_value: Value)
362360
requires {:layer 1} IsReplica(i) || i == numReplicas;
363-
preserves call ValueStoreInv(LeastTimeStamp(), InitValue);
361+
preserves call ValueStoreInv#1(LeastTimeStamp(), InitValue);
364362
preserves call ReplicaInv();
365363
preserves call MonotonicAll(old_replica_store);
364+
ensures call ValueStoreInv#1(max_ts, max_value);
365+
ensures {:layer 1} (forall rid: ReplicaId:: q[rid] && i <= rid && rid < numReplicas ==> le(old_replica_store[rid]->ts, max_ts));
366366
preserves call AtLeastGlobalTimeStamp(w, old_ts);
367367
preserves call ValidTimeStamp();
368-
ensures call ValueStoreInv(max_ts, max_value);
369-
ensures {:layer 1} (forall rid: ReplicaId:: q[rid] && i <= rid && rid < numReplicas ==> le(old_replica_store[rid]->ts, max_ts));
370368
preserves call TimeStampQuorum();
371369
preserves call ValueStoreInv#3(LeastTimeStamp(), InitValue);
372370
ensures {:layer 3} (exists rid: ReplicaId:: i <= rid && rid < numReplicas && q[rid] && w[rid]) ==> le(old_ts, max_ts);
@@ -392,8 +390,8 @@ ensures {:layer 3} Map_Contains(value_store, max_ts) && Map_At(value_store, max_
392390

393391
yield left procedure {:layer 3} UpdatePhase(ts: TimeStamp, value: Value) returns (q: ReplicaSet)
394392
preserves call ReplicaInv();
395-
preserves call ValueStoreInv(ts, value);
396-
ensures call MonotonicInduction(q, ts, 0);
393+
preserves call ValueStoreInv#1(ts, value);
394+
ensures call MonotonicInduction#1(q, ts, 0);
397395
preserves call TimeStampQuorum();
398396
ensures call AtLeastGlobalTimeStamp(q, ts);
399397
ensures {:layer 2} IsQuorum(q);
@@ -406,8 +404,8 @@ yield left procedure {:layer 3} UpdatePhaseHelper(i: int, ts: TimeStamp, value:
406404
requires {:layer 1} IsReplica(i) || i == numReplicas;
407405
requires {:layer 1} IsQuorum(q);
408406
preserves call ReplicaInv();
409-
preserves call ValueStoreInv(ts, value);
410-
ensures call MonotonicInduction(q, ts, i);
407+
preserves call ValueStoreInv#1(ts, value);
408+
ensures call MonotonicInduction#1(q, ts, i);
411409
preserves call TimeStampQuorum();
412410
ensures call MonotonicInduction#2(q, ts, i);
413411
{
@@ -430,7 +428,7 @@ preserves call TimeStampQuorum();
430428
{
431429
call ts := Begin#0(one_pid);
432430
call {:layer 2} w := CalculateQuorum(replica_ts, ts);
433-
assert {:layer 2} (exists {:pool "Q"} q: ReplicaSet:: IsQuorum(q) && IsSubset(q, w));
431+
assert {:layer 2} (exists q: ReplicaSet:: IsQuorum(q) && IsSubset(q, w));
434432
}
435433

436434
pure procedure {:inline 1} CalculateQuorum(replica_ts: [ReplicaId]TimeStamp, ts: TimeStamp) returns (w: ReplicaSet)
@@ -460,14 +458,14 @@ refines right action {:layer 3} _ {
460458
value := InitValue;
461459
}
462460
}
463-
requires call ValueStoreInv(LeastTimeStamp(), InitValue);
461+
requires call ValueStoreInv#1(LeastTimeStamp(), InitValue);
464462
requires {:layer 1} IsReplica(rid);
465-
requires call Monotonic(true, old_replica_ts, rid);
466-
preserves call AtLeastGlobalTimeStamp(w, old_ts);
467-
preserves call ValidTimeStamp();
463+
requires call Monotonic#1(true, old_replica_ts, rid);
468464
preserves call ReplicaInv();
469-
ensures call ValueStoreInv(ts, value);
465+
ensures call ValueStoreInv#1(ts, value);
470466
ensures {:layer 1} q[rid] ==> le(old_replica_ts, ts);
467+
preserves call AtLeastGlobalTimeStamp(w, old_ts);
468+
preserves call ValidTimeStamp();
471469
preserves call TimeStampQuorum();
472470
{
473471
if (q[rid])
@@ -492,8 +490,8 @@ refines left action {:layer 3} _ {
492490
}
493491
requires {:layer 1} IsReplica(rid);
494492
preserves call ReplicaInv();
495-
preserves call ValueStoreInv(ts, value);
496-
ensures call Monotonic(q[rid], ts, rid);
493+
preserves call ValueStoreInv#1(ts, value);
494+
ensures call Monotonic#1(q[rid], ts, rid);
497495
ensures call Monotonic#2(q[rid], ts, rid);
498496
preserves call TimeStampQuorum();
499497
{
@@ -511,9 +509,9 @@ refines action {:layer 2} _ {
511509
}
512510
requires {:layer 1} IsReplica(rid);
513511
preserves call ReplicaInv();
514-
requires call Monotonic(true, old_replica_ts, rid);
512+
requires call Monotonic#1(true, old_replica_ts, rid);
515513
ensures {:layer 1} le(old_replica_ts, ts);
516-
ensures call ValueStoreInv(ts, value);
514+
ensures call ValueStoreInv#1(ts, value);
517515
{
518516
call ts, value := Query#0(rid);
519517
}
@@ -539,8 +537,8 @@ refines action {:layer 2} _ {
539537
}
540538
requires {:layer 1} IsReplica(rid);
541539
preserves call ReplicaInv();
542-
preserves call ValueStoreInv(ts, value);
543-
ensures call Monotonic(true, ts, rid);
540+
preserves call ValueStoreInv#1(ts, value);
541+
ensures call Monotonic#1(true, ts, rid);
544542
{
545543
call Update#0(rid, ts, value);
546544
call {:layer 1} replica_ts := Copy(replica_ts[rid := replica_store[rid]->ts]);

0 commit comments

Comments
 (0)