What's hard about Boolean Functional Synthesis
S. Akshay, Supratik Chakraborty, Shubham Goel, Sumith Kulal, and, Shetal Shah

TL;DR
This paper explores the inherent complexity of Boolean functional synthesis, proving exponential lower bounds, and introduces a two-phase algorithm that performs efficiently on most benchmarks despite worst-case exponential complexity.
Contribution
The paper demonstrates the exponential hardness of Boolean functional synthesis and proposes a practical two-phase algorithm that outperforms existing methods on many benchmarks.
Findings
First phase is efficient and often produces correct solutions
A sufficient condition guarantees the correctness of the first phase
Experimental results show superior performance over state-of-the-art techniques
Abstract
Given a relational specification between Boolean inputs and outputs, the goal of Boolean functional synthesis is to synthesize each output as a function of the inputs such that the specification is met. In this paper, we first show that unless some hard conjectures in complexity theory are falsified, Boolean functional synthesis must necessarily generate exponential-sized Skolem functions, thereby requiring exponential time, in the worst-case. Given this inherent hardness, what does one do to solve the problem? We present a two-phase algorithm for Boolean functional synthesis, where the first phase is efficient both in terms of time and sizes of synthesized functions, and solves an overwhelming majority of benchmarks. To explain this surprisingly good performance, we provide a sufficient condition under which the first phase must produce exact correct answers. When this condition fails,…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsFormal Methods in Verification · Software Testing and Debugging Techniques · Logic, programming, and type systems
