Skip to main content

Verified Bytecode Model Checkers

  • Conference paper
  • First Online:
Theorem Proving in Higher Order Logics (TPHOLs 2002)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2410))

Included in the following conference series:

Abstract

We have used Isabelle/HOL to formalize and prove correct an approach to bytecode verification based on model checking that we have developed for the Java Virtual Machine. Our work builds on, and extends, the formalization of the Java Virtual Machine and data flow analysis framework of Pusch and Nipkow. By building on their framework, we can reuse their results that relate the run-time behavior of programs with the existence of well-typings for the programs. Our primary extensions are to handle polyvariant data flow analysis and its realization as temporal logic model checking. Aside from establishing the correctness of our model-checking approach, our work contributes to understanding the interrelationships between classical data flow analysis and program analysis based on model checking.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. D. Basin, S. Friedrich, M.J. Gawkowski, and J. Posegga. Bytecode Model Checking: An Experimental Analysis. In 9th International SPIN Workshop on Model Checking of Software, 2002, volume 2318 of LNCS, pages 42–59, Grenoble. Springer-Verlag, 2002.

    Google Scholar 

  2. Y. Bertot. A Coq formalization of a type checker for object initialization in the Java Virtual Machine. Technical Report RR-4047, INRIA, Nov. 2000.

    Google Scholar 

  3. A. Coglio, A. Goldberg, and Z. Qian. Toward a provably-correct implementation of the JVM bytecode verifier. In Proc. DARPA Information Survivability Conference and Exposition (DISCEX’00), Vol. 2, pages 403–410. IEEE Computer Society Press, 2000.

    Article  Google Scholar 

  4. S. Freund and J. Mitchell. A type system for object initialisation in the Java byte-code language. In ACM Conf. Object-Oriented Programming: Systems, Languages and Applications, 1998.

    Google Scholar 

  5. S.N. Freund and J. C. Mitchell. A formal framework for the java bytecode language and verifier. In ACM Conf. Object-Oriented Programming: Systems, Languages and Applications, 1999.

    Google Scholar 

  6. A. Goldberg. A specification of Java loading and bytecode verification. In Proc. 5th ACM Conf. Computer and Communications Security, 1998.

    Google Scholar 

  7. M. Hagiya and A. Tozawa. On a new method for dataflow analysis of Java virtual machine subroutines. In G. Levi, editor. Static Analysis (SAS’98), volume 1503 of LNCS, pages 17–32. Springer-Verlag, 1998.

    Chapter  Google Scholar 

  8. G.A. Kildall. A unified approach to global program optimization. In Proc. ACM Symp. Principles of Programming Languages, pages 194–206, 1973.

    Google Scholar 

  9. X. Leroy. Java Bytecode Verification: An Overview. In G. Berry, H. Comon, and A. Finkel, editors. CAV 2001, LNCS, pages 265–285. Springer-Verlag, 2001.

    Google Scholar 

  10. T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1996.

    Google Scholar 

  11. T. Nipkow. Verified Bytecode Verifiers. In Foundations of Software Science and Computation Structure (FOSSACS’01), pages 347–363, Springer-Verlag, 2001.

    Google Scholar 

  12. T. Nipkow and D. v. Oheimb. Javaligth is type-safe-definitely. In Proc. 25th ACM Symp. Principles of Programming Languages, pages 161–170, 1998.

    Google Scholar 

  13. T. Nipkow, D.v. Oheimb, and C. Pusch. μJava: Embedding a programming language in a theorem prover. In F. Bauer and R. Steinbrüggen, editors, Foundations of Secure Computation, pages 117–144. IOS Press, 2000.

    Google Scholar 

  14. J. Posegga and H. Vogt. Java bytecode verification using model checking. In Workshop Fundamental Under spinnings of Java, 1998.

    Google Scholar 

  15. C. Pusch. Proving the soundness of a Java bytecode verifier specification in Isabelle/HOL. In W. Cleaveland, editor, Tools and Algorithms for the Construction and Analysis of Systems (TACAS’99), volume 1597 of LNCS, pages 89–103. Springer-Verlag, 1999.

    Chapter  Google Scholar 

  16. D.A. Schmidt. Data flow analysis is model checking of abstract interpretations. In POPL’98, pages 38–48. ACM Press 1998.

    Google Scholar 

  17. Z. Qian. A formal specification of Java Virtual Machine instructions for objects, methods and subroutines. In J. Alves-Foss, editor, Formal Syntax and Semantics of Java, volume 1523 of LNCS, pages 271–311. Springer-Verlag, 1999.

    Chapter  Google Scholar 

  18. Z. Qian. Standard fixpoint iteration for Java bytecode verification. ACM Trans. Programming Languages and Systems, 22(4):638–672, 2000.

    Article  Google Scholar 

  19. R. Stata and M. Abadi. A type system for Java bytecode subroutines. In Proc 25th ACM Symp. Principles of Programming Languages, pages 149–161. ACM Press, 1998.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2002 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Basin, D., Friedrich, S., Gawkowski, M. (2002). Verified Bytecode Model Checkers. In: Carreño, V.A., Muñoz, C.A., Tahar, S. (eds) Theorem Proving in Higher Order Logics. TPHOLs 2002. Lecture Notes in Computer Science, vol 2410. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45685-6_5

Download citation

  • DOI: https://doi.org/10.1007/3-540-45685-6_5

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-44039-0

  • Online ISBN: 978-3-540-45685-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics