An overview of the Leon verification system: verification by translation to recursive functions

  • Authors:
  • Régis Blanc;Viktor Kuncak;Etienne Kneuss;Philippe Suter

  • Affiliations:
  • École Polytechnique Fédérale de Lausanne (EPFL), Switzerland;École Polytechnique Fédérale de Lausanne (EPFL), Switzerland;École Polytechnique Fédérale de Lausanne (EPFL), Switzerland;École Polytechnique Fédérale de Lausanne (EPFL), Switzerland

  • Venue:
  • Proceedings of the 4th Workshop on Scala
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

We present the Leon verification system for a subset of the Scala programming language. Along with several functional features of Scala, Leon supports imperative constructs such as mutations and loops, using a translation into recursive functional form. Both properties and programs in Leon are expressed in terms of user-defined functions. We discuss several techniques that led to an efficient semi-decision procedure for first-order constraints with recursive functions, which is the core solving engine of Leon. We describe a generational unrolling strategy for recursive templates that yields smaller satisfiable formulas and ensures completeness for counterexamples. We illustrate the current capabilities of Leon on a set of examples, such as data structure implementations; we show that Leon successfully finds bugs or proves completeness of pattern matching as well as validity of function postconditions.