I got black-box (too big to analyze) boolean formula f(...) with 3 sets of input arguments: $x_1... x_i, y_1... y_j, z_1... z_k$. And I want to find such values for x-arguments that for every y-arguments exist z-arguments witch satisfy formula: $(x_1...x_i): \forall (y_1...y_j) \exists (z_1...z_k) f(x_1...x_i, y_1...y_j, z_1...z_k)$
I want encode this quantified boolean formula to DIMACS CNF format and use SAT-solver to find such $x_1...x_i$ values.
I think its possible by iterating over all $2^j$ $(y_1...y_j)$ value substitutions (substitute true or false for every $y$), adding new set of z-arguments for each of them, substitute them to f(...) and joining them with conjunction: $f(x_1...x_i, false...false, (z_1)_1...(z_1)_k) \land f(x_1...x_i, false...true, (z_2)_1...(z_2)_k) \land ... \land f(x_1...x_i, true...true, (z_{2^j})_1...(z_{2^j})_k)$
Problem of that solution that it will generate exponential (dependent on count of y-arguments) large boolean formula with $2^j$ conjunctions and then require exponential time from size of this formula to solve SAT.
Is there a more compact way to reduce this formula to formula without quantifications? Or any other way with less complexity?