skip to main content
research-article
Free Access

A termination analyzer for Java bytecode based on path-length

Published:01 March 2010Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

References

  1. Aho, A. V., Sethi, R., and Ullman, J. D. 1986. Compilers, Principles Techniques and Tools. Addison Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. Bannwart, F. and Müller, P. 2005. A program logic for bytecode. Electr. Not. Theor. Comput. Sci. 141, 1, 255--273. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  13. Ben-Amram, A. M. and Lee, C. S. 2007. Program termination analysis in polynomial time. ACM Trans. Program. Lang. Syst. 29, 1. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. Bryant, R. E. 1986. Graph-Based algorithms for boolean function manipulation. IEEE Trans. Comput. 35, 8, 677--691. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. 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 ScholarGoogle Scholar
  25. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  26. Codish, M. and Taboch, C. 1999. A semantics basis for termination analysis of logic programs. J. Logic Program. 41, 1, 103--123.Google ScholarGoogle ScholarCross RefCross Ref
  27. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  28. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  30. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  31. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  32. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  33. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  34. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  35. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  36. De Schreye, D. and Decorte, S. 1994. Termination of logic programs: The never-ending story. Journal of Logic Programming 19/20, 199--260.Google ScholarGoogle ScholarCross RefCross Ref
  37. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  38. 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 ScholarGoogle ScholarCross RefCross Ref
  39. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  40. 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 ScholarGoogle Scholar
  41. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle Scholar
  44. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  45. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  46. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  47. Jaffar, J. and Maher, M. J. 1994. Constraint logic programming: A survey. J. Logic Program. 19, 20, 503--581.Google ScholarGoogle Scholar
  48. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  49. 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 ScholarGoogle ScholarCross RefCross Ref
  50. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  51. Lehner, H. and Müller, P. 2007. Formal translation of bytecode into boogiePL. Electr. Not. Theor. Comput. Sci. 190, 1, 35--50. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. 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 ScholarGoogle Scholar
  53. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  54. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  55. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  56. Lindholm, T. and Yellin, F. 1999. The Java#8482; Virtual Machine Specification, 2nd ed. Addison-Wesley. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  58. 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 ScholarGoogle Scholar
  59. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  60. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  61. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  62. Manson, J. and Pugh, W. 2001. Core semantics of multithreaded java. In Proceedings of the ACM Java Grande Conference. ACM, 29--38. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  64. 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 ScholarGoogle Scholar
  65. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  66. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  67. Miné, A. 2006. The octagon abstract domain. Higher-Order Symb. Comput. 19, 1, 31--100. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. Monniaux, D. 2008. The pitfalls of verifying floating-point computations. ACM Trans. Program. Lang. Syst. 30, 3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. 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 ScholarGoogle Scholar
  70. 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 ScholarGoogle Scholar
  71. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  72. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  73. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  74. Pippenger, N. 1997. Pure versus impure lisp. ACM Trans. Program. Lang. Syst. 19, 2, 223--238. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Plümer, L. 1990. Termination proofs for logic programs. Lecture Notes in Computer Science, vol. 446. Springer. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. 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 ScholarGoogle Scholar
  77. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  78. Podelski, A. and Rybalchenko, A. 2007. Transition predicate abstraction and fair termination. ACM Trans. Program. Lang. Syst. 29, 3. Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  80. 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 ScholarGoogle Scholar
  81. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  82. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  83. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  84. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  85. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  86. Spoto, F. 2008a. The julia static analyser. http://profs.sci.univr.it/~spoto/julia.Google ScholarGoogle Scholar
  87. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  88. 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 ScholarGoogle Scholar
  89. Spoto, F. and Jensen, T. 2003. Class analyses as abstract interpretations of trace semantics. ACM Trans. Programm. Lang. Syst. 25, 5, 578--630. Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. Spoto, F., Mesnard, F., and Payet, E. 2008. Julia + BinTerm: An automatic termination prover for Java bytecode. http://spy.sci.univr.it/JuliaWeb.Google ScholarGoogle Scholar
  91. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  92. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  93. Stoer, J. and Witzgall, C. 1970. Convexity and Optimization in Finite Dimensions I. Springer.Google ScholarGoogle Scholar
  94. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  95. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  96. Taboch, C., Genaim, S., and Codish, M. TerminWeb: Semantic based termination analyser for logic programs. http://www.cs.bgu.ac.il/~mcodish/TerminWeb.Google ScholarGoogle Scholar
  97. Tarski, A. 1955. A lattice-theoretical fixpoint theorem and its applications. Pacific J. Math 5, 285--309.Google ScholarGoogle ScholarCross RefCross Ref
  98. Turing, A. 1936. On computable numbers, with an application to the entscheidungsproblem. London Math. Soc. 42, 2, 230--265.Google ScholarGoogle Scholar
  99. Ullman, J. D. and Gelder, A. V. 1988. Efficient tests for top-down termination of logical rules. J. ACM 35, 2, 345--373. Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. Visser, W., Havelund, K., Brat, G. P., Park, S., and Lerda, F. 2003. Model checking programs. Autom. Softw. Engin. 10, 2, 203--232. Google ScholarGoogle ScholarDigital LibraryDigital Library
  101. Wildmoser, M., Chaieb, A., and Nipkow, T. 2005. Bytecode analysis for proof carrying code. Electr. Not. Theore. Comput. Sci. 141, 1, 19--34. Google ScholarGoogle ScholarDigital LibraryDigital Library
  102. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  103. 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 ScholarGoogle Scholar

Index Terms

  1. A termination analyzer for Java bytecode based on path-length

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM Transactions on Programming Languages and Systems
          ACM Transactions on Programming Languages and Systems  Volume 32, Issue 3
          March 2010
          176 pages
          ISSN:0164-0925
          EISSN:1558-4593
          DOI:10.1145/1709093
          Issue’s Table of Contents

          Copyright © 2010 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 1 March 2010
          • Accepted: 1 July 2009
          • Revised: 1 May 2009
          • Received: 1 September 2007
          Published in toplas Volume 32, Issue 3

          Permissions

          Request permissions about this article.

          Request Permissions

          Check for updates

          Qualifiers

          • research-article
          • Research
          • Refereed

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!