Current verification condition (VC) generation algorithms, such as weakest
preconditions, yield a VC whose size may be exponential in the size of the
code fragment being checked. This paper describes a two-stage VC generation
algorithm that generates compact VCs whose size is worst-case quadratic in
the size of the source fragment, and is close to linear in practice.
This two-stage VC generation algorithm has been implemented as part of the
Extended Static Checker for Java. It has allowed us to check large and comp
lex methods that would otherwise be impossible to check due to time and spa
ce constraints.