Skip to content
Preprint

Circuit-Based Program Verification: Sequential Circuits as an Intermediate Representation for Verifying C Programs

Aug 2026 · 0 citations · 115 references
Computer Science

TL;DR

Circuit-Based Program Verification is presented, a modular framework that translates C programs into sequential circuits and employs off-the-shelf hardware model checkers as backends and integrates multiple state-of-the-art hardware model checkers, which together provide access to diverse verification algorithms.

Abstract

Formal verification of software programs and hardware designs shares the common goal of reasoning about state-transition systems, yet the two communities have largely developed separate intermediate representations and verification algorithms. This paper investigates sequential circuits as an intermediate representation for software verification, with the goal of enabling direct application of hardware-model-checking techniques. We present Circuit-Based Program Verification (CPV), a modular framework that translates C programs into sequential circuits and employs off-the-shelf hardware model checkers as backends. Unlike traditional software verifiers, which typically rely on path-based exploration, CPV reasons over sequential circuits, where a program's control and data flows are folded into a monolithic transition relation that can be analyzed as a whole. The framework supports reachability-safety and termination analyses and integrates multiple state-of-the-art hardware model checkers, which together provide access to diverse verification algorithms, including bounded model checking, $k$-induction, and IC3/PDR. Counterexamples found by hardware model checkers are automatically translated back into software-verification witnesses for users to interpret verification results. We conducted a comprehensive evaluation on a benchmark suite of more than 16000 tasks. Our results show that CPV achieved competitive performance against five well-established software verifiers and exhibited complementary strengths by uniquely solving tasks that other verifiers cannot handle.

View source

Similar papers

Preprint Aug 2026

Synchronous Observers Revisited for Runtime Verification of Lustre Using STL

Signal Temporal Logic (STL) is a popular formalism for the temporal safety properties of cyber-physical systems, most often used for runtime verification. In the synchronous family of languages, safety properties are instead expressed as synchronous observers, modules composed with a program for static verification, wh...

Logan Kenwright, Partha S. Roop, Sobhan Chatterjee et al. · 0 citations
2026

Securing the Foundations of an Intermediate Language for Probabilistic Program Verification

This paper develops mechanized foundations for writing formal correctness proofs for both HeyVL encodings and PP verification techniques that are grounded in the basics of probability theory and formalizes Markov decision processes (MDPs).

Oliver Bøving, Christoph Matheja · 0 citations
Review Aug 2026

Combining Tests and Proofs with Contracts for Better Software Verification

Test or prove? These two approaches to software verification have long been presented as opposites. One is dynamic, the other static: A test executes the program, a proof only analyzes the program text. A different perspective is emerging, in which testing and proving are complementary rather than competing techniques...

Li Huang, Bertrand Meyer, M. Oriol · 0 citations
#software testing Book Open access Sep 2026

All Your Assembly Belongs to Rust: Automated Lifting for Uniform Testing and Verification

This paper translates Rust code containing RISC-V inline assembly into pure Rust code by emulating each instruction using a machine model extracted from the official RISC-V Sail ISA specification, and demonstrates how each category is handled by the translation.

Charly Castes, Gurvan Debaussart, Thomas Bourgeat · 0 citations

Towards a Vertically Integrated Compiler Infrastructure to Improve Solver Time during Symbolic Execution

The potential of integrating the compiler infrastructure with symbolic execution, thereby obtaining a program representation optimized for SMT solving, is illustrated by contributing conditional representation, a novel compiler transformation tailored to symbolic execution that results in a solver-efficient representat...

Sören Tempel · 0 citations
Preprint Aug 2026

Towards a Deductive Verification Infrastructure for Weighted Programming

This work presents a deductive verification framework based on a weighted assertion language and an intermediate verification language, whose weight domains are ordered structures with implication and coimplication, which let verification conditions express lower- and upper-bound obligations internally.

Emma Ahrens, Samuel Rode, Philipp Schröer et al. · 0 citations

We use cookies to run the site and, with your consent, for analytics and to show ads. See our Cookie Policy.