The instructions in a computer program are converted into a form of weakest
precondition so as to produce a verification condition that is to be
evaluated by a theorem prover. In generating the weakest precondition,
labels are introduced for values of variables at control join points. In
two preferred embodiments, the computer program is converted into a set of
guarded commands prior to the application of weakest precondition
operators. In one embodiment, as part of the process of generating the
verification condition, assignment commands that assign values to
variables are removed from the program through use of a "dynamic single
assumption" technique. In another embodiment, the weakest precondition is
expressed in terms of strongest postconditions. In both embodiments, a
simplified verification condition is produced in which duplications of
sets of instructions following a choice operator is avoided.
Die Anweisungen in einem Computerprogramm werden in eine Form der schwächsten Vorbedingung umgewandelt, um einen Überprüfung Zustand zu produzieren, der von einem Theorem Prover ausgewertet werden soll. Wenn man die schwächste Vorbedingung erzeugt, werden Aufkleber für Werte von Variablen an der Steuerung verbinden Punkte eingeführt. In zwei bevorzugte Verkörperungen, das Computerprogramm wird umgewandelt in einsetzen vorsichtige Befehle vor der Anwendung der schwächsten Vorbedingungoperatoren. In einer Verkörperung als Teil des Prozesses des Erzeugens des Überprüfung Zustandes, werden Anweisung Befehle, die Werte Variablen zuweisen, vom Programm durch Gebrauch von einer Technik "der dynamischen einzelnen Annahme" entfernt. In einer anderen Verkörperung wird die schwächste Vorbedingung in stärksten postconditions ausgedrückt ausgedrückt. In beiden Verkörperungen wird ein vereinfachter Überprüfung Zustand produziert, in dem Verdopplungen der Sätze Anweisungen, die einem auserlesenen Operator folgen, vermieden wird.