蒙纳布

在抽象中迷失:多线程程序中的单调性。并发系统的单调性规定,在任何全局状态下,当向状态中添加新进程时,系统动作仍然是可执行的。这个概念既自然又有用:如果每个线程的内存是有限的,那么单调性通常保证了安全属性的可判定性,即使在运行的线程数未知的情况下也是如此。本文证明了用于模型检验的有限数据线程抽象可能与单调性相悖:谓词抽象单调软件会导致非单调布尔程序——单调性是{它在抽象中丢失}。因此,针对无限状态系统的安全检查算法变得不适用。我们演示了如何在不影响安全属性的情况下恢复抽象中的单调性。这改进了以前通过过度逼近来增强单调性的方法。我们在无界线程模型检查器$mathsf{monabs}$中实现了我们的解决方案,并将其应用到许多并发程序和算法中,这些程序和算法的谓词抽象通常根本上超出了现有的工具。