Project Yin-Yang

Introduction

Satisfiability Modulo Theory (SMT) solvers are foundational tools for many subareas of computer science, including formal verification, programming languages, and software engineering. Their reliability and robustness are crucial, especially for the safety-critical domains. However, effectively validating SMT solvers has been a longstanding challenge. The goal of Project Yin-Yang is to develop novel, effective, practical methods and techniques to help make SMT solvers more reliable, powerful, and usable. Our tools have demonstrated their remarkable effectiveness by having already found 1,500+ bugs in Z3 and CVC4/5, the two state-of-the-art SMT solvers.

Results

We have maintained our continuous, extensive effort in stress-testing Z3 and CVC4/5 to benefit the SMT solver developer, user, and research communities:

Yin-Yang project has found    (total) /    (fixed) bugs.

[Z3 bugs: 1199 (total) / 889 (fixed)]
[CVC4/5 bugs: 465 (total) / 354 (fixed)]

[Bugs in default mode (Z3): 709 (total) / 532 (fixed)]
[Bugs in default mode (CVC4/5): 243 (total) / 182 (fixed)]

[Soundness bugs (Z3): 386 (total) / 256 (fixed)]
[Soundness bugs (CVC4/5): 77 (total) / 68 (fixed)]

[Incompleteness bugs (Z3): 13 (total) / 8 (fixed)]
[Incompleteness bugs (CVC4/5): 18 (total) / 11 (fixed)]

Semantic Fusion (report links)
Type-aware Operator Mutation (report links)
Generative Type-aware Mutation (report links)
Weakening and Strengthening (report links) Please follow us on Twitter @testsmtsolvers for important project developments and regular tweets about interesting bugs in Z3 and CVC4.

Tools & Publications

Tools

Publications

Contributors


Acknowledgments

This project is partially supported by an Amazon Research Award (Fall '21). We are also grateful to Google for an open source peers bonus.
Tweets by testsmtsolvers
last modified: 2022.09.29