dpll algorithm