1. A pre-condition generation device including a computer readable storage medium containing a set of instructions, comprising: a program storage configured to store a program described by an imperative programming language; a post-condition storage configured to store a post-condition of the program, the post-condition being represented by a logical product of one or more first logical expressions; a logical expression storage configured to store a plurality of second logical expressions; an essential condition storage configured to store an essential condition which indicates a set of one or more second logical expressions selected from the logical expression storage such that a proposition is not satisfied that the post-condition is satisfied immediately after execution of the program if the program is executed when a logical product of other second logical expressions obtained by excluding the set indicated by the essential condition from all second logical expressions in the logical expression storage is satisfied before the program is executed; a candidate condition generator configured to generate at least one candidate condition represented by a logical product of one or more second logical expressions selected from the logical expression storage so as to have at least one common second logical expression with the set indicated by the essential condition; a first judging unit configured to judge whether there is a counterexample to a proposition that the post-condition is satisfied immediately after the program is executed when the candidate condition is satisfied before the program is executed, and to determine that the proposition is satisfied when the counterexample is not existent and that the proposition is not satisfied when the counterexample is existent; and an output unit configured to output the candidate condition determined to satisfy the proposition as representing a pre-condition of the program.