Proof-Transforming Compilation of Eiffel Programs
نویسندگان
چکیده
In modern development schemes the processing of programs often involves an intermediate step of translation to some intermediate bytecode, complicating the verification task. Expanding on the ideas of Proof-Carrying Code (PCC), we have built a proof-transforming compiler which translates a contract-equipped program and its proof into bytecode representing both the program and the proof; before execution starts, the program will be run through a proof checker. The proofs address not only security properties, as in the original PCC work, but full functional correctness as expressed by the original contracts. The task of the proof-transforming compiler is made particularly challenging by the impedance mismatch between the source language, Eiffel, and the target code, .NET CIL, which does not directly support such important Eiffel mechanisms as multiple inheritance and contract-based exceptions. We present the overall proof-transforming compilation architecture, the issues encountered, and the solutions that have been devised to bridge the impedance mismatch.
منابع مشابه
Certificates and Separation Logic
Modular and local reasoning about object-oriented programs has been widely studied for programing languages such as C# and Java. Once source programs have been proven, the next verification challenge is to ensure that the code produced by the compiler is correct. Since verifying a compiler can be extremely complex, this paper uses proof-transforming compilation, an alternative approach which au...
متن کاملEiffel: An Introduction
The Eiffel language and environment apply the conceplS of object-oriented design and programming to the construction of high quality software. As a language, Eiffel provides a range of features for the construction of reusable and reliable software components: classes. multiple inheritance. polymorphism and dynamic binding. genericity. strict static type checking. a disciplined exception mechan...
متن کاملOptimizations of Eiffel Programs: Smalleiffel, the GNU Eiffel Compiler
The design of the Eiffel language makes it possible to perform global optimizations on Eiffel programs. In this paper, we describe some of the techniques we used in SmallEiffel, The GNU Eiffel Compiler, to generate highly efficient executables for Eiffel programs. Most of these techniques — related to global analysis or not — may also be applied to other objectoriented languages.
متن کاملTranslating Event-B machines to Eiffel programs
Formal modelling languages play a key role in the development of soware since they enable users to prove correctness of system properties. However, there is still not a clear understanding on how to map a formal model to a specic programming language. In order to propose a solution, this paper presents a source-to-source mapping between EventB models and Eiel programs, therefore enabling the...
متن کاملFormalising Eiffel References and Expanded Types in PVS
Ongoing work is described in which a theory of Eiffel reference and expanded (composite) types is formalised. The theory is expressed in the PVS specification language, thus enabling the use of the PVS theorem prover and model checker to semi-automatically prove properties about Eiffel structures and programs. The theory is being used as the basis for automated support for the Eiffel Refinement...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2008