Verification of program properties such as partial correctness (PC) or absence of errors at runtime (RTE) applies induction principles using algorithmic techniques for checking statements in a logical framework such as classical logic or temporal logic. Alan Turing was undoubtedly the first to annotate programs, namely Turing machines, and to apply an induction principle to transition systems. Our work is placed in this perspective of verifying safety properties of sequential or distributed programs, with the aim of presenting them as simply as possible to student classes in the context of a posteriori verification. We report on an in vivo experiment using the Event-B language and associated tools as an assembly and disassembly platform for correcting programs in a programming language. We revisit the properties of partial correctness and the absence of run-time errors in the context of this experiment, which precedes the use of Event-B as a method of correct design by construction. We have adopted a contract-based approach to programming, which we are implementing with Event-B. A few examples are given to illustrate this pedagogical approach. This step is part of a process of learning both the underlying techniques and other tools such as Frama-c, Dafny and Why3 …, which are based on the same ideas.
Please visit the link FMT.