Davis-Putnam algorithm