Info: Zenodo’s user support line is staffed on regular business days between Dec 23 and Jan 5. Response times may be slightly longer than normal.

There is a newer version of the record available.

Published May 11, 2020 | Version 0.1-ASE20-submission
Software Open

CoVeriTeam Release 0.1 - ASE20-submission

  • 1. LMU Munich, Germany

Description

This archive contains CoVeriTeam Release 0.1.

CoVeriTeam -- A Tool for On-Demand Composition of Cooperative Verification Systems

CoVeriTeam consists of a language for on-the-fly composition of cooperative verification tools from existing components; and its execution engine. The concept is based on verification artifacts (programs, specifications, witnesses, results) as basic objects, verification actors (verifiers, validators, testers, transformers) as basic operations, and defines composition operators that make it possible to easily describe new compositions, taking verification artifacts as interface between the verification actors.

CoVeriTeam is available under the Apache 2.0 license.

Installation

Dependencies

CoVeriTeam requires a machine with:
- Linux
- Python 3.6
- BenchExec 2.6 or later (to execute the atomic actors)

Please make sure that namespaces and cgroups are configured as described in the BenchExec.

Virtual Machine

We have prepared a virtual machine with the required dependencies to ease the effort to execute the examples, which is available at Zenodo [10.5281/zenodo.3813199].
Login credentials are: userid: "coveriteam-user: and password: "pass".
There is a folder named "coveriteam/" in the home directory which contains everything needed to run the example programs.

We have prepared a virtual machine from an ISO image of standard Ubuntu 1804 and applying the following steps:
* install Java 11 (for CPAchecker): `sudo apt install openjdk-11-jre-headless`
* install Java 8 (for UAutomizer): `sudo apt install openjdk-8-jre-headless`
* install clang 6.0 (for KLEE): `sudo apt install clang-6.0`
* install pyutil (for CondTest): `sudo apt install python3-psutil`
* install gcc-multiutil (for TestCov): `sudo apt install gcc-multilib`
* setup namespaces and cgroup configuration for BenchExec (documentation)

Directory Structure

The CoVeriTest directory is structured as follows:
    .
    |-- bin                # script to execute CoVeriTeam
    |-- config             # YAML actor-definition files for atomic actors
    |-- contrib            # script to create an independent archive packaging all dependencies
    |-- coveriteam         # Python source code
        |-- actors         # atomic actors like ProgramVerifier, ProgramTester, etc.
        |-- interpreter    # interpreter for the CoVeriTeam language
        |-- language       # core concepts of the CoVeriTeam language: actors, artifacts, composition
        |-- parser         # grammar and generated parser
    |-- examples           # tutorial examples
    |-- test_data          # test data for the examples
    |-- utils              # external libraries required for development
    |-- run_examples.sh    # script to execute all the tutorial examples
    |-- smoke_test_all_tools.sh   # report tool information from all atomic actors in the config/ folder
    |-- LICENSE            # Apache 2.0 license file
 

Usage

Run `bin/coveriteam --help` to see available command line arguments.
The values required by the CoVeriTeam program are passed using the `--input` parameter followed by
a `key=value` pair and the CoVeriTeam program file.

bin/coveriteam
    --input key1=val1   (pass input parameters to the program)
    --input key2=val2   (... and so on)
    --gen-code          (print the generated python code instead of executing)
    --debug             (print debug messages)
    <program_file>      (CoVeriTest program)
 

Atomic Actors
CoVeriTeam is based on using off-the-shelf verification and testing tools for cooperative verification as atomic actors. On its first execution, CoVeriTeam automatically downloads and unzips the archives that contain the atomic actors used in the CoVeriTeam program. The source URL is specified in the YAML atomic-actor definition. The atomic actors that we use in the tutorial examples are available in the "config/" folder.

`bin/coveriteam --tool-info <YAML actor-definition file>`
prints information (including name and version) about the actor defined in the YAML file. This can be used to test if the atomic actor was successfully installed. The script `smoke_test_all_tools.sh` prints the tool info for each actor defined in the "config/" folder.

Tutorial
The "examples" folder contains a few example compositions that can be executed on test inputs using the script "examples/run_examples.sh". A description is available on the tutorial page ("examples/README.md").

 

Files

coveriteam.zip

Files (1.6 MB)

Name Size Download all
md5:9f6424afdd81dec65de43717ea42f2b1
1.6 MB Preview Download