Betrachten Sie eine while-Schleife des Formulars:
mit die Bedingung und den Hauptteil der Schleife.
Sei und jeweils eine Invariante und eine Variante dieser Schleife. Die Regel für die vollständige Korrektheit von while-Schleifen ist in meinem Lehrbuch gegeben durch:
If
Und
Dann
ich weiß, muss die Variante strikt abnehmen und auch durch Null begrenzt sein , damit die Schleife endet . Wenn ich das jedoch mathematisch übersetze, erhalte ich einen anderen Satz als in meinem Lehrbuch:
Meine Frage : Sagen dieser letzte Satz und die Regel meines Lehrbuchs dasselbe darüber, was bewiesen werden muss, damit die Schleife endet? Mit anderen Worten: ist
das Gleiche wie
zusammen mit
Warum oder warum nicht?
quelle
Antworten:
Sie sind insofern gleichwertig, als Sie jedes Mal, wenn Sie die Lehrbuchregel anwenden können, auch Ihre eigene Regel anwenden können und umgekehrt. Die Invariante für die beiden Regeln ist ähnlich, aber nicht gleich.
Konvertieren einer Lehrbuchregelinstanz in eine Instanz Ihrer Regel
Angenommen, wir haben eine Anwendung oder Ihre Lehrbuchregel. wir haben einige für die:I
Dann haben wir dank der obigen Implikation auch . Mit der Regel PrePost können wir die Invariante in ihre Entsprechung umschreiben und erhalten eine Anwendung Ihrer Regel:I⟺I∧V≥0
Hier verwenden wir dieselbe Invariante wie in der Lehrbuchregel.
Konvertieren einer Instanz Ihrer Regel in eine Lehrbuchregelinstanz
Nun zur umgekehrten Richtung. Angenommen, wir haben für Ihre Regel gefunden:I
Jetzt können wir nicht annehmen , daher können wir für die Lehrbuchregel verwenden. Wir können jedoch als neue Invariante . Wir haben trivialerweise durch Konstruktion (*). Weiter aus der HypotheseI⇒V≥0 I I′:=I∧V≥0 I′⇒V≥0
wir können erhalten (durch PrePost)
Die Eigenschaften (*) und (**) sind genau das, was wir brauchen, um die Lehrbuchregel anzuwenden.
quelle