Code Monkey home page Code Monkey logo

A Family of Sequentialization-Based C Verification Tools

Sequentialization is a technique for the analysis of concurrent programs that exploits verification techniques or tools that were originally designed for sequential programs. Sequentialization can be implemented as a code-to-code translation from the concurrent program into a corresponding non-deterministic sequential program that simulates all executions of the original program. The sequential program contains both the mapping of the threads in the form of functions, and an encoding of the scheduler, were the non-determinism allows to handle different concurrent schedules collectively. This approach has three main advantages:

  • a code-to-code translation is typically much easier to implement than a full-fledged analysis tool;
  • it allows designers to focus only on the concurrency aspects of programs, delegating all sequential reasoning to an existing target analysis tool;
  • sequentializations can be designed to target multiple backends for sequential program analysis.

CSeq is a framework that facilitates the development of code-to-code translations for concurrent C programs with POSIX threads based on sequentialization. The following are verification tools that have been developed under the CSeq framework.

VeriSmart

VeriSmart is a novel parallel bug-finding framework for concurrent C programs.

Publications:

  • (full reference missing) ASE'17

Downloads:

Lazy-CSeq

Lazy-CSeq is a code-to-code transformation tool that translates a multi-threaded C program into a nondeterministic sequential C program that preserves reachability for all round-robin schedules with a given bound on the number of rounds. It re-uses existing high-performance BMC tools as backends for the sequential verification problem. The translation is carefully designed to introduce very small memory overheads and very few sources of nondeterminism, so that it produces tight SAT/SMT formulae, and is thus very effective in practice. The tool has a script that bundles the translation and the verification.

Publications:

Downloads:

Awards: (incomplete)

Supported backends: (incomplete)

MU-CSeq

MU-CSeq is a code-to-code translation tool for the verification of multi-threaded C programs with POSIX threads. It is based on sequentializing the programs according to a guessed sequence of write operations in the shared memory (memory unwinding, MU). The original algorithm (implemented in MU-CSeq 0.1) stores the values of all shared variables for each write (read-explicit fine-grained MU), which requires multiple copies of the shared variables. Our new algorithms (in MU-CSeq 0.3) store only the writes (read-implicit MU) or only a subset of the writes (coarse-grained MU), which reduces the memory footprint of the unwinding and so allows larger unwinding bounds.

Publications:

Downloads:

Awards: (incomplete)

Supported backends: (incomplete)

UL-CSeq

UL-CSeq is a code-to-code translation tool for the verification of multi-threaded C programs with dynamic thread creation. This tool implements a variation of the lazy sequentialization algorithm implemented in Lazy-CSeq. The main novelty is that UL-CSeq supports an unbounded number of context switches and allow unbounded loops, while the number of allowed threads still remains bounded.

Publications:

Downloads:

Supported backends: (incomplete)

LR CSeq

LR-CSeq is a code-to-code translation tool which implements a novel sequentialization for C programs using POSIX threads, which extends the Lal/Reps sequentialization schema to support dynamic thread creation.

Publications:

  • CSeq: A Concurrency Pre-processor for Sequential C Verification Tools (Tool Demonstration). B. Fischer, O. Inverso, and G. Parlato.
    28th IEEE/ACM International Conference on Automated Software Engineering (ASE), Palo Alto, CA, USA, 2013. (PDF)
  • CSeq: A Sequentialization Tool for C (Competition Contribution). B. Fischer, O. Inverso, and G. Parlato. 2nd Intl. Competition on Software Verification (SV-COMP), held at TACAS, Rome, Italy, 2013. (PDF)

Downloads:

Awards:

Supported backends: (incomplete)

  • ...

Other Publications

  • A Pragmatic Verification Approach for Concurrent Programs. T. Nguyen Lam. PhD Thesis, University of Southampton, 2017. (PDF)
  • Separating computation from communication:: a design approach for concurrent bug finding. E. Tomasco. PhD Thesis, University of Southampton, 2017. (PDF)
  • Bounded Model Checking of Multi-threaded Programs via Sequentialization. O. Inverso. PhD Thesis, University of Southampton, 2015. (PDF)

People

CSeq is developed by:

Funding (incomplete)

This project is partially supported by EPSRC.

CSeq's Projects

CSeq doesnโ€™t have any public repositories yet.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.