Abstract
It is important to prove that supposedly terminating programs actually terminate, particularly if those programs must be run on critical systems or downloaded into a client such as a mobile phone. Although termination of computer programs is generally undecidable, it is possible and useful to prove termination of a large, nontrivial subset of the terminating programs. In this article, we present our termination analyzer for sequential Java bytecode, based on a program property called path-length. We describe the analyses which are needed before the path-length can be computed such as sharing, cyclicity, and aliasing. Then we formally define the path-length analysis and prove it correct with respect to a reference denotational semantics of the bytecode. We show that a constraint logic program PCLP can be built from the result of the path-length analysis of a Java bytecode program P and formally prove that if PCLP terminates, then P also terminates. Hence a termination prover for constraint logic programs can be applied to prove the termination of P. We conclude with some discussion of the possibilities and limitations of our approach. Ours is the first existing termination analyzer for Java bytecode dealing with any kind of data structures dynamically allocated on the heap and which does not require any help or annotation on the part of the user.
Supplemental Material
Available for Download
Online appendix to a termination analyzer for Java bytecode based on path-length on article 8.
- Aho, A. V., Sethi, R., and Ullman, J. D. 1986. Compilers, Principles Techniques and Tools. Addison Wesley. Google Scholar
Digital Library
- Ahrendt, W., Baar, T., Beckert, B., Bubel, R., Giese, M., Hähnle, R., Menzel, W., Mostowski, W., Roth, A., Schlager, S., and Schmitt, P. H. 2005. The KeY Tool. Softw. Syst. Model. 4, 1, 32--54.Google Scholar
Digital Library
- Albert, E., Arenas, P., Codish, M., Genaim, S., Puebla, G., and Zanardini, D. 2007a. Termination analysis of Java bytecode. In Proceedings of the 9th International Workshop on Termination (WST'07). A. Serebrenik and D. Hofbauer, Eds. Google Scholar
Digital Library
- Albert, E., Arenas, P., Codish, M., Genaim, S., Puebla, G., and Zanardini, D. 2008. Termination analysis of Java bytecode. In Proceedings of the International Conference on Formal Methods for Open Object-Based Distributed Systems (FMOODS'08). G. Barthe and F. S. de Boer, Eds. Lecture Notes in Computer Science, vol. 5051. Springer, 2--18. Google Scholar
Digital Library
- Albert, E., Arenas, P., Genaim, S., Puebla, G., and Zanardini, D. 2007b. Cost analysis of java bytecode. In Proceedings of the 16th European Symposium on Programming (ESOP'07). R. De Nicola, Ed. Lecture Notes in Computer Science, vol. 4421. Springer, 157--172. Google Scholar
Digital Library
- Avery, J. 2006. Size-Change termination and bound analysis. In Proceedings of the 8th International Symposium on Functional and Logic Programming (FLOPS'06). M. Hagiya and P. Wadler, Eds. Lecture Notes in Computer Science, vol. 3945. Springer, 192--207. Google Scholar
Digital Library
- Babic, D., Hu, A. J., Rakamaric, Z., and Cook, B. 2007. Proving termination by divergence. In Proceedings of the 5th IEEE International Conference on Software Engineering and Formal Methods (SEFM'07). IEEE Computer Society, 93--102. Google Scholar
Digital Library
- Bacon, D. F. and Sweeney, P. F. 1996. Fast static analysis of c++ virtual function calls. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'96). ACM SIGPLAN Not. 31, 10, ACM, 324--341. Google Scholar
Digital Library
- Bagnara, R., Hill, P. M., Ricci, E., and Zaffanella, E. 2005. Precise widening operators for convex polyhedra. Sci. Comput. Program. 58, 1--2, 28--56. Google Scholar
Digital Library
- Bagnara, R., Hill, P. M., and Zaffanella, E. 2008. The Parma Polyhedra Library: Toward a complete set of numerical abstractions for the analysis and verification of hardware and software systems. Sci. Comput. Program. 72, 1--2, 3--21. Google Scholar
Digital Library
- Bannwart, F. and Müller, P. 2005. A program logic for bytecode. Electr. Not. Theor. Comput. Sci. 141, 1, 255--273. Google Scholar
Digital Library
- Barnett, M., Chang, B.-Y. E., DeLine, R., Jacobs, B., and Leino, K. R. M. 2005. Boogie: A modular reusable verifier for object-oriented programs. In Proceedings of the 4th International Symposium on Formal Methods for Components and Objects (FMCO'05). F. S. de Boer, M. M. Bonsangue, S. Graf, and W. P. de Roever, Eds. Lecture Notes in Computer Science, vol. 4111. Springer, 364--387. Google Scholar
Digital Library
- Ben-Amram, A. M. and Lee, C. S. 2007. Program termination analysis in polynomial time. ACM Trans. Program. Lang. Syst. 29, 1. Google Scholar
Digital Library
- Berdine, J., Calcagno, C., Cook, B., Distefano, D., O'Hearn, P. W., Wies, T., and Yang, H. 2007a. Shape analysis for composite data structures. In Proceedings of the 19th International Conference on Computer Aided Verification (CAV'07). W. Damm and H. Hermanns, Eds. Lecture Notes in Computer Science, vol. 4590. Springer, 178--192. Google Scholar
Digital Library
- Berdine, J., Chawdhary, A., Cook, B., Distefano, D., and O'Hearn, P. W. 2007b. Variance analyses from invariance analyses. In Proceedings of the 34th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'07). M. Hofmann and M. Felleisen, Eds. 211--224. Google Scholar
Digital Library
- Berdine, J., Cook, B., Distefano, D., and O'Hearn, P. W. 2006. Automatic termination proofs for programs with shape-shifting heaps. In Proceedings of the 18th International Conference on Computer Aided Verification (CAV'06). T. Ball and R. B. Jones, Eds. Lecture Notes in Computer Science, vol. 4144. Springer, 386--400. Google Scholar
Digital Library
- Bouajjani, A., Bozga, M., Habermehl, P., Iosif, R., Moro, P., and Vojnar, T. 2006. Programs with lists are counter automata. In Proceedings of the 18th International Conference on Computer Aided Verification (CAV'06). T. Ball and R. B. Jones, Eds. Lecture Notes in Computer Science, vol. 4144. Springer, 517--531. Google Scholar
Digital Library
- Bradley, A., Manna, Z., and Sipma, H. 2005. Termination of polynomial programs. In Proceedings of the 6th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'05). R. Cousot, Ed. Lecture Notes in Computer Science, vol. 3385. Springer, 113--129. Google Scholar
Digital Library
- Brodsky, A. and Sagiv, Y. 1989. Inference of monotonicity constraints in datalog programs. In Proceedings of the 8th ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems. ACM Press, 190--199. Google Scholar
Digital Library
- Brotherston, J., Bornat, R., and Calcagno, C. 2008. Cyclic proofs of program termination in separation logic. In Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'08). G. C. Necula and P. Wadler, Eds. ACM, 101--112. Google Scholar
Digital Library
- Bryant, R. E. 1986. Graph-Based algorithms for boolean function manipulation. IEEE Trans. Comput. 35, 8, 677--691. Google Scholar
Digital Library
- Chang, B.-Y. E. and Leino, K. R. M. 2005. Abstract interpretation with alien expressions and heap structures. In Proceedings of the 6th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'05). R. Cousot, Ed. Lecture Notes in Computer Science, vol. 3385. Springer, 147--163. Google Scholar
Digital Library
- Choi, J. D., Burke, M., and Carini, P. 1993. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In Proceedings of the 20th Symposium on Principles of Programming Languages (POPL'93). ACM, 232--245. Google Scholar
Digital Library
- Codish, M. 2007. Proving termination with (boolean) satisfaction. In Proceedings of the 17th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR'07). A. King, Ed. Lecture Notes in Computer Science, vol. 4915. 1--7.Google Scholar
- Codish, M., Lagoon, V., and Stuckey, P. J. 2005. Testing for termination with monotonicity constraints. In Proceedings of the 21st International Conference on Logic Programming (ICLP'05). M. Gabbrielli and G. Gupta, Eds. Lecture Notes in Computer Science, vol. 3668. 326--340. Google Scholar
Digital Library
- Codish, M. and Taboch, C. 1999. A semantics basis for termination analysis of logic programs. J. Logic Program. 41, 1, 103--123.Google Scholar
Cross Ref
- Cook, B., Podelski, A., and Rybalchenko, A. 2005. Abstraction refinement for termination. In Proceedings of the 12th Static Analysis Symposium (SAS'05). C. Hankin and I. Siveroni, Eds. Lecture Notes in Computer Science, vol. 3672. Springer, 87--101. Google Scholar
Digital Library
- Cook, B., Podelski, A., and Rybalchenko, A. 2006a. Termination proofs for systems code. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'06). M. I. Schwartzbach and T. Ball, Eds. ACM, 415--426. Google Scholar
Digital Library
- Cook, B., Podelski, A., and Rybalchenko, A. 2006b. Terminator: beyond safety. In Proceedings of the 18th International Conference on Computer Aided Verification (CAV'06). T. Ball and R. B. Jones, Eds. Lecture Notes in Computer Science, vol. 4144. Springer, 415--418. Google Scholar
Digital Library
- Cook, B., Podelski, A., and Rybalchenko, A. 2007. Proving thread termination. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'07). J. Ferrante and K. S. McKinley, Eds. ACM, 320--330. Google Scholar
Digital Library
- Corbett, J. C., Dwyer, M. B., Hatcliff, J., Laubach, S., Pasareanu, C. S., Robby, and Zheng, H. 2000. Bandera: Extracting finite-state models from java source code. In Proceedings of the 22nd International Conference on Software Engineering (ICSE'00). ACM, 439--448. Google Scholar
Digital Library
- Cousot, P. 2005. Proving program invariance and termination by parametric abstraction, lagrangian relaxation and semidefinite programming. In Proceedings of the 6th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'05). R. Cousot, Ed. Lecture Notes in Computer Science, vol. 3385. Springer, 1--24. Google Scholar
Digital Library
- Cousot, P. and Cousot, R. 1977. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of the 4th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'77). 238--252. Google Scholar
Digital Library
- Cousot, P. and Cousot, R. 1979. Systematic design of program analysis frameworks. In Proceedings of the 6th ACM Symposium on Principles of Programming Languages (POPL'79). ACM, 269--282. Google Scholar
Digital Library
- Cousot, P. and Halbwachs, N. 1978. Automatic discovery of linear restraints among variables of a program. In Proceedings of the 5th ACM Symposium on Principles of Programming Languages (POPL'78). ACM, 84--96. Google Scholar
Digital Library
- De Schreye, D. and Decorte, S. 1994. Termination of logic programs: The never-ending story. Journal of Logic Programming 19/20, 199--260.Google Scholar
Cross Ref
- Dean, J., Grove, D., and Chambers, C. 1995. Optimization of object-oriented programs using static class hierarchy analysis. In Proceedings of the 9th European Conference on Object-Oriented Programming (ECOOP'95). W. G. Olthoff, Ed. Lecture Notes in Computer Science, vol. 952. Springer, 77--101. Google Scholar
Digital Library
- Dershowitz, N., Lindenstrauss, N., Sagiv, Y., and Serebrenik, A. 2001. A general framework for automatic termination analysis of logic programs. Appl. Algebra Engin. Comm. Comput. 12, 1-2, 117--156.Google Scholar
Cross Ref
- Distefano, D., O'Hearn, P. W., and Yang, H. 2006. A local shape analysis based on separation logic. In Proceedings of the 12th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS'06). H. Hermanns and J. Palsberg, Eds. Lecture Notes in Computer Science, vol. 3920. Springer, 287--302. Google Scholar
Digital Library
- Floyd, R. W. 1967. Assigning meanings to programs. In Mathematical Aspects of Computer Science, J. T. Schwartz, Ed. Proceedings of Symposia in Applied Mathematics, vol. 19. American Mathematical Society, Providence, Rhode Island, 19--32.Google Scholar
- Gabbrielli, M. and Giacobazzi, R. 1994. Goal independency and call patterns in the analysis of logic programs. In Proceedings of the ACM Symposium on Applied Computing (SAC'94). ACM, 394--399. Google Scholar
Digital Library
- Genaim, S. and Codish, M. 2005. Inferring termination conditions for logic programs using backwards analysis. Theory Prac. Logic Program. 5, 1-2, 75--91. Google Scholar
Digital Library
- Genaim, S. and Spoto, F. 2008. Constancy analysis. In Proceedings of the 10th Workshop on Formal Techniques for Java-like Programs (FTfJP'08), M. Huisman, Ed.Google Scholar
- Giesl, J., Schneider-Kamp, P., and Thiemann, R. 2006. Automatic termination proofs in the dependency pair framework. In Proceddings of the 3th International Joint Conference on Automated Reasoning (IJCAR'06). U. Furbach and N. Shankar, Eds. Lecture Notes in Computer Science, vol. 4130. Springer, 281--286. Google Scholar
Digital Library
- Gotsman, A., Berdine, J., and Cook, B. 2006. Interprocedural shape analysis with separated heap abstractions. In Proceedings of the 13th International Static Analysis Symposium (SAS'06). K. Yi, Ed. Lecture Notes in Computer Science, vol. 4134. Springer, 240--260. Google Scholar
Digital Library
- Ishtiaq, S. S. and O'Hearn, P. W. 2001. BI as an assertion language for mutable data structures. In Proceedings of the 28th Symposium on Principles of Programming Languages (POPL'01). ACM, 14--26. Google Scholar
Digital Library
- Jaffar, J. and Maher, M. J. 1994. Constraint logic programming: A survey. J. Logic Program. 19, 20, 503--581.Google Scholar
- Klein, G. and Nipkow, T. 2006. A machine-checked model for a java-like language, virtual machine, and compiler. ACM Trans. Program. Lang. Syst. 28, 4, 619--695. Google Scholar
Digital Library
- Leavens, G. T., Leino, K. R. M., and Müller, P. 2007. Specification and verification challenges for sequential object-oriented programs. Formal Aspects Comput. 19, 2, 159--189. Google Scholar
Cross Ref
- Lee, C. S., Jones, N. D., and Ben-Amram, A. M. 2001. The size-change principle for program termination. In Proceedings of the 28th Symposium on Principles of Programming Languages (POPL'01). ACM, 81--92. Google Scholar
Digital Library
- Lehner, H. and Müller, P. 2007. Formal translation of bytecode into boogiePL. Electr. Not. Theor. Comput. Sci. 190, 1, 35--50. Google Scholar
Digital Library
- Leino, K. R. M. and Müller, P. 2004. Object invariants in dynamic contexts. In Proceedings of the 18th European Conference on Object-Oriented Programming (ECOOP'04). M. Odersky, Ed. Lecture Notes in Computer Science, vol. 3086. Springer, 491--516.Google Scholar
- Leino, K. R. M. and Müller, P. 2005. Modular verification of static class invariants. In Proceedings of the International Symposium of Formal Methods Europe (FM'05). J. Fitzgerald, I. J. Hayes, and A. Tarlecki, Eds. Lecture Notes in Computer Science, vol. 3582. Springer, 26--42. Google Scholar
Digital Library
- Leino, K. R. M. and Wallenburg, A. 2008. Class-local object invariants. In Proceedings of the 1st India Software Engineering Conference (ISEC'08). G. Schroff, P. Jalote, and S. K. Rajamani Eds., ACM, 57--66. Google Scholar
Digital Library
- Lindenstrauss, N., Sagiv, Y., and Serebrenik, A. 1997. TermiLog: A system for checking termination of queries to logic programs. In Proceedings of the 9th International Conference on Computer Aided Verfication (CAV'97). O. Grumberg, Ed. Lecture Notes in Computer Science, vol. 1254. Springer, 444--447. Google Scholar
Digital Library
- Lindholm, T. and Yellin, F. 1999. The Java#8482; Virtual Machine Specification, 2nd ed. Addison-Wesley. Google Scholar
Digital Library
- Lindstrom, G., Mehlitz, P. C., and Visser, W. 2005. Model checking real time java using java Pathfinder. In Proceedings of the 3rd International Symposium on Automated Technology for Verification and Analysis (ATVA,05). D. Peled and Y.-K. Tsay, Eds. Lecture Notes in Computer Science, vol. 3707. Springer, 444--456. Google Scholar
Digital Library
- Loginov, A., Reps, T. W., and Sagiv, M. 2006. Refinement-based verification for possibly-cyclic lists. In Proceedings of Theory and Practice of Program Analysis and Compilation, Essays Dedicated to Reinhard Wilhelm on the Occasion of His 60th Birthday, T. W. Reps, M. Sagiv, and J. Bauer, Eds. Lecture Notes in Computer Science, vol. 4444. Springer, 247--272.Google Scholar
- Logozzo, F. and Fähndrich, M. 2008. On the relative completeness of bytecode analysis versus source code analysis. In Proceedings of the 17th International Conference on Compiler Construction (CC'08). L. Hendren, Ed. Lecture Notes in Computer Science. Springer, 197--212. Google Scholar
Digital Library
- Manolios, P. and Vroon, D. 2006a. Integrating static analysis and general-purpose theorem proving for termination analysis. In Proceedings of the 28th International Conference on Software Engineering (ICSE'06). L. J. Osterweil, H. D. Rombach, and M. L. Soffa, Eds. ACM, 873--876. Google Scholar
Digital Library
- Manolios, P. and Vroon, D. 2006b. Termination analysis with calling context graphs. In Proceedings of the 18th International Conference on Computer Aided Verification (CAV'06). T. Ball and R. B. Jones, Eds. Lecture Notes in Computer Science, vol. 4144. Springer, 401--414. Google Scholar
Digital Library
- Manson, J. and Pugh, W. 2001. Core semantics of multithreaded java. In Proceedings of the ACM Java Grande Conference. ACM, 29--38. Google Scholar
Digital Library
- Manson, J., Pugh, W., and Adve, S. V. 2005. The java memory model. In Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL'05). J. Palsberg and M. Abadi, Eds. ACM, 378--391. Google Scholar
Digital Library
- Mesnard, F. 1996. Inferring left-terminating classes of queries for constraint logic programs. In Proceedings of the Joint International Conference and Symposium on Logic Programming, M. Maher, Ed. The MIT Press, 7--21.Google Scholar
- Mesnard, F. and Bagnara, R. 2005. cTI: A constraint-based termination inference tool for ISO-Prolog. Theory Pract. Logic Program. 5, 1-2, 243--257. Google Scholar
Digital Library
- Mesnard, F. and Serebrenik, A. 2008. Recurrence with affine level mappings is p-time decidable for CLP(R). Theory Pract. Logic Program. 8, 1, 111--119. Google Scholar
Digital Library
- Miné, A. 2006. The octagon abstract domain. Higher-Order Symb. Comput. 19, 1, 31--100. Google Scholar
Digital Library
- Monniaux, D. 2008. The pitfalls of verifying floating-point computations. ACM Trans. Program. Lang. Syst. 30, 3. Google Scholar
Digital Library
- Müller, P. 2007. Reasoning about object structures using ownership. In Proceedings of the Workshop on Verified Software: Theories, Tools, Experiments (VSTTE'07). B. Meyer and J. Woodcock, Eds. Lecture Notes in Computer Science, vol. 4171. Springer.Google Scholar
- Nyugen, M. T. and De Schreye, D. 2005. Polynomial interpretations as a basis for termination analysis of logic programs. In Proceedings of the 21st International Conference on Logic Programming (ICLP'05). M. Gabbrielli and G. Gupta, Eds. Lecture Notes in Computer Science, vol. 3668. Springer, 311--326.Google Scholar
- Ohlebusch, E., Claves, C., and Marché, C. 2000. TALP: A tool for the termination analysis of logic programs. Proceedings of the 11th International Conference on Rewriting Techniques and Applications (RTA'00). L. Bachmair, Ed. Lecture Notes in Computer Science, vol. 1833. Springer, 270--273. Google Scholar
Digital Library
- Palsberg, J. and Schwartzbach, M. I. 1991. Object-Oriented type inference. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA'91). A. Paepcke, Ed. ACM SIGPLAN Not., 26, 11 ACM, 146--161. Google Scholar
Digital Library
- Payet, E. and Spoto, F. 2007. Magic-sets transformation for the analysis of java bytecode. In Proceedings of the 14th International Static Analysis Symposium (SAS'07). H. R. Nielson and G. Filé, Eds. Lecture Notes in Computer Science, vol. 4634. Springer, 452--467. Google Scholar
Digital Library
- Pippenger, N. 1997. Pure versus impure lisp. ACM Trans. Program. Lang. Syst. 19, 2, 223--238. Google Scholar
Digital Library
- Plümer, L. 1990. Termination proofs for logic programs. Lecture Notes in Computer Science, vol. 446. Springer. Google Scholar
Digital Library
- Podelski, A. and Rybalchenko, A. 2004a. A complete method for synthesis of linear ranking functions. In Proceedings of the 5th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'04). B. Steffen and G. Levi, Eds. Lecture Notes in Computer Science, vol. 2937. Springer, 239--251.Google Scholar
- Podelski, A. and Rybalchenko, A. 2004b. Transition invariants. In Proceedings of the 19th IEEE Symposium on Logic in Computer Science (LICS'04). H. Ganzinger, Ed. IEEE, 32--41. Google Scholar
Digital Library
- Podelski, A. and Rybalchenko, A. 2007. Transition predicate abstraction and fair termination. ACM Trans. Program. Lang. Syst. 29, 3. Google Scholar
Digital Library
- Pollet, I., Le Charlier, B., and Cortesi, A. 2001. Distinctness and sharing domains for static analysis of java programs. In Proceedings of the 15th European Conference on Object-Oriented Programming (ECOOP'01). Lecture Notes in Computer Science, vol. 2072. 77--98. Google Scholar
Digital Library
- Reynolds, J. C. 2000. Intuitionistic reasoning about shared mutable data structure. In Proceedings of Millennial Perspectives in Computer Science, Symposium in Honour of Sir Tony Hoare, J. Davies, B. Roscoe, and J. Woodcock, Eds. 303--321.Google Scholar
- Rossignoli, S. and Spoto, F. 2006. Detecting non-cyclicity by abstract compilation into boolean functions. In Proceedings of the 7th International Conference on Verification, Model Checking and Abstract Interpretation (VMCAI'06). E. A. Emerson and K. S. Namjoshi, Eds. Lecture Notes in Computer Science, vol. 3855. Springer, 95--110. Google Scholar
Digital Library
- Salcianu, A. and Rinard, M. C. 2005. Purity and side effect analysis for java programs. In Proceedings of the 6th International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI'05). R. Cousot. Ed. Lecture Notes in Computer Science, vol. 3385. Springer, 199--215. Google Scholar
Digital Library
- Schneider-Kamp, P., Giesl, J., Serebrenik, A., and Thiemann, R. 2006. Automated termination analysis for logic programs by term rewriting. In Proceedings of the 16th International Symposium on Logic-Based Program Synthesis and Transformation (LOPSTR'06). G. Puebla. Ed. Lecture Notes in Computer Science, vol. 4407. Springer, 177--193. Google Scholar
Digital Library
- Secci, S. and Spoto, F. 2005. Pair-sharing analysis of object-oriented programs. In Proceedings of Static Analysis Symposium (SAS'05). C. Hankin and I. Siveroni, Eds. Lecture Notes in Computer Science, vol. 3672. 320--335. Google Scholar
Digital Library
- Serebrenik, A. and De Schreye, D. 2002. On termination of logic programs with floating point computations. In Proceedings of the 9th International Symposium on Static Analysis (SAS'02). M. V. Hermenegildo and G. Puebla, Eds. Lecture Notes in Computer Science, vol. 2477. Springer, 151--164. Google Scholar
Digital Library
- Spoto, F. 2008a. The julia static analyser. http://profs.sci.univr.it/~spoto/julia.Google Scholar
- Spoto, F. 2008b. Nullness analysis in boolean form. In Proceedings of the 6th IEEE International Conference on Software Engineering and Formal Methods (SEFM'08). A. Cerone and S. Goner Eds. IEEE Computer Society, 21--30. Google Scholar
Digital Library
- Spoto, F., Hill, P. M., and Payet, E. 2006. Path-Length analysis for object-oriented programs. In International Workshop on Emerging Applications of Abstract Interpretation (EAAI'06). http://profs.sci.univr.it/~spoto/papers.html.Google Scholar
- Spoto, F. and Jensen, T. 2003. Class analyses as abstract interpretations of trace semantics. ACM Trans. Programm. Lang. Syst. 25, 5, 578--630. Google Scholar
Digital Library
- Spoto, F., Mesnard, F., and Payet, E. 2008. Julia + BinTerm: An automatic termination prover for Java bytecode. http://spy.sci.univr.it/JuliaWeb.Google Scholar
- Spoto, F., Lu, L., and Mesnard, F. 2009. Using CLP simplifications to improve Java bytecode termination analysis. Electr. Notes Theor. Comput. Sci. 253, 5, 129--144. Google Scholar
Digital Library
- Steensgaard, B. 1996. Points-to analysis in almost linear time. In Proceedings of the 23th ACM Symposium on Principles of Programming Languages (POPL'96). 32--41. Google Scholar
Digital Library
- Stoer, J. and Witzgall, C. 1970. Convexity and Optimization in Finite Dimensions I. Springer.Google Scholar
- Suwimonteerabuth, D., Berger, F., Schwoon, S., and Esparza, J. 2007. jMoped: A test environment for java programs. In Proceedings of the 19th International Conference on Computer Aided Verification (CAV'07). W. Damm and H. Hermanns, Eds. Lecture Notes in Computer Science, vol. 4590. Springer, 164--167. Google Scholar
Digital Library
- Suwimonteerabuth, D., Schwoon, S., and Esparza, J. 2005. jMoped: A java bytecode checker based on moped. In Proceedings of the 11th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS'05). N. Halbwachs and L. D. Zuck, Eds. Lecture Notes in Computer Science, vol. 3440. Springer, 541--545. Google Scholar
Digital Library
- Taboch, C., Genaim, S., and Codish, M. TerminWeb: Semantic based termination analyser for logic programs. http://www.cs.bgu.ac.il/~mcodish/TerminWeb.Google Scholar
- Tarski, A. 1955. A lattice-theoretical fixpoint theorem and its applications. Pacific J. Math 5, 285--309.Google Scholar
Cross Ref
- Turing, A. 1936. On computable numbers, with an application to the entscheidungsproblem. London Math. Soc. 42, 2, 230--265.Google Scholar
- Ullman, J. D. and Gelder, A. V. 1988. Efficient tests for top-down termination of logical rules. J. ACM 35, 2, 345--373. Google Scholar
Digital Library
- Visser, W., Havelund, K., Brat, G. P., Park, S., and Lerda, F. 2003. Model checking programs. Autom. Softw. Engin. 10, 2, 203--232. Google Scholar
Digital Library
- Wildmoser, M., Chaieb, A., and Nipkow, T. 2005. Bytecode analysis for proof carrying code. Electr. Not. Theore. Comput. Sci. 141, 1, 19--34. Google Scholar
Digital Library
- Wildmoser, M. and Nipkow, T. 2005. Asserting bytecode safety. In Proceedings of the 14th European Symposium on Programming (ESOP'05). S. Sagiv, Ed. Lecture Notes in Computer Science, vol. 3444. Springer, 326--341. Google Scholar
Digital Library
- Wilhelm, R., Reps, T. W., and Sagiv, S. 2002. Shape analysis and applications. In The Compiler Design Handbook, Y. N. Srikant and P. Shankar, Eds. 175--218.Google Scholar
Index Terms
A termination analyzer for Java bytecode based on path-length
Recommendations
Experiments with Non-Termination Analysis for Java Bytecode
Non-termination analysis proves that programs, or parts of a program, do not terminate. This is important since non-termination is often an unexpected behaviour of computer programs and exposes a bug in their code. While research has found ways of ...
Using CLP Simplifications to Improve Java Bytecode Termination Analysis
In an earlier work, a termination analyzer for Java bytecode was developed that translates a Java bytecode program into a constraint logic program and then proves the termination of the latter. An efficiency bottleneck of the termination analyzer is the ...
Termination graphs for Java bytecode
Verification, induction termination analysisTo prove termination of Java Bytecode (JBC) automatically, we transform JBC to finite termination graphs which represent all possible runs of the program. Afterwards, the graph can be translated into "simple" formalisms like term rewriting and existing ...






Comments