Theory And Applications Of Satisfiability Testing