In general, refutation for propositional CNF in ZDD is fast. In fact, if input CNF has n atoms (not occurrences), clearly at most n resolutions are enough because of ordering of literals in ZDD representation. One of merits of CNF refutation in ZDD are resolved upon all at once for a couple of bundles which divides all current clauses into two parts.
{[a,b],[a,c]}, {[-a,d],[-a,e]} => {[b,d], [c,d], [b,e],[c,e]}
Propositional refutation process is similar to left-empty (one-sided) sequent calculus. In fact, if axioms are restricted to sequents of literals, sequent calculus is isomorphic to a refutation process identifyting the one sided sequent with a clause in the obvious way.
|- A1, A2, ..., An (one sided sequent) <==> [A1, A2, ..., An] (clause)
How about to extend literals to include ->
(IMPLY), *
(AND), +
(Or) terms to CNF, extends ZDD refutation to right-elimination rules for them
|- A, C |- B, C |- -A, B, C
---------------------- (*) ------------- (-> variant)
|- A*B, C |- A->B, C
Currently propositions in input clauses are assumed in NNF ( negation normal form) for simplicity.I have played around this extension based on prover/1 of mine on the standard CNF. Below is log for small queries. Although this little exercise was interesting for me on ZDD programming in SWI-Prolog, I am far from sure that this extended literals will work well on a big CNF. Anyway I will take a survey on related works on the net later.
% ?- seq_zdd X<<{[a*b*(a->c)*(b->c)], [-c]}, resolve(X).
%@ X = 4.
% ?- seq_zdd X<<{[a*(a->b)], [-b]}, resolve(X).
%@ X = 4.
% ?- seq_zdd X<<{[a], [a->b], [a-> -b], [b]}, resolve(X).
%@ X = 11.
% ?- seq_zdd X<<{[a*b], [a->c], [b->c], [-c]}, resolve(X).
%@ X = 11.
% ?- seq_zdd X<<{[(a->b)->c], [-c]}, resolve(X).
%@ false.