Skip to main navigation Skip to search Skip to main content

Correct-by-construction specification to verified code

  • Ning Ge*
  • , Arnaud Dieumegard
  • , Eric Jenn
  • , Laurent Voisin
  • *Corresponding author for this work
  • IRT-Saint Exupéry
  • Systerel

Research output: Contribution to journal › Article › peer-review

Abstract

Event-B is a formal notation and method for the systems development. The key feature of this method is to produce correct-by-construction system designs. Once the correct design is established, the remaining work is to generate or implement correct code from the design. Two main problems remain in the process from the correct-by-construction design to the correct software. First, the Event-B design is “quasi-correct” due to some technical limitations. For instance, it is still difficult to prove the liveness properties by the Rodin platform; it is not possible to construct the Event-B design with floating-point arithmetic, and sometimes, the Event-B model is incomplete and must rely on the third-party libraries. Therefore, a method is needed to complement these modeling and proof gaps. Secondly, proving the correctness of an automatic code generator is very difficult; therefore, a method is needed to guarantee the correctness of the produced code without proving the code generator. In this article, we address the above 2 problems by introducing an intermediate formal language called High-Level Language (HLL) between the Event-B models and the C code. The Event-B model is translated to HLL with an additional schedule configuration, where Event-B invariants and system invariants (here, deadlock-freeness and liveness properties) are proved using a SAT-based model checker called S3. This proof guarantees the correctness of the HLL model with respect to the Event-B model. The C code is then automatically generated from the HLL model for most functions and is manually implemented for the third-party ones according to the function contracts defined in Event-B. The correctness of the generated C code is guaranteed using the equivalence proof, and the correctness of the implemented C code is guaranteed using the conformance proof. Through the article, we use a traffic light controller to illustrate the proposed method; then, we apply the method to an automatic protection function of a 3-wheeled robot to evaluate its feasibility.

Original languageEnglish
Article numbere1959
JournalJournal of Software Maintenance and Evolution
Volume30
Issue number10
DOIs
StatePublished - Oct 2018

Keywords

  • C
  • Event-B
  • code generation
  • equivalence proof
  • formal methods
  • property proof

Fingerprint

Dive into the research topics of 'Correct-by-construction specification to verified code'. Together they form a unique fingerprint.

Cite this