Unfortunately we are currently unable to provide the source or binaries
for our Alive
code-to-code translator, nor the Hwsw
asynchronous
program analysis tool. We have included here the source code of examples
used in the experiments of our submission to SAS 2012. Our examples are
coded as Boogie programs. Given a source file P.bpl
, we have included
the following:
The output of our Alive
code-to-code translation: P.alive.bpl
The configuration flags used in our analysis tool: P.config
We have applied the Alive
and Hwsw
tools as follows. First we
translate P.bpl
into P.alive.bpl
:
Alive P.bpl [/fair]
For a given program P.bpl
, the assertion added in P.alive.bpl
can be violated if and only if there exists a (fair, when Alive is
passed the /fair
flag) nonterminating execution in P.bpl
.
Given the translated program P.alive.bpl
, we run our Hwsw
asynchronous program analysis tool to detect whether the added
assertion can be violated:
Hwsw P.alive.bpl /flags:P.config
As our analysis tool is based on bounded verification, we must
specify bounds on, e.g., maximum recursion depth, and a bound on
the amount of interleaving / reordering between asynchronous tasks.
All of the parameters passed to Hwsw
are listed in P.config
.
The result of Hwsw
is either No bugs found
, which means that
we are unable to conclude whether P.bpl
has a nonterminating
execution, or True bug
, in which case Hwsw
outputs a trace of
P.alive.bpl
witnessing a periodic nonterminating execution of
P.bpl
.
The programs used in our experiments are listed below.
PingPong / bpl / alive / flags
PingPong-mod2 / bpl / alive / flags
PingPong-mod2-1md / bpl / alive / flags
PingPong-mod3 / bpl / alive / flags
PingPong-mod3-1md / bpl / alive / flags
PingPong-mod3-2md / bpl / alive / flags
PingPongPung / bpl / alive / flags
PingPongPung-1md / bpl / alive / flags
SpanningTree-bug / bpl / alive / flags
SpanningTree-correct / bpl / alive / flags
Bfs-correct / bpl / alive / flags
BellmanFord-bug / bpl / alive / flags
BellmanFord-correct / bpl / alive / flags