Abstract
Extended Static Checking (ESC) is a fully automated formal verification technique. Verification in ESC is achieved by translating programs and their specifications into verification conditions (VCs). Proof of a VC establishes the correctness of the program. The implementations of many seemingly simple algorithms are beyond the ability of traditional Extended Static Checking (ESC) tools to verify. Not being able to verify toy examples is often enough to turn users off of the idea of using formal methods. ESC4, the ESC component of the JML4 project, is able to verify many more kinds of methods in part because of its use of novel techniques which apply multiple theorem provers. In particular, we present Offline User-Assisted ESC (OUA-ESC), a new form of verification that lies between ESC and Full Static Program Verification (FSPV). ESC is generally quite efficient, as far as verification tools go, but it is still orders of magnitude slower than simple compilation. As can be imagined, proving VCs is computationally expensive: While small classes can be verified in seconds, verifying larger programs of 50 KLOC can take hours. To help address the added cost of using multiple provers and this lack of scalability, we present the multi-threaded version of ESC4 and its distributed prover back-end.
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: PLDI ’02: Proceedings of the ACM SIGPLAN 2002 Conference, pp. 234–245. ACM, New York (2002). doi:http://doi.acm.org/10.1145/512529.512558
Chalin, P., James, P.R., Karabotsos, G.: JML4: Towards an industrial grade IVE for Java and next generation research platform for JML. In: VSTTE ’08: Proceedings of the 2008 Conference on Verified Systems: Theories, Tools, and Experiments (2008)
Cok, D.R., Kiniry, J.R.: ESC/Java2: Uniting ESC/Java and JML. In: Construction and Analysis of Safe, Secure, and Interoperable Smart Devices. LNCS, vol. 3362/2005, pp. 108–128. Springer, Berlin (2005)
Leavens, G.T., Poll, E., Clifton, C., Cheon, Y., Ruby, C., Cok, D.R., Müller, P., Kiniry, J.R., Chalin, P.: JML reference manual. http://www.jmlspecs.org (2008)
Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# programming system: an overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.L., Muntean, T. (eds.) CASSIS 2004: Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, International Workshop, Marseille, France, March 10–14, 2004, Revised Selected Papers. Lecture Notes in Computer Science, vol. 3362, pp. 49–69. Springer, New York (2004)
Chalin, P., James, P.R., Karabotsos, G.: An integrated verification environment for JML: architecture and early results. In: SAVCBS ’07: Proceedings of the 2007 Workshop on Specification and Verification of Component-Based Systems, pp. 47–53 (2007)
Leino, K.R.M.: Toward reliable modular programs. Ph.D. thesis, California Institute of Technology, Pasadena (1995)
Nipkow, T., Paulson, L.C., Wenzel, M.: Isabelle/HOL—A Proof Assistant for Higher-Order Logic. LNCS, vol. 2283. Springer, New York (2002)
Kolman, B., Busby, R.C.: Discrete Mathematical Structures for Computer Science, 2nd edn. Prentice-Hall, Upper Saddle River (1986)
Chalin, P., James, P.R.: Non-null references by default in Java: alleviating the nullity annotation burden. In: Proceedings of the 21st European Conference on Object-Oriented Programming (ECOOP’07). Berlin, Germany (2007)
James, P.R., Chalin, P.: Enhanced extended static checking in JML4: benefits of multiple-prover support. In: ACM SAC 2009 (24th Annual ACM Symposium on Applied Computing) (2009)
Barnett, M., Leino, K.R.M.: Weakest-precondition of unstructured programs. In: PASTE ’05: The 6th ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pp. 82–87. ACM, New York (2005)
Flanagan, C., Saxe, J.B.: Avoiding exponential explosion: generating compact verification conditions. In: POPL ’01: Proceedings of the 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 193–205. ACM, New York (2001). doi:http://doi.acm.org/10.1145/360204.360220
Dijkstra, E.W.: A Discipline of Programming. Prentice-Hall, Englewood Cliffs (1976)
Isabelle: Isabelle homepage. http://isabelle.in.tum.de (2008)
Paulson, L.C., Susanto, K.W.: Source-level proof reconstruction for interactive theorem proving. In: Schneider, K., Brandt, J. (eds.) Theorem Proving in Higher Order Logics: TPHOLs 2007. LNCS, vol. 4732, pp. 232–245. Springer, New York (2007). doi:10.1007/978-3-540-74591-4. URL:http://www.cl.cam.ac.uk/~lp15/papers/Automation/reconstruction.pdf
Why: Software verification platform: why homepage. http://why.lri.fr (2008)
Metis theorem prover: Metis homepage. http://www.gilith.com/software/metis/ (2008)
Wenzel, M.: Isar - a generic interpretative approach to readable formal proof documents. In: TPHOLs ’99: Proceedings of the 12th International Conference on Theorem Proving in Higher Order Logics, pp. 167–184. Springer, London (1999)
Eclipse: Bug 142126—utilizing multiple CPUs for Java compiler. https://bugs.eclipse.org/bugs/show_bug.cgi?id=142126 (2008)
Amdahl, G.M.: Validity of the single processor approach to achieving large scale computing capabilities. In: Proceedings of AFIPS Conference, pp. 79–81. San Francisco, CA (1967)
Krishnaprasad, S.: Uses and abuses of Amdahl’s law. J. Comput. Small Coll. 17(2), 288–293 (2001)
Grigore, R., Moskal, M.: Edit and verify. In: Proceedings of the 6th International Workshop on First-Order Theorem Proving (FTP 2007), Liverpool (2007)
Leino, K.R.M., Monahan, R.: Reasoning about comprehensions with first-order smt solvers. In: ACM SAC 2009 SVT (Software Verification and Testing Track of the 24th Annual ACM Symposium on Applied Computing) (2009)
Böhme, S., Leino, R., Wolff, B.: HOL-Boogie—an interactive prover for the Boogie program verifier. In: Proceedings of the 21th International Conference on Theorem proving in Higher-Order Logics (TPHOLs 2008). LNCS, vol. 5170. Springer, New York (2008). url:http://www-wjp.cs.uni-sb.de/publikationen/boehme_tphols_2008.pdf
Filliâtre, J.C., Hubert, T., Marché, C.: The Caduceus verification tool for C programs: tutorial and reference manual. http://caduceus.lri.fr (2008)
Filliâtre, J.C.: The WHY verification tool: tutorial and reference manual. http://why.lri.fr (2008)
Karabotsos, G., Chalin, P., James, P.R., Giannas, L.: Total correctness of recursive functions using JML4 FSPV. In: SAVCBS ’08: Proceedings of the 2008 Workshop on Specification and Verification of Component-Based Systems (2008)
Wilson, T., Maharaj, S., Clark, R.G.: Omnibus: a clean language and supporting tool for integrating different assertion-based verification techniques. In: Proceedings of REFT 2005. Newcastle, UK (2005). url:http://www.cs.stir.ac.uk/~twi/omni/papers/reft2005.pdf
Wilson, T., Maharaj, S., Clark, R.G.: Omnibus verification policies: A flexible, configurable approach to assertion-based software verification. In: SEFM’05, The 3rd IEEE International Conference on Software Engineering and Formal Methods (2005). url:http://www.cs.stir.ac.uk/~twi/omni/papers/sefm2005.pdf
Wilson, T.: The omnibus language and integrated verification approach. Ph.D. thesis, University of Stirling, Stirling (2008)
Wilson, T., Maharaj, S., Clark, R.G.: Push-button tools for application developers, full formal verification for component vendors. Tech. rep., Department of Computing Science and Mathematics, University of Stirling, Stirling (2006)
Burdy, L., Requet, A.: JACK: Java applet correctness kit. In: 4th Gemplus Developer Conference (2002)
Burdy, L., Requet, A., Lanet, J.L.: Java applet correctness: a developer-oriented approach. In: Formal Methods (FME’03). LNCS, vol. 2805, pp. 422–439 (2003)
GNUO Perating System: Parallel - GNU ‘make’. http://www.gnu.org/software/automake/manual/make/Parallel.html (2006)
Inc., A.: Xcode build system guide. http://developer.apple.com/documentation/DeveloperTools/Conceptual/XcodeBuildSystem/Xcode_Build_System.pdf. (2009)
distcc: Distcc: a fast, free distributed C/C++ compiler. distcc.org (2008)
openSUSE: Icecream—openSUSE. http://en.opensuse.org/Icecream (2006)
Hickey, J., Nogin, A., Constable, R.L., Aydemir, B.E., Barzilay, E., Bryukhov, Y., Eaton, R., Granicz, A., Kopylov, A., Kreitz, C., Krupski, V.N., Lorigo, L., Schmitt, S., Witty, C., Yu, X.: MetaPRL—a modular logical environment. In: Basin, D., Wolff, B. (eds.) Proceedings of the 16th International Conference on Theorem Proving in Higher Order Logics (TPHOLs 2003), pp. 287–303. Springer, London (2003)
Hickey, J.: Fault-tolerant distributed theorem proving. In: CADE-16: Proceedings of the 16th International Conference on Automated Deduction, pp. 227–231. Springer, London (1999)
Rodeh, O., Birman, K., Dolev, D.: The architecture and performance of security protocols in the ensemble group communication system: Using diamonds to guard the castle. J. ACM Trans. Info. Syst. Sec. (TISSEC) 4(3), 289–319 (2001). doi:http://doi.acm.org/10.1145/501978.501982
Vandevoorde, M.T., Kapur, D.: Distributed Larch Prover (DLP): an experiment in parallelizing a rewrite-rule based prover. In: RTA ’96: Proceedings of the 7th International Conference on Rewriting Techniques and Applications, pp. 420–423. Springer, London (1996)
Hunter, C., Robinson, P., Strooper, P.: Agent-based distributed software verification. In: ACSC ’05: Proceedings of the Twenty-eighth Australasian Conference on Computer Science, pp. 159–164, Darlinghurst (2005)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
James, P.R., Chalin, P. Faster and More Complete Extended Static Checking for the Java Modeling Language. J Autom Reasoning 44, 145 (2010). https://doi.org/10.1007/s10817-009-9134-9
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s10817-009-9134-9