English

2LS for Program Analysis

Software Engineering 2023-02-07 v1 Logic in Computer Science Programming Languages

Abstract

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).

Keywords

Cite

@article{arxiv.2302.02380,
  title  = {2LS for Program Analysis},
  author = {Daniel Kroening and Viktor Malík and Peter Schrammel and Tomáš Vojnar},
  journal= {arXiv preprint arXiv:2302.02380},
  year   = {2023}
}

Comments

Book chapter preview