This document discusses generating verification conditions (VCs) for single-assignment programs using symbolic execution, weakest preconditions, and bounded model checking. It introduces single-assignment programs and how they can be encoded as logical formulas. It then describes how VCs can be generated from symbolic execution by associating path formulas with execution paths. VCs can also be generated from weakest preconditions by calculating the weakest precondition of the entire program with respect to an assertion. Finally, it mentions bounded model checking generates VCs by unwinding loops a bounded number of times.