figshare
Browse

PBEAR Docker

Version 4 2024-02-16, 10:12
Version 3 2023-12-13, 13:41
Version 2 2023-12-13, 06:58
Version 1 2023-12-13, 06:18
software
posted on 2024-02-16, 10:12 authored by sselab officesselab office

The docker image file of PBEAR and script files to execute it.

PBEAR uses (1) CBMC (https://github.com/diffblue/cbmc), (2) DUET (https://github.com/wslee/duet), and (3) Frama-C (https://frama-c.com). PBEAR includes software (CBMC) developed by Daniel Kroening, Edmund Clarke, Computer Science Department, University of Oxford Computer Science Department, Carnegie Mellon University.

How to run:

  1. Download all files from this section. Ensure that the "results" directory and other files are in the same directory. Note that Crown, used for generating input/output examples of auxiliary functions, is not publicly available. Thus, we provide the existing I/O examples saved in "results/[program]/log/unit/[function]/log.json" files.
  2. Run "sudo docker load < pbear.tar.gz"

Then, we suggest the following order:

  • sudo bash test_sv_pbear.sh
  • sudo bash test_sv_no_alarm.sh
  • sudo bash test_sv_without_cov.sh
  • sudo bash test_sv_origin.sh
  • sudo bash test_obj_pbear.sh
  • sudo bash test_obj_no_alarm.sh
  • sudo bash test_obj_without_cov.sh
  • sudo bash test_obj_origin.sh
  • sudo bash test_elev_pbear.sh
  • sudo bash test_elev_no_alarm.sh
  • sudo bash test_elev_without_cov.sh
  • sudo bash test_elev_origin.sh
  • sudo bash test_brobot_pbear.sh
  • sudo bash test_brobot_no_alarm.sh
  • sudo bash test_brobot_origin.sh

These script files contain information for each target program (obj (P1), elev (P2), brobot (P3), and sv (SV-COMP)) along with the corresponding execution options:

  • origin: Execute only CBMC without function summary replacement.
  • refine: Execute only CBMC-refine without function summary replacement.
  • pbear: Execute PBEAR.
  • no_alarm: Execute PBEAR without symbolic alarm filtering (PBEARbase).
  • without_cov: Execute PBEAR without considering output coverage (PBEAR-cov).

Note that you can only run "_no_alarm.sh" files after executing "*_pbear.sh" files (i.e., after synthesizing function summaries). This is because the "no_alarm" option assumes the presence of function summaries sythesized by "pbear."

While / after running these scripts, you can examine the detailed results in the "results" directory. Please check the working directory option (--wd) used to run PBEAR.

  • filter/: the details of concrete / symbolic alarm filtering.
  • synth/: the details of FS synthesis / refinement.
  • target.c: the abstracted program.
  • cbmc_res.txt: the result of CBMC with target.c.
  • result.txt: the overall result of each property falsification. We have used different terminology than what was used in the paper. For example, we used 'FS' as 'stub' and 'symbolic alarm filtering' as 'true alarm filtering,' etc.

Another important point is that, due to our mistake, the input/output examples of the "check" function in the "seq-mthreaded" category were missed. As a result, new input/output examples were created, leading to differences in the experimental results of PBEAR compared to what was initially documented in the paper. Nevertheless, PBEAR still successfully solved 2 out of 3 benchmarks in the category, while PBEAR-cov failed to solve any.


History

Usage metrics

    Licence

    Exports

    RefWorks
    BibTeX
    Ref. manager
    Endnote
    DataCite
    NLM
    DC