Die Frage ist ziemlich weit gefasst. Um es in einem angemessenen Raum zu beantworten, werde ich viele Vereinfachungen vornehmen.
Lassen Sie uns die Terminologie vereinbaren. Ein Programm ist korrekt, wenn es seine Spezifikation impliziert. Diese vage Aussage wird in vielerlei Hinsicht präzisiert, indem festgehalten wird, was genau ein Programm und was genau eine Spezifikation ist. Beispielsweise ist das Programm bei der Modellprüfung eine Kripke-Struktur und die Spezifikation ist häufig eine LTL- Formel. Oder das Programm könnte eine Liste von PowerPC-Anweisungen sein, und die Spezifikation könnte ein Satz von Hoare-Floyd-Behauptungen sein, die beispielsweise in Logik erster Ordnung geschrieben sind. Es gibt sehr viele mögliche Variationen. Es ist verlockend zu folgern, dass wir in einem Fall (Kripke-Struktur) kein tatsächliches Programm verifizieren, während wir dies im zweiten Fall (Liste der PowerPC-Anweisungen) tun. Es ist jedoch wichtig zu erkennen, dass wir uns in beiden Fällen wirklich mit mathematischen Modellen befassen, und dies ist vollkommen in Ordnung. (Die Situation ist der Physik sehr ähnlich, in der zum Beispiel die klassische Mechanik ein mathematisches Modell der Realität ist.)
Die meisten Formalisierungen unterscheiden zwischen der Syntax und der Semantik eines Programms. das heißt, wie es dargestellt wird und was es bedeutet. Die Semantik eines Programms ist das, was aus Sicht der Programmüberprüfung zählt. Aber es ist natürlich wichtig, eine klare Art der Zuordnung von Bedeutungen zu (syntaktischen Darstellungen von) Programmen zu haben. Zwei beliebte Möglichkeiten sind die folgenden:
- (kleiner Schritt) Operative Semantik : Dies ähnelt der Definition einer Programmiersprache, indem ein Interpreter dafür geschrieben wird. Dazu müssen Sie den Status angeben, der von jeder Anweisung in der Sprache beeinflusst wird. (Sie fragen sich vielleicht, in welcher Sprache Sie den Dolmetscher schreiben, aber ich werde so tun, als ob Sie das nicht tun.)
- Axiomatische Semantik : Hier wird jeder Anweisungstyp mit einem Axiomschema geliefert. Wenn also eine bestimmte Aussage dieses Typs verwendet wird, bedeutet dies ungefähr, dass bestimmte Axiome verwendet werden können. Zum Beispiel kommt die Zuweisung mit dem Schema { P [ x / e ] }x:=e ; die besondere Zuordnung x : = x + 1 kommt mit dem Axiom { x + 1 = 1 }{P[x/e]}x:=e{P}x:=x+1 wenn wir das Schema mit P = ( x = 1 ) instanziieren.{x+1=1}x:=x+1{x=1}P= ( x = 1 )
(Es gibt andere. Ich fühle mich besonders schlecht, wenn ich die Denotationssemantik weglasse, aber diese Antwort ist bereits lang.) Maschinencode plus operationale Semantik kommen dem sehr nahe, was die meisten Leute ein "echtes Programm" nennen würden. Hier ist eine wegweisende Abhandlung, die zufällig die operative Semantik für eine Teilmenge des DEC Alpha-Maschinencodes verwendet:
Warum würden Sie jemals eine höhere Semantik verwenden, wie die axiomatischen? Wenn Sie nicht möchten, dass Ihr Korrektheitsnachweis von der Hardware abhängt, auf der Sie ausgeführt werden. Der Ansatz besteht dann darin, die Korrektheit eines Algorithmus in Bezug auf eine geeignete Semantik auf hoher Ebene zu beweisen und dann zu beweisen, dass die Semantik in Bezug auf eine Semantik auf niedrigerer Ebene klingt, die näher an tatsächlichen Maschinen liegt.
Zusammenfassend kann ich drei Gründe nennen, die zu Ihrer Frage geführt haben:
- Sie haben nur Semantik auf hoher Ebene gesehen, die nicht so aussieht, wie Sie es gewohnt sind, ein Programm aufzurufen, und Sie fragen sich, ob es solche auf niedriger Ebene gibt. Die Antwort ist ja.
- Sie fragen sich, wie Sie beweisen, dass ein Modell der Realität entspricht. Wie in der Physik nicht. Man erfindet einfach bessere Modelle und vergleicht sie mit der Realität.
- Sie haben nicht die Unterscheidung zwischen Syntax und Semantik sowie verschiedene Möglichkeiten zur Zuordnung von Bedeutungen zu Programmen gesehen. In zwei vorherigen Fragen sind einige Bücher aufgelistet.
Diese Antwort versucht lediglich drei verschiedene Arten zu identifizieren, auf die ich die Frage verstanden habe. Wenn Sie in einen dieser Punkte eintauchen, ist viel Platz erforderlich.