source: CIVL/README@ b1b88d8

1.23 2.0 main test-branch
Last change on this file since b1b88d8 was 3783023, checked in by Manchun Zheng <zmanchun@…>, 11 years ago

dummy commit to test the post commit hook

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@2279 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 10.5 KB
Line 
1 CIVL: The Concurrency Intermediate Verification Language
2 v1.0
3
4------------------------------ Overview -------------------------------
5
6CIVL is a framework encompassing...
7
8 * a programming language, CIVL-C, which adds to C a number of
9 concurrency primitives, as well as the ability to define
10 functions in any scope. Together, these features make for
11 a very expressive concurrent language that can faithfully
12 represent programs using various APIs and parallel languages,
13 such as MPI, OpenMP, Pthread, CUDA, and Chapel. CIVL-C also
14 provides a number of primitives supporting verification.
15 * a model checker which uses symbolic execution to verify a
16 number of safety properties of CIVL-C programs. The model
17 checker can also be used to verify that two CIVL-C programs
18 are functionally equivalent.
19 * a number of translators from various commonly-used languages
20 and APIs to CIVL-C. (This part is still a work in progress.)
21
22CIVL is developed by the Verified Software Laboratory at the
23University of Delaware Department of Computer Science.
24For more information, visit http://vsl.cis.udel.edu/civl
25
26Developers:
27
28Matthew B. Dwyer
29John Edenhofner
30Ziqing Luo
31Andre Marianiello
32Michael Rogers
33Stephen F. Siegel
34Manchun Zheng
35Timothy K. Zirkel
36
37------------------------------- License -------------------------------
38
39CIVL is open source software distributed under the GNU
40General Public License. However, the libraries used by CIVL
41(and incorporated into the complete distribution) use various
42licenses. See directory licenses for the license of each component.
43
44-------------------------- Updates from v 0.17 -------------------------
45
461. Adding supports for MPI collective routines and multiple communicators;
47
482. Adding verification of potential deadlocks;
49
503. Improving the printing of states and error messages;
51
524. Simplifying the language by changing $assert and $assume to
53 be system functions of civlc.cvh.
54
55------------------------- Binary Installation -------------------------
56
57For most users, this will be the easiest way to install and
58use CIVL. Developers should instead follow the instructions for
59"Source Installation" below.
60
611. Install at least one of the theorem provers below.
62The more provers you install, the more precise CIVL analysis will
63be. Note that CIVL only requires the binary executable
64version of each prover; you can ignore the libraries, various
65API bindings, etc. You just need to ensure that
66each binary executable is in your PATH when you run
67"civl config". The currently supported provers are:
68
69 - CVC3, http://www.cs.nyu.edu/acsys/cvc3/download.html
70 download the latest, optimized build with static library
71 and executable for your OS. Place the executable file
72 "cvc3" in your PATH. You can discard everything else.
73 Alternatively, on some linux systems, CVC3 can be installed
74 using the package manager via "sudo apt-get install cvc3".
75 This will place cvc3 in /usr/bin.
76
77 - CVC4, http://cvc4.cs.nyu.edu/downloads/
78
79 - Z3, http://z3.codeplex.com/SourceControl/latest
80
812. Install a Java 7 SDK if you have not already. Go to
82
83 http://www.oracle.com/technetwork/java/javase/downloads/
84
85for the latest from Oracle. On linux, you can instead use
86the package manager:
87
88 sudo apt-get install openjdk-7-jdk
89
903. Download the CIVL distribution from http://vsl.cis.udel.edu/civl.
91
924. Unzip and untar the CIVL distribution file if this
93does not happen automatically. This should result in a
94folder named CIVL-TAG, where TAG is some version ID string.
95This folder contains the following:
96
97 - README : this file
98 - bin : containing one executable sh script called "civl"
99 - lib : containing civl-TAG.jar
100 - doc : containing the manual and the tutorial of CIVL
101 - emacs : CIVL-C emacs mode and its installation instructions
102 - licenses : licenses for CIVL and included libraries
103 - examples : some example CIVL programs
104
1055. You can move the CIVL folder wherever you want.
106The JAR file in the lib directory is all you need to run CIVL.
107You may also move this jar file wherever you want. You
108run CIVL by typing a command that begins
109"java -jar /path/to/civl-TAG.jar ...". For convenience
110you may instead use the shell script "civl" in bin,
111which allows you to replace "java -jar /path/to/civl-TAG.jar"
112with just "civl" on the command line. Simply edit the civl script
113to reflect the path to civl-TAG.jar and place the script
114somewhere in your PATH. Alternatively, you can just define
115an alias in your .profile, .bash_profile, or equivalent, such as
116
117alias civl='java -jar /path/to/civl-TAG.jar'
118
119In the following, we will assume that you have defined
120a command "civl" in one these ways.
121
1226. Type "civl config". This should report that it found
123the theorem provers you installed (and are in your PATH).
124It should create a file called ".sarl" in your home directory
125which you can also edit by hand.
126
127
128------------------------- Source Installation -------------------------
129
130We recommend using the Eclipse IDE for Java/EE developers.
131
1320. Install theorem provers following the directions above.
133Install Eclipse IDE for Java/EE developers if you have not already
134done so.
135
1361. Install an SVN plugin in Eclipse (such as Subversive) if you have
137 not already.
138
1392. Install prerequisite projects ABC, SARL and GMC.
140 Make sure that the three projects are put in the workspace
141 directory where CIVL will be created. Specifically:
142
143 a. Install the symbolic algebra and reasoning library SARL.
144 In Eclipse, select New Project...from SVN, use the archive
145 svn://vsl.cis.udel.edu/sarl. After entering that, open it
146 up and select the "trunk". After checking out trunk, name
147 the project "SARL". Then follow the instructions in the INSTALL
148 file for Eclipse installation. Build the sarl.jar from within
149 Eclipse by right-clicking (or ctrl-clicking) on the build.xml
150 file and selecting Run As->Ant Build.
151
152 b. Install the C front-end ABC. In Eclipse,
153 select New Project...from SVN, use the archive
154 svn://vsl.cis.udel.edu/abc. After entering that, open it
155 up and select the "trunk". After checking out trunk, name
156 the project "ABC". Then follow the instructions in the INSTALL
157 file for Eclipse installation. Build the abc.jar from within
158 Eclipse by right-clicking (or ctrl-clicking on OS X) on the
159 build.xml file and selecting Run As->Ant Build.
160
161 c. Install the generic model checking utilities package GMC.
162 In Eclipse, select New Project...from SVN, use the archive
163 svn://vsl.cis.udel.edu/gmc. After entering that, open it
164 up and select the "trunk". After checking out trunk, name
165 the project "GMC". Build the gmc.jar from within Eclipse
166 by right-clicking (or ctrl-clicking) on the build.xml file and
167 selecting Run As->Ant Build.
168
1693. From within Eclipse, select New Project...from SVN. The archive is
170 svn://vsl.cis.udel.edu/civl. After entering that, open it up and
171 select the "trunk". (It is simplest to just check out the trunk for
172 the Eclipse project.)
173
1744. Check out the trunk, and create the project using the New Java
175 Project Wizard as usual, naming it "CIVL". The .project, .classpath,
176 and other Eclipse meta-data are already in the SVN archive,
177 saving you a bunch of work.
178
1795. If you already have the VSL dependencies library, you may
180 skip this step. Otherwise, download the tgz archive of VSL
181 dependencies from http://vsl.cis.udel.edu/tools/vsl_depend
182 Unzip the .tgz file and you will have the folder vsl.
183 Move vsl to /opt.
184 Note: you probably will need to use sudo for this.
185 Also, if you don't already have a directory called /opt,
186 you will have to create it with "mkdir /opt". Also, if you
187 don't want to use /opt for some reason, you can use any
188 directory you want; just modify the instructions below
189 accordingly.
190
191 Suppose that you put the .tgz file (or .tar file if your browser
192 unzipped it automatically to a .tar file) in the directory DOWNLOAD.
193 You can use the following commands:
194
195 $ cd DOWNLOAD
196 $ tar xzf YourTgzOrTarFile vsl
197 $ sudo mv vsl /opt
198
199 (Leave out the "x" in the tar command if the file was already
200 unzipped.) Now you can type "ls /opt/vsl", and the output
201 should be
202
203 README.txt lib licenses src
204
2056. If default_build.properties matches the configuration of your system,
206 then you can skip this step. Otherwise, you may need to create a file
207 build.properties in the directory containing build.xml.
208 Copy and paste the content from any file under properties, edit each
209 entry with the path configured in your system. The newly created file
210 build.properties will automatically be used by ant to to build the
211 .jar file.
212
2137. Navigate to Preferences -> Java -> Build Path -> ClassPath
214 Variables, and then select New to create a classpath variable VSL,
215 and specify its value to be /opt/vsl.
216
2178. Do a clean build. Everything should compile. Generate the civl.jar
218 by right-clicking (or ctrl-click on OS X) the build.xml file and
219 Run As->Ant Build.
220
2219. Somewhere on your system, create a plain text file containing
222 exactly the following two lines:
223
224#!/bin/sh
225java -jar /Path/To/Your/workspace/CIVL/civl.jar $@
226
227 where "/Path/To/Your/workspace" is replaced with the path
228 to your Eclipse workspace directory. Name this file "civl",
229 put it in your PATH, and make it executable (chmod ugo+x civl).
230 Alternatively, you can define an alias in your .profile,
231 .bash_profile, .bashrc, or equivalent:
232
233alias civl='java -jar /Path/To/Your/workspace/CIVL/civl.jar'
234
23510. From a terminal window, execute "civl config". This should
236 find the theorem provers in your PATH and create a file
237 .sarl in your home directory.
238
23911. In Eclipse, navigate to "Run->Run Configurations... Create a new
240 JUnit configuration."
241 Name it "CIVL Regression Tests". Select "Run all tests in the
242 selected project..." and navigate to the folder "test/regress"
243 in the CIVL project. The Test runner should be JUnit 4. Under the
244 Arguments tab, type "-ea" (without the quotes) in the VM arguments
245 area (to enable assertion checking).
246
24712. An example of how to set up a single test from within Eclipse:
248 create a new Run Configuration via the Run->Run
249 Configurations... menu. Create a new "Java Application"
250 configuration. Call it "CIVL barrier2". The Project is CIVL. The
251 main class is edu.udel.cis.vsl.civl.CIVL. Under the Arguments tab,
252 set the Program arguments to
253
254 verify examples/concurrency/barrier2.cvl
255
256 Modify the VM arguments as in the step above. You should now be
257 able to run the test by clicking "Run".
258
Note: See TracBrowser for help on using the repository browser.