sven.lohrmann hat geschrieben:Was ist eigentlich, wenn sich die Korrektheit schon aus den IF-Statements ergibt?
Die Frage deutet darauf hin, dass du den Zweck der Übung nicht verstanden hast. Als Faustregel kann man sagen, dass sich nie Korrektheit aus if-Statements ergibt. Wenn in deinem Programm natürlich Dinge stehen wie
dann kann das schon sein, dass if und assert das gleiche bedeuten.
Im Allgemeinen kann man aber aus einer Programmausführung aber nicht auf die Korrektheit des Programms schließen. Insbesondere nicht, weil es (im Gegensatz zu meinem Codeschnipsel) in der Regel gemeinsame Variablen zwischen Prozessen gibt und die Anzahl möglicher Programmabläufe mit verschiedenen if-Branches und Interleaving so schnell zunimmt, dass du nicht mehr Korrektheit einfach behaupten kannst. Bei einer Verifikation
beweist du die Korrektheit des Modells im Bezug auf die Spezifikation (hier z.B. gegeben durch asserts). Dieser Beweis gilt für
alle Programmausführungen. Dazu ist es natürlich nicht nur wichtig, ein korrektes Modell zu erzeugen, sondern auch, sinnvolle Eigenschaften für die Verifikation zu spezifizieren.
Sollte es tatsächlich so sein, dass alle deine asserts genau gleichbedeutend zu deinen ifs sind, dann solltest du nochmal überprüfen, ob du die richtigen Eigenschaften überprüfst.