LOSESep 8, 2015

Model Checking Embedded C Software using k-Induction and Invariants (extended version)

arXiv:1509.02471v11.2
Originality Incremental advance
AI Analysis

This work addresses verification challenges for embedded software in domains like telecommunications and medical devices, but it appears incremental as it builds on existing k-induction techniques.

The authors tackled the problem of model checking embedded C software with loops by combining k-induction with invariants, resulting in an approach that handles various safety properties and shows improved effectiveness compared to other methods.

We present a proof by induction algorithm, which combines k-induction with invariants to model check embedded C software with bounded and unbounded loops. The k-induction algorithm consists of three cases: in the base case, we aim to find a counterexample with up to k loop unwindings; in the forward condition, we check whether loops have been fully unrolled and that the safety property P holds in all states reachable within k unwindings; and in the inductive step, we check that whenever P holds for k unwindings, it also holds after the next unwinding of the system. For each step of the k-induction algorithm, we infer invariants using affine constraints (i.e., polyhedral) to specify pre- and post-conditions. Experimental results show that our approach can handle a wide variety of safety properties in typical embedded software applications from telecommunications, control systems, and medical devices; we demonstrate an improvement of the induction algorithm effectiveness if compared to other approaches.

Code Implementations1 repo
Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes