Object-oriented languages provide advantages such as reuse and modularity, but they also raise new challenges for program
verification. Program logics have been developed for languages such as C# and Java. However, these logics do not cover the
specifics of the Eiffel language. This paper presents a program logic for Eiffel that handles exceptions, once routines, and
multiple inheritance. The logic is proven sound and complete w.r.t. an operational semantics. Lessons on language design learned
from the experience are discussed.
Keywords Software verification - program proofs - operational semantics - Eiffel