I've been writing a 3-SAT solver for fun and comparing its performance against the solver pycosat. My solver vastly outperforms pycosat in two special cases, where I solve by doing simple, obvious checks, which pycosat doesn't seem to do (based on the time it takes to solve these cases).
I presumed that these checks would be known and commonly incorporated into solvers. Is that the case? Why would a solver not bother doing them?
The checks are based on the following:
Let $\phi$ be a CNF with $n$ variables and $m$ disjunctions, where each disjunction has exactly 3 distinct variables and no two disjunctions have the same literals.
1) If $m < 8$, then $\phi$ is satisfiable.
2) If $m > 7* \binom{n}{3}$, then $\phi$ is unsatisfiable. ($\binom{n}{k}$ is the binomial coefficient.)
The proof is simple but tedious. I can provide it if needed.