This dissertation focuses on two subjects in formal verification. The first subject is the development of methods and tools for the formal verification of compilers. We offer the Translation Validation approach, according to which the translation of the compiler is validated after each run. The evidence from applying translation validation to two compilers proves that this approach has some strong advantages over the more traditional formal verification of the compiler itself. The research includes several new techniques for handling industrial-size programs, among them a new decision procedure for equality logic. The second subject is the development of various optimizations to SAT algorithms, which exploit the unique structure of formulas originating from Bounded Model Checking of invariance properties. The dissertation is organized in the form of an edited collection of five published articles, and an overview in the beginning.