Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1007/978-3-642-11957-6_23guideproceedingsArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article

Verifying a compiler for java threads

Published: 20 March 2010 Publication History

Abstract

A verified compiler is an integral part of every security infrastructure. Previous work has come up with formal semantics for sequential and concurrent variants of Java and has proven the correctness of compilers for the sequential part. This paper presents a rigorous formalisation (in the proof assistant Isabelle/HOL) of concurrent Java source and byte code together with an executable compiler and its correctness proof. It guarantees that the generated byte code shows exactly the same observable behaviour as the semantics for the multithreaded source code.

References

[1]
Aceto, L., van Glabbeek, R. J., Fokkink, W., Ingólfsdóttir, A.: Axiomatizing prefix iteration with silent steps. Information and Computation 127(1), 26-40 (1996)
[2]
Alves-Foss, J. (ed.): Formal Syntax and Semantics of Java. LNCS, vol. 1523. Springer, Heidelberg (1999)
[3]
Aspinall, D., Ševčík, J.: Formalising Java's data-race-free guarantee. In: Schneider, K., Brandt, J. (eds.) TPHOLs 2007. LNCS, vol. 4732, pp. 22-37. Springer, Heidelberg (2007)
[4]
Belblidia, N., Debbabi, M.: A dynamic operational semantics for JVML. Journal of Object Technology 6(3), 71-100 (2007)
[5]
Bergstra, J. A., Klop, J. W., Olderog, E. R.: Failures without chaos: a new process semantics for fair abstraction. In: IFIP 1987, Formal Description of Programming Concepts III, pp. 77-103. Elsevier Science Publishing, Amsterdam (1987)
[6]
Dave, M. A.: Compiler verification: a bibliography. SIGSOFT Software Engineering Notes 28(6), 2 (2003)
[7]
Flanagan, C., Freund, S. N., Lifshin, M., Qadeer, S.: Types for atomicity: Static checking and inference for Java. ACM TOPLAS 30(4), 1-53 (2008)
[8]
Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, 3rd edn. Addison-Wesley, Reading (2005)
[9]
Hammer, C., Snelting, G.: Flow-sensitive, context-sensitive, and object-sensitive information flow control based on program dependence graphs. International Journal of Information Security 8(6), 399-422 (2009)
[10]
Huisman, M., Petri, G.: BicolanoMT: a formalization of multi-threaded Java at bytecode level. In: BYTECODE 2008. ENTCS (2008)
[11]
Klein, G., Nipkow, T.: A machine-checked model for a Java-like language, virtual machine and compiler. ACM TOPLAS 28, 619-695 (2006)
[12]
Leinenbach, D.: Compiler Verification in the Context of Pervasive System Verification. PhD thesis, Saarland University (2008)
[13]
Leroy, X.: Formal certification of a compiler backend or: Programming a compiler with a proof assistant. In: POPL 2006, pp. 42-54. ACM, New York (2006)
[14]
Leroy, X.: Formal verification of a realistic compiler. Communications of the ACM 52(7), 107-115 (2009)
[15]
Leroy, X.: A formally verified compiler back-end. Journal of Automated Reasoning 43(4), 363-446 (2009)
[16]
Lindholm, T., Yellin, F.: The Java Virtual Machine Specification, Second Edition. Addison-Wesley, Reading (1999)
[17]
Liu, H., Moore, J. S.: Executable JVM Model for Analytical Reasoning: A Study. In: IVME 2003, pp. 15-23 (2003)
[18]
Lochbihler, A.: Type safe nondeterminism - a formal semantics of Java threads. In: FOOL 2008 (2008)
[19]
Lochbihler, A.: Jinja with threads. In: The Archive of Formal Proofs (2009), http://afp.sf.net/devel-entries/JinjaThreads.shtml (Formal proof development)
[20]
Milner, R.: A modal characterisation of observable machine-behaviour. In: Astesiano, E., Böhm, C. (eds.) CAAP 1981. LNCS, vol. 112, pp. 25-34. Springer, Heidelberg (1981)
[21]
Milner, R.: Communication and Concurrency. Prentice Hall, Englewood Cliffs (1989)
[22]
Nipkow, T. (ed.): Special Issue on Java Bytecode Verification. Journal of Automated Reasoning, vol. 30(3-4). Springer, Heidelberg (2003)
[23]
Nipkow, T., Paulson, L.C., Wenzel, M. T. (eds.): Isabelle/HOL. LNCS, vol. 2283. Springer, Heidelberg (2002)
[24]
Rittri, M.: Proving the correctness of a virtual machine by a bisimulation. Licentiate thesis, Göteborg University (1988)
[25]
Ševčík, J., Aspinall, D.: On validity of program transformations in the Java memory model. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 27-51. Springer, Heidelberg (2008)
[26]
Stärk, R. F., Schmid, J., Börger, E.: Java and the Java Virtual Machine. Springer, Heidelberg (2001)
[27]
Wand, M.: Compiler correctness for parallel languages. In: FPCA 1995, pp. 120- 134. ACM, New York (1995)
[28]
Wasserrab, D., Lohner, D., Snelting, G.: On PDG-based noninterference and its modular proof. In: PLAS 2009, pp. 31-44. ACM, New York (2009)

