【24h】

Program analysis via satisfiability modulo path programs

机译:通过可满足性模路径程序进行程序分析

获取原文
获取原文并翻译 | 示例
           

摘要

Path-sensitivity is often a crucial requirement for verifying safety properties of programs. As it is infeasible to enumerate and analyze each path individually, analyses compromise by soundly merging information about executions along multiple paths. However, this frequently results in a loss of precision. We present a program analysis technique that we call SatisfiabilityModulo Path Programs (SMPP), based on a path-based decomposition of a program. It is inspired by insights that have driven the development of modern SMT (Satisfiability Modulo Theory) solvers. SMPP symbolically enumerates path programs using a SAT formula over control edges in the program. Each enumerated path program is verified using an oracle, such as abstract interpretation or symbolic execution, to either find a proof of correctness or report a potential violation. If a proof is found, then SMPP extracts a sufficient set of control edges and corresponding interference edges, as a form of proof-based learning. Blocking clauses derived from these edges are added back to the SAT formula to avoid enumeration of other path programs guaranteed to be correct, thereby improving performance and scalability. We have applied SMPP in the F-Soft program verification framework, to verify properties of real-world C programs that require path-sensitive reasoning. Our results indicate that the precision from analyzing individual path programs, combined with their efficient enumeration by SMPP, can prove properties as well as indicate potential violations in the large.
机译:路径敏感性通常是验证程序安全性的关键要求。由于无法单独枚举和分析每个路径,因此请通过合理地合并有关沿多个路径执行的信息来分析折衷。但是,这经常导致精度损失。我们基于程序的基于路径的分解,介绍了一种称为“满意度模块路径程序”(SMPP)的程序分析技术。它的灵感来自于推动了现代SMT(可满足性模理论)求解器的发展。 SMPP在程序的控制边上使用SAT公式象征性地枚举路径程序。每个枚举的路径程序都使用Oracle(例如抽象解释或符号执行)进行验证,以找到正确性证明或报告潜在违规情况。如果找到了证明,则SMPP会提取足够多的控制边和相应的干扰边,作为基于证明的学习形式。从这些边缘派生的阻塞子句被加回到SAT公式中,以避免枚举保证正确的其他路径程序,从而提高了性能和可伸缩性。我们已经在F-Soft程序验证框架中应用了SMPP,以验证需要路径敏感推理的真实C程序的属性。我们的结果表明,通过分析单个路径程序的精度以及SMPP对其进行的有效枚举,可以证明属性并指出潜在的大范围违规情况。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号