Let $x=(x_1,\dots,x_n)$ and $y=(y_1,\dots,y_n)$ be $n$-vectors of boolean variables. I have a boolean predicate $Q(x,y)$ on $x,y$. I give my friend Priscilla $Q(x,y)$. In response, she gives me $P(x)$, a boolean predicate on $x$, and she claims that
$$P(x) \equiv \exists y . Q(x,y),$$
or in other words, that
$$\forall x . [P(x) \Leftrightarrow \exists y . Q(x,y)].$$
I would like to verify her claim somehow. How can Priscilla help me verify this claim?
You can assume that both $P$ and $Q$ are represented as CNF formulas, and that they're not too large (polynomial size, or something).
In an ideal world, it'd be awesome if I could reduce the problem of verifying this claim to SAT: I have a SAT solver, and it'd be great if I can use the SAT solver to verify this claim. However, I'm pretty sure that it's not going to be possible to formulate the problem of verifying this claim directly as a SAT instance; testing the validity of a 2QBF formula is almost certainly harder than SAT. (The $\Leftarrow$ direction is easy to formulate as a SAT instance, but the $\Rightarrow$ direction is hard because it inherently involves two alternating quantifiers.)
But suppose Priscilla could give me some additional evidence to support her claim. Is there some additional evidence or witness Priscilla could give me, which would make it easy for me to verify her claim? In particular, is there some additional evidence or witness she could give me, which would make it easy for me to formulate the problem of verifying her claim as an instance of SAT (which I can then apply my SAT solver to)?
One unusual aspect of my setting is that I'm assuming (heuristically) that I have an oracle for SAT. If you like complexity theory, you can think about it this way: I am taking the role of a machine that can compute things in $P^{NP}$ (i.e., in $\Delta^P_2$), and I'm looking to verify Priscilla's claim using an algorithm in $P^{NP}$. My thanks to mdx for this way of thinking about things.
My motivation/application: I'm looking to do formal verification of a system (e.g., symbolic model checking), and a key step in the reasoning involves quantifier elimination (i.e., starting from $Q$, obtain $P$). I'm hoping for some clean way to verify that the quantifier elimination was done correctly.
If there's no solution that works for all possible $P,Q$, feel free to suggest a solution that is "sound but not complete", i.e., a technique that for many $P,Q$ lets me verify the claimed equivalence. (Even if it fails to verify the claim on some $P,Q$ that do satisfy the claim, I can still try this as a heuristic, as long as it never inappropriately claims to have verified a false claim. On any given $P,Q$, it might work, or it might not; if it doesn't work, I'm no worse off than where I started.)
first-order-logic
tag is justified. The question is all about quantified boolean formulas. $\endgroup$