Proof-transforming compilation of programs with abrupt termination

The execution of untrusted bytecode programs can produce undesired behavior. A proof on the bytecode programs can be generated to ensure safe execution. Automatic techniques to generate proofs, such as certifying compilation, can only be used for a restricted set of properties such as type safety. Interactive verification of bytecode is difficult due to its unstructured control flow. Our approach is verify programs on the source level and then translate the proof to the byte-code level. This translation is non-trivial for programs with abrupt termination. We present proof transforming compilation from Java to Java Bytecode. This paper formalizes the proof transformation and present a soundness result.

[1]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[2]  Gary T. Leavens Modular specification and verification of object-oriented programs , 1991, IEEE Software.

[3]  Manuel Blum,et al.  Software reliability via run-time result-checking , 1997, JACM.

[4]  Bertrand Meyer,et al.  Object-Oriented Software Construction, 2nd Edition , 1997 .

[5]  Arnd Poetzsch-Heffter,et al.  Specification and verification of object-oriented programs , 1997 .

[6]  Arnd Poetzsch-Heffter,et al.  Logical foundations for typed object-oriented languages , 1998, PROCOMET.

[7]  George C. Necula,et al.  The design and implementation of a certifying compiler , 1998, PLDI.

[8]  George C. Necula,et al.  Compiling with proofs , 1998 .

[9]  Ernst-Rüdiger Olderog,et al.  Correct System Design, Recent Insight and Advances, (to Hans Langmaack on the occasion of his retirement from his professorship at the University of Kiel) , 1999 .

[10]  Gerhard Goos,et al.  Verification of Compilers , 1999, Correct System Design.

[11]  Arnd Poetzsch-Heffter,et al.  A Programming Logic for Sequential Java , 1999, ESOP.

[12]  George C. Necula,et al.  A certifying compiler for Java , 2000, PLDI '00.

[13]  David von Oheimb Analyzing Java in Isabelle-HOL: formalization, type safety and Hoare logic , 2001 .

[14]  David von Oheimb Hoare logic for Java in Isabelle/HOL , 2001, Concurr. Comput. Pract. Exp..

[15]  Peter Müller,et al.  A Logic for Bytecode , 2004 .

[16]  A. P. Hefiter,et al.  Soundness and Relative Completeness of a Programming Logic for a Sequential Java Subset , 2004 .

[17]  Peter Müller,et al.  A Program Logic for Bytecode , 2005, Electron. Notes Theor. Comput. Sci..

[18]  Arnd Poetzsch-Heffter,et al.  Towards Proof Generating Compilers , 2022 .

[19]  Gilles Barthe,et al.  Proof Obligations Preserving Compilation , 2005, Formal Aspects in Security and Trust.

[20]  George C. Necula,et al.  The open verifier framework for foundational verifiers , 2005, TLDI '05.

[21]  Benjamin Grégoire,et al.  Certificate Translation for Optimizing Compilers , 2006, SAS.