Flexible Correct-by-Construction Programming
Tobias Runge, Tabea Bordis, Alex Potanin, Thomas Th\"um, Ina Schaefer

TL;DR
This paper introduces flexible extensions to Correct-by-Construction (CbC) programming, namely CbC-Block and TraitCbC, which enhance flexibility while maintaining correctness guarantees, supported by formal proofs and comparative analysis.
Contribution
It presents CbC-Block and TraitCbC as novel, more flexible variants of CbC, with formal soundness proofs and practical guidelines for structured program development.
Findings
CbC-Block allows inserting any block of statements, increasing flexibility.
TraitCbC uses traits with specified methods for correctness-by-construction.
All approaches are compared in terms of constructs, tool support, and usability.
Abstract
Correctness-by-Construction (CbC) is an incremental program construction process to construct functionally correct programs. The programs are constructed stepwise along with a specification that is inherently guaranteed to be satisfied. CbC is complex to use without specialized tool support, since it needs a set of predefined refinement rules of fixed granularity which are additional rules on top of the programming language. Each refinement rule introduces a specific programming statement and developers cannot depart from these rules to construct programs. CbC allows to develop software in a structured and incremental way to ensure correctness, but the limited flexibility is a disadvantage of CbC. In this work, we compare classic CbC with CbC-Block and TraitCbC. Both approaches CbC-Block and TraitCbC, are related to CbC, but they have new language constructs that enable a more flexible…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
