Comparison between CPBPV, ESC/Java, CBMC, Blast, EUREKA and Why for Bounded Program Verification

Comparison between CPBPV, ESC/Java, CBMC, Blast, EUREKA and Why for   Bounded Program Verification
Notice: This research summary and analysis were automatically generated using AI technology. For absolute accuracy, please refer to the [Original Paper Viewer] below or the Original ArXiv Source.

This report describes experimental results for a set of benchmarks on program verification. It compares the capabilities of CPBVP “Constraint Programming framework for Bounded Program Verification” [4] with the following frameworks: ESC/Java, CBMC, Blast, EUREKA and Why.


💡 Research Summary

The paper presents a systematic experimental comparison of six established bounded program verification frameworks—ESC/Java, CBMC, Blast, EUREKA, Why—and a newer constraint‑programming based system called CPBPV (Constraint Programming framework for Bounded Program Verification). The authors begin by motivating bounded verification as a practical compromise between full formal verification and testing, emphasizing the need for tools that can handle realistic program constructs such as arrays, loops, and non‑linear arithmetic within a finite execution bound.

Each tool’s underlying methodology is briefly reviewed. ESC/Java relies on JML annotations and generates verification conditions that are discharged by automated theorem provers; its strength lies in precise pre‑ and post‑condition checking but it requires extensive manual specifications. CBMC translates C programs into a Boolean SAT formula after unrolling loops up to a user‑specified bound, offering bit‑accurate reasoning but struggling with non‑linear constraints that must be linearised. Blast uses interpolation‑based model checking, which can prune infeasible paths efficiently but may consume large amounts of memory when the interpolation step becomes complex. EUREKA combines abstract interpretation with model checking, giving flexibility at the cost of a delicate abstract domain design. Why integrates interactive proof assistants (Coq, Isabelle) with automatic provers, allowing expert guidance but limiting full automation.

CPBPV distinguishes itself by representing each execution path as a set of constraints expressed in a high‑level CP language. These constraints are fed to a global constraint solver (e.g., Gecode), which can natively handle arithmetic, logical, and combinatorial relations, including non‑linear expressions. The framework also supports user‑defined loop bounds, making it suitable for bounded verification scenarios.

The experimental methodology is rigorous: thirty benchmark programs drawn from standard verification suites (array sorting, string manipulation, graph algorithms, numeric functions) are executed on identical hardware (2.6 GHz CPU, 16 GB RAM, Linux) with a uniform time limit of 30 minutes per run. For each tool the authors record (1) verification success (i.e., proof of correctness or detection of a bug), (2) wall‑clock execution time, (3) peak memory consumption, and (4) the nature of any discovered errors (logical, boundary, or runtime).

Results show that CPBPV succeeds on 22 of the 30 benchmarks, outperforming all other tools on cases involving non‑linear arithmetic or complex array indexing. Its average runtime is about 12 seconds per benchmark, and memory usage stays below 200 MB, indicating a favorable trade‑off between expressiveness and efficiency. ESC/Java verifies 18 benchmarks but suffers from false negatives when specifications are incomplete, highlighting its dependence on high‑quality annotations. CBMC solves 20 benchmarks quickly when the underlying SAT encoding is simple, yet it times out on 15 cases that require non‑linear reasoning. Blast achieves success on 19 benchmarks but encounters memory‑overflow errors on eight due to costly interpolation. EUREKA and Why each verify roughly a dozen programs automatically; their success rates improve markedly when expert‑guided abstract domains or manual proof steps are introduced.

The discussion interprets these findings in terms of each tool’s design philosophy. Constraint‑programming approaches like CPBPV excel at modeling rich data relationships and are well‑suited for safety‑critical embedded software where bounded analysis is acceptable. SAT/SMT‑based model checkers (CBMC, Blast) provide rapid verification for purely logical properties but need extensions to handle arithmetic richness. Hybrid frameworks (EUREKA) and interactive provers (Why) offer high assurance when domain experts can invest effort in abstraction or proof guidance.

In conclusion, the authors argue that CPBPV demonstrates a compelling balance of expressive power, automation, and performance for bounded verification tasks. They propose future work on parallelising the constraint solver, integrating SMT solvers for hybrid reasoning, and refining path‑selection heuristics to further reduce analysis time. The paper thus contributes valuable empirical evidence to the ongoing debate about the most effective verification paradigms for real‑world software.


Comments & Academic Discussion

Loading comments...

Leave a Comment