English

Learning Invariants using Decision Trees

Programming Languages 2015-01-21 v1 Machine Learning

Abstract

The problem of inferring an inductive invariant for verifying program safety can be formulated in terms of binary classification. This is a standard problem in machine learning: given a sample of good and bad points, one is asked to find a classifier that generalizes from the sample and separates the two sets. Here, the good points are the reachable states of the program, and the bad points are those that reach a safety property violation. Thus, a learned classifier is a candidate invariant. In this paper, we propose a new algorithm that uses decision trees to learn candidate invariants in the form of arbitrary Boolean combinations of numerical inequalities. We have used our algorithm to verify C programs taken from the literature. The algorithm is able to infer safe invariants for a range of challenging benchmarks and compares favorably to other ML-based invariant inference techniques. In particular, it scales well to large sample sets.

Keywords

Cite

@article{arxiv.1501.04725,
  title  = {Learning Invariants using Decision Trees},
  author = {Siddharth Krishna and Christian Puhrsch and Thomas Wies},
  journal= {arXiv preprint arXiv:1501.04725},
  year   = {2015}
}

Comments

15 pages, 2 figures

R2 v1 2026-06-22T08:06:38.952Z