Skip to content

thisiscam/MultiPathP

Repository files navigation

Project Title

Symbolic execution engine for P programming language using Value Summaries. We apply the MultiSE approach to perform efficient symbolic exploration of concurrent P programs with state-merging.

Getting Started

$ git clone https://github.com/thisiscam/MultiPathP.git

Prerequisites

  • java (>= 8)
  • maven
  • cmake (>= 3.0)
  • a descent c++11 compiler such as gcc or clang
  • sylvan

To install sylvan, one may follow the instruction at sylvan's documentation

Installing

$ cd MultiPathP
$ mvn package

Running the translator

$ java -jar target/MultiPathP-0.1-jar-with-dependencies.jar -h
Usage: <main class> [options] input-file
  Options:
    -h, --help
      displays this help message
    -I, --include
      include search directories
      Default: []
    --name
      name of the project, default to input file name
    -o, --out-dir
      output directory
      Default: <empty string>
    -t, --translator
      translator to use
      Default: CppTranslator

Example

$ java -jar target/MultiPathP-0.1-jar-with-dependencies.jar -t CppTranslator --name two_phase_commit -o two-phase-commit path/to/two-phase-commit.p

The command above should generate a self contained folder named two_phase_commit

To build the generated code

$ export P_CPP_RUNTIME=/path/to/MultiPathP/runtimes/cpp_runtime/ # tell the build system where to find cpp_runtime header library
$ cd two_phase_commit; 
$ cmake -DCMAKE_BUILD_TYPE=Release .. (or =Debug)
$ ./MultiPath_two_phase_commit 
   or
  ./RandTest_two_phase_commit

License

This project is licensed under the Apache License Version 2.0 License - see the LICENSE.md file for details

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published