PAT:过程分析工具包

一种用于并发和实时系统的增强模拟器、模型检查器和优化检查器

2009年9月5日:PAT 2.7.0发布!

PAT 2.7.0的新增功能

在这个版本中,主要的成就是在实时系统(RTS)模块中实现了时间细化检查算法。在此阶段,所有计划的算法都在RTS模块中实现。未来,我们将致力于RTS模块的语法丰富和性能改进。在这个版本中,CSP和RTS模块中的建模语言得到了改进,以获得更好的表达能力和解析精度。其他更新包括新示例和错误修复。

定时优化
有时,计时方面在系统要求中很重要,例如,人类的心跳速度必须在50/分钟到200/分钟之间(过低或过高对人类生命至关重要)。在这些情况下,我们可以使用时间细化来检查输入模型是否符合所需的时间要求。语法如下:

#assert Implementation()细化<T>TimedSpec();

注:对于定时优化检查,RTS模块使用定时跟踪语义(即从模型到一组有限定时事件序列的映射)和定时跟踪优化关系(即当且仅当模型的定时跟踪是规范的子集时,模型满足规范)。为时间细化检查开发的验证算法将通过显示细化关系来验证系统模型与规范的一致性。如果不存在这种细化关系,则将时间事件序列作为反例。对于定时细化检查,PAT要求实现或规范不发散,否则共享时钟将不受限制。如果系统发散,PAT将要求用户提供共享时钟的上限(默认值为2^15)。

分组流程中支持流程参数
为了获得更好的组合行为,我们允许在分组过程中使用过程参数。例如,在[]x中:{0..n}@P或||{0}@P(),n可以是全局常量或进程参数,但不能是全局变量。我们出于性能原因进行此限制。例如,以下定义在PAT中均有效。
#定义n 10|||x:{0..n}@P
P(n)=|||x:{0..n}@Q

通道名称可以用作事件名称
事件名称是形式为('a'..'z'|'a'..'z'|'_')('a''..'z'|'a''..'z'|'0'..'9'|'_')*的任意字符串。但是,全局变量名、全局常量名、进程名、进程参数名、命题名不能用作事件名。一个例外是允许使用通道名称,因为我们可能希望在规范过程中使用通道名称来模拟通道行为,并使用细化检查来与真实的通道事件进行比较。

无差异
假设P()是一个进程,下面的断言询问P()是否无发散。
#断言P()不发散;
给定一个过程,它可以永远执行内部转换,而不参与任何有用的事件,例如,P=(a->P){a};,在这种情况下,P被认为是发散的。发散系统通常是不受欢迎的。

定时无偏差
假设P()是一个进程,下面的断言询问P()是否是无时间差异的。
#断言P()不发散<T>;
给定一个过程,它可以永远执行内部转换和定时转换,而不参与任何有用的事件,例如,Q=(a->Wait[5];Q){a};,在这种情况下,P被称为时间发散。定时发散系统是不可取的,它可以提供无限的计时器,这不允许定时优化检查。

注释:P=(a->P){a};发散,但不是时间发散,因为它永远执行内部转换,而不进行时间转换。

其他
1用户手册更新为最新版本。
添加了2个实时系统示例(Timed PaceMaker)和定时优化断言。
3修复解析、GUI等地方的错误。