@@ -10,14 +10,14 @@ Tatlock, conditionally accepted for publication at POPL 2018.
1010## Building the Project
1111
1212A 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
2222If 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
5557If 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
6264We 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
138142that uses the calculator to evaluate arithmetic expressions and prove
139143its correctness. As a more involved example, you could define a new
140144protocol 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```
156163client 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
166180Section 5.2 and Table 1 describe the size of our development. Those
167181were obtained by using the ` coqwc ` tool on manually dissected files,
168182according to our vision of what should count as a program, spec, or a proof.
169183These 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