跳到内容

gabriele-costa/害虫

害虫

害虫(符号转换系统的部分求值器)是用于有限状态代理部分求值的工具套件。该工具实现了本文介绍的有限状态自动机的商算法:

Gabriele Costa、David Basin、Chiara Bodei、Pierpaolo Degano和Letterio Galletta,“从自然投影到局部模型检查和返回”。2018年TACAS。

更新:PESTS v1.2推出了对符号自动机的新支持

除其他外,PESTS可用于解决以下问题:

  1. 将并行组合的验证减少为单个组件的验证;
  2. 合成一个符合全局规范的子模块:子模块构造问题(SCP);
  3. 为给定组件合成控制器:控制器合成问题(CSP)。

给定一个规范S和一个代理a(都是通过确定性有限状态自动机或符号自动机定义的),该工具返回(最允许的规范)一个新的代理a',与a并行放置,满足S。

版本

该工具的最后一个稳定版本是PESTS 1.2版(JAR)可在获取https://github.com/gabriele-costa/pests/releases网站.

复制的说明TACAS实验在中显示

Gabriele Costa、David Basin、Chiara Bodei、Pierpaolo Degano和Letterio Galletta,“从自然投影到局部模型检查和返回”。2018年TACAS。

参考PESTS 1.1版(TACAS) DOI程序:10.5281/zenodo.1138898

要求

安装

PESTS是用纯Java实现的,不需要特殊的安装过程。它作为一个自包含的Java存档(.jar)提供,可以从github.

描述

PESTS执行的主要操作是部分评估(又名)针对有限转换系统a的规范。部分评估的结果是另一个过渡系统B必须满足的新规范,以确保a和B的平行组成满足原始规范。

必须向部分评估程序提供的输入包括:

  • P: 原始规范
  • A: 过渡系统
  • S: A和B之间的一组同步动作
  • G: B的异步动作集

用法

PESTS可以用作单机,命令行工具和a图书馆.

PESTS作为独立工具

注:当前版本的PESTS仅支持非符号转换系统的CLI。

打开终端并浏览到包含pests.jar的文件夹。然后键入$java-jar pests.jar-h以获取以下帮助消息。

$java-jar pests.jar-h简单过渡系统(PESTS)的部分评估器用法:java-jar pests.jar INPUT[选项]INPUT必须是包含有限状态代理文本描述的现有文件选项是以下选项的子集:-o=FILE上的FILE写入输出。如果未指定且选项-f设置为txt,则写入标准输出。-s=从FILE读取FILE规范。如果未指定,则使用FALSE。-a=v1,。。。,vN使用v1,。。。,vN作为同步动作。如果未指定,则使用空集。-b=v1,。。。,vN使用v1,。。。,vN作为异步操作。如果未指定,则使用空集。-f=txt|svg|png|pdf使用指定的输出格式。省略此选项相当于-f=txt。-v激活详细输出。-h打印此消息并退出。

INPUT文件包含转换系统A,而-s选项用于传递(包含)规范P的文件。选项-a和-b允许分别定义集合S和G。动作必须是有效的标识符,即没有空格的字母数字序列。

输入文件格式

输入文件包含定义为确定性有限状态自动机(DFA)的有限转换系统的规范。该文件分为四个部分:

  • 首字母--指定初始状态的名称
  • 总决赛--指定最终状态的名称列表
  • 行动--指定动作标签
  • 过渡--指定DFA的标记转换

输入文件示例

以下示例定义了3状态DFA

首字母:q0;决赛:q0、q1、q2;动作:a、s、t;q0—t->q2;q0—a->q1;q1—s->q0;

对应于下图(其中所有状态都是最终状态)。

t吨+----------->问题2||一个->问题0--------->问题1^             ||秒|+-------------+

PESTS作为库

作为一个Java库,pests.jar必须像往常一样包含在Java编译器的构建路径中,即设置-中央处理器选项或使用IDE特定过程添加它。

非对称跃迁系统。确定性有限转换系统的一个简单而常见的使用场景如下

DFAutomatonImpl P=…//创建规范P添加状态和转换DFAutomatonImpl A=…//创建过渡系统A(类似于创建P)设置<String>S=…//同步动作集设置<String>G=…//异步操作集DFAutomatonImpl PP=投影统一(投影部分A(P,A,S,G),G);

这里最相关的类和方法是:

  • 等级it.unige.automata.impl。DFAutomatonImpl公司:DFA的具体实现。
  • 等级it.unige.automata.impl。NF自动化实施:NFA的具体实现。
  • 等级它是unige.parteval。投影:实现核心算法的实用程序类。
  • 方法部分A:商算法的实现。
  • 方法统一:统一算法的实现。

符号过渡系统。相反,对于符号转换系统的部分评估,常见的使用场景是

EventAutomaton P=…//创建规范P添加状态和符号转换EventAutomaton A=…//创建符号转换系统A(类似于创建P)设置<String>S=…//同步符号事件集设置<String>G=…//异步符号事件集EventAutomaton PP=投影.unifyS(投影.partialS(P,A,S,G),G);

PESTS源代码提供了描述相关类的含义和功能的Javadoc。

TACAS实验

下面我们解释如何复制2018年TACAS上的实验。

TACAS虚拟机指令

  1. 打开端子并键入$java-版本检查JRE是否正确安装及其版本。
  2. 如果未安装JRE,请通过安装$sudo apt安装默认值-jre.

TACAS释放

TACAS版本包含一个.zip存档文件,其中包含:

  • pests.jar鼠疫:PESTS工具二进制文件
  • 测试:包含复制TACAS’18实验所需文件的文件夹
  • 标准立方英尺/平方英寸csp.sh公司:复制实验的shell脚本

如何进行TACAS论文实验

按照以下步骤复制本文中的实验表。

  1. 下载PESTS 1.1版TACAS(pess-v1.1-tacas.zip).
  2. 将.zip存档解压缩到某个文件夹(例如,使用$unzip pests-v1.1-tacas.zip)
  3. 输入解压缩的文件夹并在那里打开终端
  4. 确保两者都标准立方英尺/平方英寸csp.sh公司是可执行的(如果使用$chmod+x scp.sh$chmod+x scp.sh)
  5. 运行shell脚本,设置要执行的实验数量(介于1和20之间)。例如./scp.sh第5页执行与论文附录中实验表的前5行相对应的前5个实验(表4)。

注释:对于每个实验,工具的输出具有以下结构。

**SCP测试编号1**开始部分评估。部分评估:时间=10 ms,状态=24,转换=36统一:时间=4ms,状态=9,过渡=11正在写入输出。完整的。

上面显示的输出是指SCP表的第一行(**SCP测试编号1**).第三行中报告了部分求值算法处理的状态和转换的总数。这些值必须分别与表的第二列和第三列进行比较。相反,总执行时间由两个阶段的总和给出(即部分求值和统一)。例如,在本例中,总时间为14毫秒。

警告:15岁以上的实验可能需要几个小时。

柔性制造系统

包裹it.unige.parteval.test测试包括几个JUnit测试和一些案例研究。此外,该包it.unige.parteval.test.flexfact公司提供了表示柔性制造系统.这些组件可用于组装虚拟工厂以进行部分评估。