| 1 | # The CIVL Model Checker
|
|---|
| 2 |
|
|---|
| 3 | ## About
|
|---|
| 4 |
|
|---|
| 5 | The CIVL model checker is a verification tool for sequential or parallel
|
|---|
| 6 | programs.
|
|---|
| 7 | It targets primarily C programs, including parallel C programs that use
|
|---|
| 8 | OpenMP or MPI, and CUDA-C programs.
|
|---|
| 9 | The general verification approach is based on model checking and symbolic execution.
|
|---|
| 10 |
|
|---|
| 11 | The verifier uses a concurrency intermediate verification language, CIVL-C.
|
|---|
| 12 | Users may write in CIVL-C directly; this is a good way to prototype
|
|---|
| 13 | algorithms. One may also start from standard C (or CUDA-C), which
|
|---|
| 14 | the tool first translates to CIVL-C. CIVL may also be applied to programs
|
|---|
| 15 | composed of multiple translation units, some of which are in CIVL-C
|
|---|
| 16 | and others in C or CUDA-C.
|
|---|
| 17 |
|
|---|
| 18 | CIVL can verify a number of safety properties, including absence of assertion
|
|---|
| 19 | violations, deadlocks, memory leaks, illegal pointer dereferences, out-of-bound
|
|---|
| 20 | array indexes, and divisions by zero. In most cases, this requires placing
|
|---|
| 21 | relatively small bounds on the size of inputs and/or the numbers of threads or
|
|---|
| 22 | processes. In any case, when a violation is found, detailed diagnostic
|
|---|
| 23 | information is provided, including a (minimal) execution trace terminating
|
|---|
| 24 | in a violating state.
|
|---|
| 25 |
|
|---|
| 26 | CIVL currently supports only subsets of the languages and language
|
|---|
| 27 | extensions mentioned above. We are continually expanding these subsets,
|
|---|
| 28 | prioritizing the most commonly-used language features.
|
|---|
| 29 |
|
|---|
| 30 |
|
|---|
| 31 | ## Downloads & Links
|
|---|
| 32 |
|
|---|
| 33 | * [Latest stable release](http://vsl.cis.udel.edu/lib/sw/civl/current/latest/)
|
|---|
| 34 | * [Latest unstable release](http://vsl.cis.udel.edu/lib/sw/civl/trunk/latest/)
|
|---|
| 35 | * [Older releases](http://vsl.cis.udel.edu/lib/sw/civl/)
|
|---|
| 36 | * [CIVL Web App](http://civl.cis.udel.edu/app/)
|
|---|
| 37 |
|
|---|
| 38 | ## Documentation
|
|---|
| 39 | * [Introduction](introduction.md)
|
|---|
| 40 | * [CIVL-C Fundamentals](fundamentals.md)
|
|---|
| 41 | * [Language Manual](language.md)
|
|---|
| 42 | * [Libraries](libraries.md)
|
|---|
| 43 | * [Command Line Interface](cli.md)
|
|---|
| 44 | * [Examples](examples.md)
|
|---|
| 45 |
|
|---|
| 46 | ## Publications
|
|---|
| 47 | * [Symbolic Execution and Deductive Verification Approaches to VerifyThis 2017 Challenges](https://vsl.cis.udel.edu/pubs/isola18.html), Ziqing Luo and Stephen F. Siegel, ISoLA'18.
|
|---|
| 48 | * [Verifying Properties of Differentiable Programs](https://vsl.cis.udel.edu/pubs/math_properties_sas18.html), J. Hückelheim, Z. Luo, S.H.K. Narayanan, S.F. Siegel, and P.D. Hovland, SAS'18.
|
|---|
| 49 | * [Towards Self-Verification in Finite Difference Code Generation](https://vsl.cis.udel.edu/pubs/correctness_2017_towards.html), J. Hückelheim, Z. Luo, F. Luporini, N. Kukreja, M. Lange, G. Gorman, S.F. Siegel, M. Dwyer, and P.D. Hovland, Correctness'17.
|
|---|
| 50 | * [CIVL Manual](https://vsl.cis.udel.edu/lib/sw/civl/civl-manual.pdf), M.B. Dwyer, J. Edenhofner, G. Gopalakrishnan, A. Marianiello, Z. Luo, Z. Rakamaric, M. Rogers, S.F. Siegel, M. Zheng, and T.K. Zirkel
|
|---|
| 51 | * [CIVL: The Concurrency Intermediate Verification Language](https://vsl.cis.udel.edu/pubs/civl_sc_2015.html), S.F. Siegel, M. Zheng, Z. Luo, T.K. Zirkel, A.V. Marianiello, J.G. Edenhofner, M.B. Dwyer and M.S. Rogers, SC'15.
|
|---|
| 52 | * [Verification of MPI programs using CIVL](https://vsl.cis.udel.edu/pubs/civl_eurompi_2017.html), Z. Luo, M. Zheng, and S.F. Siegel, EuroMPI'17.
|
|---|
| 53 | * [DOE Report of the HPC Correctness Summit](https://science.energy.gov/~/media/ascr/pdf/programdocuments/docs/2017/HPC_Correctness_Report.pdf), G. Gopalakrishnan, P.D. Hovland, C. Iancu, S. Krishnamoorthy, I. Laguna, R.A. Lethin, K. Sen, S.F. Siegel, and A. Solar-Lezama, DOE TechReport'17.
|
|---|
| 54 | * [CIVL Solutions to VerifyThis 2016 Challenges](https://vsl.cis.udel.edu/pubs/civl_verifythis_2016.html), Stephen F. Siegel, VerifyThis'16.
|
|---|
| 55 | * [CIVL: Applying a General Concurrency Verification Framework to C/Pthreads Programs Competition Contribution](https://vsl.cis.udel.edu/pubs/civl_svcomp_2016.html), M. Zheng, J.G. Edenhofner, Z. Luo, M.J. Gerrard, M.S. Rogers, M.B. Dwyer, and S.F. Siegel, TACAS'16
|
|---|
| 56 | * [CIVL: Formal Verification of Parallel Programs](https://vsl.cis.udel.edu/pubs/civl_ase_2015.html), M. Zheng, M.S. Rogers, Z. Luo, M.B. Dwyer, and S.F. Siegel, ASE'15.
|
|---|
| 57 | * [Tech Report: CIVL: The Concurrency Intermediate Verification Language](https://vsl.cis.udel.edu/pubs/civl_tr_2014.html), S.F. Siegel, M.B. Dwyer, G. Gopalakrishnan, Z. Luo, Z. Rakamaric, R. Thakur, M. Zheng, and T.K. Zirkel, Technical Report UD-CIS-2014/001.
|
|---|
| 58 | * [VSL Publication List](https://vsl.cis.udel.edu/pubs/index.html)
|
|---|
| 59 |
|
|---|
| 60 | ## How to Cite CIVL
|
|---|
| 61 | ```bibtex
|
|---|
| 62 | @Inproceedings{siegel-etal:2015:civl_sc,
|
|---|
| 63 | author = {Stephen F.\ Siegel and Manchun Zheng and Ziqing Luo and
|
|---|
| 64 | Timothy K.\ Zirkel and Andre V.\ Marianiello and John G.\ Edenhofner
|
|---|
| 65 | and Matthew B.\ Dwyer and Michael S.\ Rogers},
|
|---|
| 66 | title = {{CIVL}: The Concurrency Intermediate Verification Language},
|
|---|
| 67 | booktitle = {SC15: International Conference for High Performance
|
|---|
| 68 | Computing, Networking, Storage and Analysis, Proceedings},
|
|---|
| 69 | series = {SC '15},
|
|---|
| 70 | year = {2015},
|
|---|
| 71 | month = {Nov},
|
|---|
| 72 | publisher = {IEEE Press},
|
|---|
| 73 | address = {Piscataway, NJ, USA},
|
|---|
| 74 | pages = {61:1-61:12},
|
|---|
| 75 | doi = {10.1145/2807591.2807635}
|
|---|
| 76 | }
|
|---|
| 77 | ```
|
|---|
| 78 |
|
|---|
| 79 | ## Bug Reports
|
|---|
| 80 | To report a bug in CIVL, either create a [GitHub issue](https://github.com/verified-software-lab/civl/issues) or send an email to `civl-dev@googlegroups.com`.
|
|---|
| 81 | Include as many details as possible, such as the CIVL command, source files (these may be attached), the CIVL version, and the output, including any error message.
|
|---|
| 82 |
|
|---|
| 83 | ## Developers
|
|---|
| 84 | * Current Developers: [Stephen Siegel](https://vsl.cis.udel.edu/siegel.html) and Alex Wilton
|
|---|
| 85 | * Previous Contributors: Matthew Dwyer, John Edenhofner, Mitchell Gerrard, Ziqing Luo, Andre Marianiello, Michael Rogers, Wenhao Wu, Yihao Yan, Manchun Zheng and Timothy Zirkel
|
|---|
| 86 |
|
|---|
| 87 | [DeveloperPage](https://vsl.cis.udel.edu/trac/civl/wiki/DeveloperPage)
|
|---|
| 88 |
|
|---|
| 89 | ## License
|
|---|
| 90 | CIVL is copyright from 2013 to 2026, Verified Software Laboratory, Department of Computer and Information Sciences, University of Delaware.
|
|---|
| 91 |
|
|---|
| 92 | CIVL is distributed under the terms of the [GNU General Public License v3](https://www.gnu.org/licenses/gpl.html). (See the directory licenses in the distribution for details.)
|
|---|