2LS ("tools") is a verification tool for C programs, built upon the CPROVER framework. It allows one to verify user-specified assertions, memory safety properties (e.g. buffer overflows), numerical overflows, division by zero, memory leaks, and termination properties. The analysis is performed by translating the verification task into a second-order logic formula over bitvector, array, and floating-point arithmetic theories. The formula is solved by a modular combination of algorithms involving unfolding and template-based invariant synthesis with the help of incremental SAT solving. Advantages of 2LS include its very fast incremental bounded model checking algorithm and its flexible framework for experimenting with novel analysis and abstraction ideas for invariant inference. Drawbacks are its lack of support for certain program features (e.g. multi-threading).
翻译:2LS (“工具”) 是 C 程序的一种核查工具, 以 CPRAVERVER 框架为基础。 它允许核查用户指定的说法、 内存安全性能( 如缓冲溢出)、 数字溢出、 零分、 内存泄漏和终止性能。 分析的方式是将核查任务转换成比特方、 数组和浮点算数理论的二级逻辑公式。 公式的解析方法是, 由包含以模板为基础、 异变合成的算法组成的模块组合, 并辅之以渐进式 SAT 解析。 2LS 的优点包括其非常快速、 递增的模型检查算法及其用于试验新式分析和抽象概念的灵活框架, 以便进行不动推论。 绘图是它对某些程序特性( 如多读) 缺乏支持 。