简化循环不变式生成:分裂谓词与随机动态系统监控
在软件开发和系统验证领域,循环不变式的生成以及系统运行时的监控是至关重要的环节。循环不变式有助于验证程序的正确性,而系统监控则能在运行时确保系统的行为符合预期。本文将介绍一种利用分裂谓词简化循环不变式生成的技术,以及随机动态系统的可监控性相关研究。
分裂谓词简化循环不变式生成
在使用Interproc工具进行基准测试时,原始基准代码使用了其输入语言中不包含的特性,因此需要手动修改这些基准代码。计算阶段分裂谓词所花费的时间可以忽略不计,算法在任何基准测试上的耗时都不超过90毫秒。
通过对表1中结果的分析,可以发现该技术显著提高了Interproc和InvGen生成的不变式的质量,并使它们能够验证之前无法验证的断言。具体结果如下表所示:
| 基准测试 | Interproc不变式改进情况 | InvGen不变式改进情况 | Interproc断言验证情况 | InvGen断言验证情况 |
| — | — | — | — | — |
| 前9个程序(双线上方) | 8个改进,1个不可比(mergesort) | 8个加强,1个等价 | 6个原程序至少一个断言无法验证,分裂后可验证所有 | 4个原程序无法验证,转换后可验证所有 |
| svd1, heapsort1, spam1 | 分裂后可验证,之前无法验证 | - | - | - |
| mergesort1 | 分裂后有新事实,但断言仍无法验证,弱断言时可利用新事实 | - | - | - |
此外,还有一些基准测试中,工具在分裂前后都能证明断言,但分裂后产生了更强的不变式。为了证明这种额外的精度是有用的,创建了s