Autoproof: Auto-Active Functional Verification of Object-Oriented Programs

Autoproof: Auto-Active Functional Verification of Object-Oriented Programs

Software Tools for Technology Transfer manuscript No. (will be inserted by the editor) AutoProof: auto-active functional verification of object-oriented programs? Carlo A. Furia1, Martin Nordio2, Nadia Polikarpova3, Julian Tschannen2?? 1 Chalmers University of Technology, Gothenburg, Sweden 2 Chair of Software Engineering, ETH Zurich, Zurich, Switzerland 3 MIT CSAIL, Cambridge, MA, USA The date of receipt and acceptance will be inserted by the editor Abstract. Auto-active verifiers provide a level of au- fully automatic or “push button”, the only required in- tomation intermediate between fully automatic and in- put being a program to be verified; to achieve com- teractive: users supply code with annotations as input plete automation, these approaches tend to be limited while benefiting from a high level of automation in the to verifying predefined, possibly implicit properties such back-end. This paper presents AutoProof, a state-of- as the absence of invalid pointer dereferences. At the the-art auto-active verifier for object-oriented sequential other end of the spectrum are interactive approaches programs with complex functional specifications. Auto- to verification—which include tools such as KIV [15]— Proof fully supports advanced object-oriented features where the user is ultimately responsible for providing and a powerful methodology for framing and class invari- input to the prover on demand, whenever it needs guid- ants, which make it applicable in practice to idiomatic ance through a successful correctness proof; in principle, object-oriented patterns. The paper focuses on describ- this makes it possible to verify arbitrarily complex prop- ing AutoProof’s interface, design, and implementation erties, but it is approachable only by highly trained ver- features, and demonstrates AutoProof’s performance on ification experts. The classification into automatic and a rich collection of benchmark problems. The results interactive is ultimately fuzzy, but it is nonetheless prac- attest AutoProof’s competitiveness among tools in its tically useful to assess the level of abstraction at which league on cutting-edge functional verification of object- the user/tool interaction takes place. In the trade-off oriented programs. between expressiveness and scalability, automatic tools tend to prioritize the latter, and interactive tools the former. In more recent years, a new class of approaches have Key words: Functional verification · Auto-active verifi- emerged that try to achieve an intermediate degree of au- cation · Object-oriented verification · Verification bench- tomation in the continuum that goes from automatic to marks interactive—hence their designation [33] as the portman- teau auto-active.1 Auto-active tools need no user input during verification, which proceeds autonomously until it succeeds or fails; however, the user is still expected to 1 Auto-active functional verification of provide guidance indirectly (“off-line”) through annota- object-oriented programs tions (such as loop invariants or intermediate lemmas) in the input program. Provided such annotations belong Program verification techniques differ wildly in their de- to a higher level of abstraction than the proof details ex- gree of automation and, correspondingly, in the kinds of posed by purely interactive tools, auto-active tools have properties they target. One class of approaches—which a chance to be more approachable by non-experts while includes techniques such as abstract interpretation—is retaining full support for proving arbitrary properties. More broadly, the auto-active approach has the po- ? A preliminary version of this work appeared in the 21st Inter- tential to better support incrementality: proving simple national Conference on Tools and Algorithms for the Construction properties would require little annotations and of the and Analysis of Systems in 2015 [50]. ?? Work mainly done while all the authors where affiliated with ETH Zurich. 1 Although inter-matic would be as good a name. 2 C. A. Furia et al.: AutoProof: auto-active functional verification of object-oriented programs simple kinds that novice users may be able to provide; AutoProof is available as part of the open-source Eif- proving complex properties would still be possible by fel verification environment (EVE) as well as online in sustaining a heavy annotation burden. your browser; the page This paper describes AutoProof, an auto-active ver- ifier for functional properties of (sequential) object-ori- http://tiny.cc/autoproof ented programs. In its latest development state, Auto- contains source and binary distributions, detailed usage Proof offers a unique combination of features that make instructions, a user manual, an interactive tutorial, and it a powerful tool in its category and a significant con- the benchmark solutions discussed in Sect. 6. tribution to the state of the art. AutoProof targets a real complex object-oriented programming language (Eiffel)— as opposed to more abstract languages designed specif- 2 Related work ically for verification. It supports most language con- structs, as well as a full-fledged verification methodol- ogy for heap-manipulating programs based on a flexi- 2.1 Program verifiers ble annotation protocol, sufficient to completely verify a variety of programs that are representative of object- In reviewing related work, we focus on the tools that oriented idioms as used in practice. AutoProof was de- are closer to AutoProof in terms of features, and design veloped with extensibility in mind: its annotation library principles and goals. can be augmented with new mathematical types and the- Only few of them are, like AutoProof, auto-active, ories, and its implementation can accommodate changes work on real object-oriented programming languages, in the input language. While Eiffel has a much smaller and support the verification of general functional prop- user base than other object-oriented languages such as erties. Krakatoa [16] belongs to this category, as it works C++, Java, and C#, the principles behind AutoProof on Java programs annotated with a variant of JML (the are largely language independent; hence, they are rel- Java Modeling Language [29]). Since it lacks a full-fledg- evant to a potentially large number of researchers and ed methodology for reasoning about object consistency users—for whom this paper is written. and framing, using Krakatoa to verify object-oriented id- The problems we use to evaluate AutoProof (Sect. 6) iomatic patterns—such as those we discuss in Sects. 6.1 include verification challenges, a realistic container li- and 6.2—would be quite impractical; in fact, the refer- brary, and the performance of students on a master’s ence examples distributed with Krakatoa target the ver- course project. Verification challenges are emerging as ification of algorithmic problems where object-oriented the gold standard [28] to demonstrate the capabilities of features are immaterial. program provers for functional correctness which, unlike Similar observations apply to the few other auto- fully automatic tools, use different formats and conven- active tools working on Java and JML, such as ESC/- tions for input annotations and support specifications Java2 [7] or the more recent OpenJML [38,11], as well as of disparate expressiveness, and hence cannot directly to the KeY system [5,1]—which started out as an inter- be compared on standard benchmark implementations. active prover but has provided increasingly more sup- The container library—called EiffelBase2, and discussed port for automated reasoning. Even when ESC/Java2 in detail in related work [14]—offers all the features cus- was used on industrial-strength case studies (such as the tomary in modern language frameworks with realistic KOA e-voting system [27]), the emphasis was on mod- implementations; formally verifying its full functional eling and correct-by-construction development, and ver- correctness poses challenges that go beyond those of in- ification was normally applied only to limited parts of dividual benchmark problems. Master’s students repre- the systems. KeY has been successfully applied to a va- sent serious non-expert users of AutoProof, who helped riety of program domains such as information flow anal- us assess to what extent auto-active verification was in- ysis [4] and runtime verification [8], with a lesser focus cremental, and highlighted a few features critical for Au- on object-oriented heap-manipulating programs. toProof’s usability at large. By contrast, the Spec# system [2] was the forerunner Previous work of ours, summarized in Sect. 2.2, de- in a new research direction, also followed by AutoProof, scribed the individual techniques available in AutoProof. which focuses on the complex problems raised by object- This paper demonstrates how those techniques together oriented structures with sharing, object hierarchies, and make up a comprehensive verification methodology (Sect. 4), collaborative patterns. Spec# works on an annotation- and in addition presents AutoProof’s user interface (Sect. 3), based dialect of the C# language and supports an own- describes significant aspects of its design and implemen- ership model which is suitable for hierarchical object tation (Sect. 5), and outlines the results of experiments structures, as well as visibility-based invariants to spec- (Sect. 6) with realistic case studies, with the goal of ify more complex object relations. Collaborative object showing that AutoProof’s features and performance demon- structures as implemented in practice (Sect. 6.1) require,

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    20 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us