Litcius/Paper detail

2LS: Arrays and Loop Unwinding

Viktor Malík, František Nečas, Peter Schrammel, Tomáš Vojnar

2023Lecture notes in computer science10 citationsDOIOpen Access PDF

Abstract

Abstract 2LS is a C program analyser built upon the CPROVER infrastructure that can verify and refute program assertions, memory safety, and termination. Until now, one of the main drawbacks of 2LS was its inability to verify most programs with arrays. This paper introduces a new abstract domain in 2LS for reasoning about the contents of arrays. In addition, we introduce an improved approach to loop unwinding, a crucial component of the 2LS’ verification algorithm, which particularly enables finding proofs and counterexamples for programs working with dynamic memory.

Topics & Concepts

Computer scienceAnalyserMathematical proofCounterexampleLoop (graph theory)Domain (mathematical analysis)Programming languageMemory safetyComponent (thermodynamics)Theoretical computer scienceAlgorithmSoftwareMathematicsDiscrete mathematicsChemistryChromatographyCombinatoricsThermodynamicsMathematical analysisPhysicsGeometryFormal Methods in VerificationSecurity and Verification in ComputingSoftware Testing and Debugging Techniques