Skip to content

Commit 5bbc233

Browse files
committed
more artifact instructions
1 parent a30724a commit 5bbc233

File tree

1 file changed

+23
-9
lines changed

1 file changed

+23
-9
lines changed

README.md

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ Tatlock, conditionally accepted for publication at POPL 2018.
1010
## Building the Project
1111

1212
A VM has been provided for your convenience and is described below. If
13-
you would like to use your own machine, the following dependencies are
14-
necessary.
13+
you would like to use your own machine instead, you should clone this branch of
14+
the GitHub repository; the following dependencies are necessary.
1515

1616
### Requirements
1717

1818
* Coq 8.6 (available from https://coq.inria.fr/download)
1919
* Mathematical Components 1.6.1 (http://math-comp.github.io/math-comp/)
20-
* OCaml 4.0.1 or later (to compile and run the extracted applications)
20+
* OCaml 4.02.3 or later (to compile and run the extracted applications)
2121

2222
If Coq is not installed such that its binaries like `coqc` and
2323
`coq_makefile` are in the `PATH`, then the `COQBIN` environment variable
@@ -50,7 +50,9 @@ export COQBIN=/home/user/coq/bin/
5050

5151
## VM Instructions
5252

53-
Please download [the virtual machine]().
53+
Please download
54+
[the virtual machine](http://homes.cs.washington.edu/~jrw12/popl18-disel-artifact.ova),
55+
import it into VirtualBox, and boot the machine.
5456

5557
If prompted for login information, both the username and password are
5658
"popl" (without quotes).
@@ -60,9 +62,11 @@ ssreflect have been installed, and a checkout of Disel is present in
6062
`~/disel`.
6163

6264
We recommend checking the proofs using the provided Makefile and
63-
running the two extracted applications.
65+
running the two extracted applications. Additionally, you might be interested
66+
to compare the definitions and theorems from some parts of the paper to their
67+
formalizations in Coq.
6468

65-
Checking the proofs can be accomplished by
69+
Checking the proofs can be accomplished by opening a terminal and running
6670

6771
cd ~/disel
6872
make clean; make -j 4
@@ -138,7 +142,8 @@ examples or trying your own. For example, you could build an application
138142
that uses the calculator to evaluate arithmetic expressions and prove
139143
its correctness. As a more involved example, you could define a new
140144
protocol for leader election in a ring and prove that at most one node
141-
becomes leader.
145+
becomes leader. To get started, we recommend following the Calculator example
146+
and modifying it as necessary.
142147

143148
## Extracting and Running Disel Programs
144149

@@ -150,21 +155,30 @@ You can build the two examples as follows.
150155
(Note that all the proofs will be checked as well.) Then run
151156
`~/disel/scripts/calculator.sh` to execute the system in three processes
152157
locally. The system will make several addition requests to a delegating
153-
calculator. The expected output of the script ends with the line
158+
calculator. (See the definition of `client_input` in
159+
`Examples/Calculator/SimpleCalculatorApp.v`.) A log of messages is
160+
printed to the console. The expected output of the script ends with the line
154161

155162
```
156163
client got result list [([1; 2], 3); ([3; 4], 7); ([5; 6], 11); ([7; 8], 15); ([9; 10], 19)]
157164
```
165+
158166
which indicates 1 + 2 = 3, ..., 9 + 10 = 19.
159167

160168
- Run `make TPCMain.d.byte` from the root folder to build the
161169
Two-Phase Commit application. Then run `./scripts/tpc.sh` to
162170
execute the system in four processes on the local machine.
171+
The system will achieve consensus on several values. (See
172+
the definition of `data_seq` in `Examples/TwoPhaseCommit/SimpleTPCApp.v`.)
173+
Each participant votes on whether to commit the value or abort it.
174+
(See the definitions of `choice_seq1`, `choice_seq2`, and `choice_seq3`.)
175+
A log of messages from the coordinator's point of view is printed to the
176+
console. When the four commits have been made, the nodes coordinator exit.
163177

164178
## Proof Size Statistics
165179

166180
Section 5.2 and Table 1 describe the size of our development. Those
167181
were obtained by using the `coqwc` tool on manually dissected files,
168182
according to our vision of what should count as a program, spec, or a proof.
169183
These numbers might slightly differ from reported in the paper due to
170-
the evolution of the project since the last submission.
184+
the evolution of the project since the submission.

0 commit comments

Comments
 (0)