Skip to content

Commit

Permalink
second commit
Browse files Browse the repository at this point in the history
  • Loading branch information
shazqadeer committed May 12, 2024
1 parent 850d500 commit 303806a
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions Test/datatypes/node-client.bpl
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
// RUN: %parallel-boogie /lib:base /lib:node "%s" > "%t"
// RUN: %diff "%s.expect" "%t"

datatype Treiber<T> { Treiber(top: Option (Loc (Node T)), stack: Map (Loc (Node T)) (Node T)) }
type TreiberNode _;
type LocTreiberNode T = Loc (TreiberNode T);
type StackElem T = Node (LocTreiberNode T) T;
type StackMap T = Map (LocTreiberNode T) (StackElem T);
datatype Treiber<T> { Treiber(top: Option (LocTreiberNode T), {:linear} stack: StackMap T) }

type X;
var ts: Map (Loc (Treiber X)) (Treiber X);
Expand All @@ -24,7 +28,7 @@ procedure {:inline 1} AtomicPopIntermediate(loc_t: Loc (Treiber X)) returns (x:
modifies ts;
{
var treiber: Treiber X;
var loc_n_opt: Option (Loc (Node X));
var loc_n_opt: Option (LocTreiberNode X);
assert Map_Contains(ts, loc_t);
treiber := Map_At(ts, loc_t);
assume treiber->top is Some && Map_Contains(treiber->stack, treiber->top->t);
Expand All @@ -37,7 +41,7 @@ procedure {:inline 1} AtomicPushIntermediate(loc_t: Loc (Treiber X), x: X)
modifies ts;
{
var treiber: Treiber X;
var loc_n: Loc (Node X);
var loc_n: LocTreiberNode X;
assert Map_Contains(ts, loc_t);
treiber := Map_At(ts, loc_t);
assume !Map_Contains(treiber->stack, loc_n);
Expand Down

0 comments on commit 303806a

Please sign in to comment.