Solving with Pre-conditions, Post-conditions, and Invariants