English

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

Logic in Computer Science 2015-09-09 v1 Software Engineering

Abstract

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.

Keywords

Cite

@article{arxiv.1509.02471,
  title  = {Model Checking Embedded C Software using k-Induction and Invariants (extended version)},
  author = {Herbert Rocha and Hussama Ismail and Lucas Cordeiro and Raimundo Barreto},
  journal= {arXiv preprint arXiv:1509.02471},
  year   = {2015}
}

Comments

extended version of paper published at SBESC'15. arXiv admin note: substantial text overlap with arXiv:1502.02327

R2 v1 2026-06-22T10:52:03.470Z