Many verification problems reduce to proving the validity of formulas involving both propositional connectives and domain-specific
functions and predicates. This paper presents an explicating theorem prover architecture that leverages recent advances in propositional SAT solving and the development of proof-generating
domain-specific procedures. We describe the implementation of an explicating prover based on this architecture that supports
propositional logic, the theory of equality with uninterpreted function symbols, linear arithmetic, and the theory of arrays.
We have applied this prover to a range of processor, cache coherence, and timed automata verification problems. We present
experimental results on the performance of the prover, and on the performance impact of important design decisions in our
implementation.