Cited By

View all
  • (2021)Towards efficient and verified virtual machines for dynamic languagesProceedings of the 10th ACM SIGPLAN International Conference on Certified Programs and Proofs10.1145/3437992.3439923(61-75)Online publication date: 17-Jan-2021
  • (2021)CSimACM Transactions on Programming Languages and Systems10.1145/343680843:1(1-46)Online publication date: 9-Feb-2021
  • (2019)Towards certified separate compilation for concurrent programsProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314595(111-125)Online publication date: 8-Jun-2019
  • Show More Cited By

Comments

Information & Contributors

Information

Published In

cover image Guide Proceedings
ESOP'10: Proceedings of the 19th European conference on Programming Languages and Systems
March 2010
629 pages
ISBN:3642119565
  • Editor:
  • Andrew D. Gordon

Publisher

Springer-Verlag

Berlin, Heidelberg

Publication History

Published: 20 March 2010

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 10 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Towards efficient and verified virtual machines for dynamic languagesProceedings of the 10th ACM SIGPLAN International Conference on Certified Programs and Proofs10.1145/3437992.3439923(61-75)Online publication date: 17-Jan-2021
  • (2021)CSimACM Transactions on Programming Languages and Systems10.1145/343680843:1(1-46)Online publication date: 9-Feb-2021
  • (2019)Towards certified separate compilation for concurrent programsProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314595(111-125)Online publication date: 8-Jun-2019
  • (2019)Formal Approaches to Secure CompilationACM Computing Surveys10.1145/328098451:6(1-36)Online publication date: 4-Feb-2019
  • (2018)Mechanising a Type-Safe Model of Multithreaded Java with a Verified CompilerJournal of Automated Reasoning10.1007/s10817-018-9452-x61:1-4(243-332)Online publication date: 1-Jun-2018
  • (2018)Forward to a Promising FutureCoordination Models and Languages10.1007/978-3-319-92408-3_7(162-180)Online publication date: 18-Jun-2018
  • (2017)Safety and conservativity of definitions in HOL and Isabelle/HOLProceedings of the ACM on Programming Languages10.1145/31581122:POPL(1-26)Online publication date: 27-Dec-2017
  • (2017)A Decision Procedure for (Co)datatypes in SMT SolversJournal of Automated Reasoning10.1007/s10817-016-9372-658:3(341-362)Online publication date: 1-Mar-2017
  • (2017)Comprehending Isabelle/HOL’s ConsistencyProgramming Languages and Systems10.1007/978-3-662-54434-1_27(724-749)Online publication date: 25-Apr-2017
  • (2016)Formalizing and Checking Thread Refinement for Data-Race-Free Execution ModelsProceedings of the 22nd International Conference on Tools and Algorithms for the Construction and Analysis of Systems - Volume 963610.1007/978-3-662-49674-9_30(515-530)Online publication date: 2-Apr-2016
  • Show More Cited By

View Options

View options

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media