1. Method comprising: partitioning an original program into subprograms each defining a computational path; refining each subprogram when cyclic dependencies are found to exist between variables; determining reachable states for each subprogram; merging subprograms whose computational paths have reachable states found to be contained in another computational path; and determining conjoined decision conditions among the merged subprograms.