A Declarative Theorem Prover for First-Order Classical Logic