Computer Science and Engineering, Department of


Date of this Version


Document Type



Rogers, Michael S. Transforming C OpenMP Programs for Verification in CIVL. MS Thesis. University of Nebraska-Lincoln Lincoln, NE, 2015.


A THESIS Presented to the Faculty of The Graduate College at the University of Nebraska In Partial Fulfillment of Requirements For the Degree of Master of Science, Major: Computer Science, Under the Supervision of Professor Matthew Dwyer. Lincoln, Nebraska: December, 2015

Copyright (c) 2015 Michael S. Rogers


There are numerous way to express parallelism which can make it challenging for developers to verify these programs. Many tools only target a single dialect but the Concurrency Intermediate Verification Language (CIVL) targets MPI, Pthreads, and CUDA. CIVL provides a general concurrency model that can represent pro- grams in a variety of concurrency dialects. CIVL includes a front-end that support all of the dialects mentioned above. The back-end is a verifier that uses model checking and symbolic execution to check standard properties.

In this thesis, we have designed and implemented a transformer that will take C OpenMP programs and transform them to CIVL so that they can be verified. A large subset of the OpenMP specification is supported by the transformer. The transformer operates on a Abstract Syntax Tree (AST) representation of the program. The transformer will modify the AST to replace OpenMP constructs with equivalent CIVL constructs so that the program can be verified in CIVL. Results show that the transformer supports the most common used OpenMP constructs.

Advisers: Matthew B. Dwyer