Z3str2型

Z3str2:字符串、正则表达式和长度约束的高效解算器。近年来,字符串解算器已成为许多正式验证、安全分析和错误查找工具中的一个重要组件。此类解算器通常支持字符串方程、长度函数和正则表达式成员资格谓词的理论。这使得相当大的表达能力,这是以缓慢的解决时间为代价的,在某些情况下甚至是不终止的。我们提出了三种技术来解决这些问题:(1)检测重叠变量,这对于避免常见的不终止情况至关重要;(2) 通过字符串和整数理论之间的双向集成,修剪搜索空间,实现新的跨域启发式;以及(3)一种基于二进制搜索的启发式算法,允许过程跳过不必要的字符串长度查询,并更快地收敛到大字符串的一致长度分配上。我们在z3str解算器的基础上实现了上述技术,从而为字符串方程的无量词理论、正则表达式成员资格谓词和长度函数上的线性算法生成了一个更加健壮和高效的解算器,称为Z3str2。我们报告了在四组具有挑战性的现实世界基准上进行的一系列实验,其中我们比较了Z3str2与五种不同的字符串解算器:S3、CVC4、Kaluza、PISA和陌生人。每种工具都使用不同的解决策略和/或字符串表示(例如基于单词、位向量或自动机)。结果表明了我们所提出的技术的有效性,它产生了显著的性能改进。我们还演示了Z3str2在字符串操作程序的符号执行上下文中实现的性能改进。我们观察到这里提出的技术具有广泛的适用性,并且可以集成到其他字符串解算器中以提高它们的性能。