Proceedings of the 4th Workshop on Scala 2013
DOI: 10.1145/2489837.2489838
|View full text |Cite
|
Sign up to set email alerts
|

An overview of the Leon verification system

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.… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
10
0
3

Year Published

2014
2014
2021
2021

Publication Types

Select...
6
2
1

Relationship

2
7

Authors

Journals

citations
Cited by 50 publications
(13 citation statements)
references
References 36 publications
0
10
0
3
Order By: Relevance
“…SciFe alleviates the need to write an additional predicate to check the invariant after execution, by employing the enumerator as a structure recognizer. In addition to generating a data structure encoded at a particular index, the enumerator can play the role of an oracle-given a data structure, it answers with true or false, whether the data structure can be generated with the enumerator (and thus also whether it is correct) 3 . We can easily turn our enumerator into an oracle to test insertion without any additional contracts:…”
Section: Motivating Examplesmentioning
confidence: 99%
See 1 more Smart Citation
“…SciFe alleviates the need to write an additional predicate to check the invariant after execution, by employing the enumerator as a structure recognizer. In addition to generating a data structure encoded at a particular index, the enumerator can play the role of an oracle-given a data structure, it answers with true or false, whether the data structure can be generated with the enumerator (and thus also whether it is correct) 3 . We can easily turn our enumerator into an oracle to test insertion without any additional contracts:…”
Section: Motivating Examplesmentioning
confidence: 99%
“…Automated data structure generation techniques are useful in many contexts: software testing [10,11,18,45], synthesis [30,32], bounded and unbounded verification [3,15,25,28], theorem proving [6,12], and others [4,9,22,24,31]. The structures in question are not just the common algorithmic data structures that are the backbone of common libraries, but also domain-specific structures, such as abstract models of programs in compilers, image formats, or DOM trees in browsers.…”
Section: Introductionmentioning
confidence: 99%
“…Eiffel [39] built less expressive specifications directly into the programming language. Leon [4] is a verifier for Scala programs. Key [3] and Why3 [24] are other recent tools that apply to Java programs, but require the user to interact with theorem proving tools separately from the software development IDE.…”
Section: Related Workmentioning
confidence: 99%
“…To construct verification conditions (VCs) in the presence of algebraic data-types (ADTs) and recursive functions we use the approach employed in the Leon verifier [5,28]. The approach constructs VCs incrementally wherein each increment makes the VC more precise by unrolling the function calls that have not been unrolled in the earlier increments (referred to as VC refinement).…”
Section: Successive Function Approximation By Unfoldingmentioning
confidence: 99%