Decision Procedures:An Algorithmic Point of View