2021年9月14日出版 |版本1.0
软件 正常开放

论文的复制包:通过顺序仿真验证分布式系统

  • 1.INRIA/LIG,法国格勒诺布尔
  • 2意大利卢卡IMT高等研究学院
  • 三。意大利拉奎拉格兰萨索科学研究所

说明

此软件包允许复制“通过顺序仿真验证分布式系统”中描述的实验。

还包括完整复制的说明。

存储库内容

  • main.sh(主.sh):运行所有实验的快速启动脚本

  • 许可.sh:脚本为可执行文件提供足够的权限

  • 复制.tar.gz:gzipped存档包含:

    • 出现,不变量,股票:C程序用于实验评估。每个目录还包含一个_日志文件夹中包含论文中提到的日志文件。

    • 实验室:LAbS规范用于出现不变量实验。

    • 许可证:使用存储库内容的条件

    • 工具:用于生成C程序和运行实验的软件

    • README.向下:原始复制存储库的README文件(https://gitlab.inria.fr/ldistefa/tosem-artifacts网站)

    • 读取ME-ZENODO.mdown:本文件

    • 复制.py:复制实验的Python脚本

    • 复制.sh:fallback shell脚本以复制实验

要求

所有实验都应该在大多数x64 Linux机器上成功运行。运行复制.py脚本。或者,可以运行复制.shshell脚本。

关于特定工具的一些注意事项:

  • 共生需要蟒蛇可在机器的PATH中执行(通常/usr/bin/python). 这可能是指向Python 3可执行文件(通常为/usr/bin/python3).

  • SeaHorn需要Python 2可执行文件(通常/usr/bin/python2).

  • 要生成插入指令的程序(见下文),需要一个外部C预处理器。例如,我们使用gcc-E公司。我们确实提供现成的仪器程序。

快速启动

将整个存储库下载到某个目录目录,然后:

cd/path/to/dir#为main.sh、工具及其依赖项提供执行权限chmod+x权限.sh#打开存档,创建日志目录,并运行所有实验./main.sh号

该脚本将创建一个目录/日志包含子目录的目录出现,不变量、和股票,它将在其中存储每个验证任务的输出。

复制详细信息

从LAbS规范生成C程序

以下命令将使用条子从本文考虑的每个LAbS系统创建C仿真程序:

#固定程序tools/sliver-v1.5_linux_x64/slive.py labs/formation.invariant.labs size=10 range=2 n=3--fair--no-bv--show>invariant/formation.ctools/sliver-v1.5_linux_x64/slive.py labs/approx.labs yes=1 no=2--no-bv--show>不变量/approx-a/approx-a.ctools/sliver-v1.5_linux_x64/slive.py labs/approx.labs yes=2 no=3--no-bv--show>不变量/approx-a/approx-b.c.origtools/sliver-v1.5_linux_x64/sliver.py labs/maj.labs yes=1 no=2--no-bv--show>不变量/maj/maj.c.orig#应急计划tools/sliver-v1.5_linux_x64/slive.py labs/boids.labs birds=3 size=5 delta=5-fair--no-bv--show>emerge/boids/boids.ctools/sliver-v1.5_linux_x64/slive.py labs/flow.labs birds=3 size=5 delta=5-fair--no-bv--show>emerge/flow/flow.ctools/sliver-v1.5_linux_x64/slive.py labs/formation.emergence.labs size=10 range=2 n=3--fair--no-bv--show>emergency/formation。c(c)

下的每个文件夹不变量出现包含一个<程序>。c(c)文件,它是上述命令之一的输出。请注意,对于大约b马吉,我们已经手动执行了一些额外的转换。未修改的条子输出已命名maj.c.orig公司最后一个程序被命名为maj.c公司.

C程序的插入

SLiVER最初是为BMC验证量身定制的,因此它生成可由CBMC直接验证的程序。其他工具需要检测步骤。通常,这相当于将验证内部函数替换为工具支持的内部函数,添加特定的头或函数声明等。我们通过名为缺席者,可以在中找到工具目录和位于(https://github.com/lou1306/缺席)

通常,为检测SLiVER程序程序。c(c)要通过特定工具进行验证,可以使用以下命令行:

cd工具/缺席者gcc-E/path/to/<program>.c|python3-m缺席--conf<tool>.conf->/path/to/<program><工具>。c(c)

使用预处理原始程序海湾合作委员会需要(或其他编译器),因为缺席者不支持预处理器指令。

下的每个文件夹不变量出现已包含文件<程序><工具>。c(c),这是我们实验评估中每个工具的这一步骤的结果。

验证

每个工具都需要一组特定的参数、环境变量等来正确执行其验证任务。要调查我们在评估中使用的实际命令,请检查复制.sh脚本或复制.py程序。

关于股票案例研究

我们写了库存安全库存物资案例研究直接作为三重结构,然后使用本文描述的相同过程将其编码为C程序,并由条子.

我们在股票文件夹。

的使用说明复制.py

如果需要更多粒度,复制.py可以手动运行。./replication.py--帮助显示了使用说明。简言之:

  • ./复制.py运行所有实验。

  • ./replication.py工具1工具2。。。只使用给定的工具运行实验。

  • ./replication.py--列表列出了工具名称。

  • ./replication--超时将默认超时设置为n个秒(n个必须是正整数)

通过添加--干式运行,脚本只显示了实验的命令行,而没有实际执行它们。请记住,大多数工具还需要自定义环境变量,或者在自己的目录外调用时无法正常运行,因此这些命令行仅供参考。

支持

有关更多信息,您可以查看工件的原始Git存储库:(https://gitlab.inria.fr/ldistefa/tosem-artifacts(https://gitlab.inria.fr/ldistefa/tosem-artifacts))

你也可以联系论文的通讯作者:Luca Di Stefanoluca.di-stefano@inria.fr

致谢

MIUR项目PRIN 2017FTXR7S部分资助的工作IT很重要(值得信赖的智能系统的方法和工具)。

免责声明

除了复制“通过顺序仿真验证分布式系统”一文中的实验外,该存储库的作者不支持将其内容用于任何目的。请咨询论文的通讯作者(Luca Di Stefanoluca.di-stefano@inria.fr)关于通用软件包。

笔记

由MIUR项目PRIN 2017FTXR7S IT MATTERS(值得信赖的智能系统的方法和工具)部分资助的工作。

文件夹

文件夹(1.8 GB)

姓名 大小 全部下载
md5:b3e63009b7aab2cff5996866a70fa460
238字节 下载
md5:d6b493cd18f53d278778seb3509180c1
752字节 下载
md5:50e2479f838637e051a1778ee2609674
1.8 GB 下载