Neural Model Checking

Mirco Giacobbe, Daniel Kroening, Abhinandan Pal, Michael Tautschnig
10/1/2024

No official code found. Best implementation: aiverification/neuralmc (32 stars, BSD-3-Clause, last commit 2025-11-02).

Abstract

We introduce a machine learning approach to model checking temporal logic, with application to formal hardware verification. Model checking answers the question of whether every execution of a given system satisfies a desired temporal logic specification. Unlike testing, model checking provides formal guarantees. Its application is expected standard in silicon design and the EDA industry has invested decades into the development of performant symbolic model checking algorithms. Our new approach combines machine learning and symbolic reasoning by using neural networks as formal proof certificates for linear temporal logic. We train our neural certificates from randomly generated executions of the system and we then symbolically check their validity using satisfiability solving which, upon the affirmative answer, establishes that the system provably satisfies the specification. We leverage the expressive power of neural networks to represent proof certificates as well as the fact that checking a certificate is much simpler than finding one. As a result, our machine learning procedure for model checking is entirely unsupervised, formally sound, and practically effective. We experimentally demonstrate that our method outperforms the state-of-the-art academic and commercial model checkers on a set of standard hardware designs written in SystemVerilog.

View on arXivView PDF

Code Implementations(1)

BSD-3-Clause
325Shell, PythonOct 7, 202411 months agoBSD-3-Clause

Similar Papers

Cite this paper

@article{giacobbe2024neural,
  title  = {Neural Model Checking},
  author = {Mirco Giacobbe and Daniel Kroening and Abhinandan Pal and Michael Tautschnig},
  year   = {2024},
  eprint = {2410.23790},
  archivePrefix = {arXiv},
  doi    = {10.48550/arXiv.2410.23790},
  url    = {https://arxiv.org/abs/2410.23790},
  journal = {NEURIPS 2024 2024}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2410.23790.svg)](https://codeofpaper.com/paper/2410.23790)

Discussion