Framing the frame problem (new paper)






Among the open problems of verification, particularly the verification of object-oriented programs, one of the most vexing is framing: how to specify and verify what programs element do not change. Continuing previous work, this article presents a “double frame inference” method, automatic on both sides the specification and verification sides. There is no need to … Read more




Detecting deadlock automatically? (New paper)






To verify sequential programs, we have to prove that they do the right thing, but also that they do it within our lifetime — that they terminate. The termination problem is considerably harder with concurrent programs, since they add a new form of non-termination: deadlock. A set of concurrent processes or threads will deadlock if … Read more




Code matters






(Adapted from an article previously published on the CACM blog.) Often, you will be told that programming languages do not matter much. What actually matters more is not clear; maybe tools, maybe methodology, maybe process. It is a pretty general rule that people arguing that language does not matter are defending bad languages. Let us … Read more




New article: contracts in practice






For almost anyone programming in Eiffel, contracts are just a standard part of daily life; Patrice Chalin’s pioneering study of a few years ago [1] confirmed this impression. A larger empirical study is now available to understand how developers actually use contracts when available. The study, to published at FM 2014 [2] covers 21 programs, … Read more




Eiffel as an expression language






A functional-programming style, or more generally a style involving more expressions and fewer instructions, is possible in Eiffel. In particular, Eiffel’s agent mechanism embeds a full functional-programming mechanism in the object-oriented framework of the language. To make the notations simpler, we are discussing and tentatively implementing a number of proposed extensions. They involve no fundamental … Read more




Negative variables: new version






I have mentioned this paper before (see the earlier blog entry here) but it is now going to be published [1] and has been significantly revised, both to take referee comments into account and because we found better ways to present the concepts. We have  endeavored to explain better than in the draft why the … Read more




Saint Petersburg Software Engineering Seminar: 14 January 2014 (6 PM)






There will be two talks in the Software Engineering Seminar at ITMO, 18:00 local time, Tuesday, January 14, 2014. Please arrive 10 minutes early for registration. Place: ITMO, Sytninskaya Ulitsa, Saint Petersburg. Andrey Terekhov (SPBGU): Programming crystals (I do not know whether this talk will be in Russian or English. An abstract follows but the … Read more