Als «software-verification» getaggte Fragen

Fragen zu Methoden und Techniken zum Nachweis der Richtigkeit von Programmen.


6
Algorithmus zur Lösung von Turings "Halting Problem"
Diese Frage wurde von Theoretical Computer Science Stack Exchange migriert, da sie über Computer Science Stack Exchange beantwortet werden kann. Vor 7 Jahren migriert . "Alan Turing hat 1936 bewiesen, dass ein allgemeiner Algorithmus zur Lösung des Halteproblems für alle möglichen Programm-Eingabe-Paare nicht existieren kann." Kann ich einen allgemeinen Algorithmus …


4
Wie überprüfen Sie, ob zwei Algorithmen für Eingaben dasselbe Ergebnis liefern?
Wie können Sie überprüfen, ob zwei Algorithmen (z. B. Merge Sort und Naive Sort) für jede Eingabe dasselbe Ergebnis liefern, wenn die Menge aller Eingaben unendlich ist? Update: Vielen Dank, Ben, für die Beschreibung, wie dies im allgemeinen Fall nicht algorithmisch möglich ist. Daves Antwort ist eine großartige Zusammenfassung sowohl …

1
Warum recherchieren wir nicht mehr nach Kompilierzeitgarantien?
Ich mag alles, was Kompilierungszeit ist, und ich mag die Idee, dass, sobald Sie ein Programm kompilieren, eine Menge Garantien für dessen Ausführung gegeben werden. Im Allgemeinen scheint ein statisches Typsystem (Haskell, C ++, ...) stärkere Kompilierungszeitgarantien zu bieten als jedes dynamische Typsystem. Soweit ich weiß, geht Ada in Bezug …

2
Umgang mit Arrays bei Korrektheitsprüfungen im Hoare-Stil
In der Diskussion um diese Frage erwähnt Gilles richtig, dass jeder Korrektheitsnachweis eines Algorithmus, der Arrays verwendet, beweisen muss, dass es keine Array-Zugriffe außerhalb der Grenzen gibt. Abhängig vom Laufzeitmodell würde dies einen Laufzeitfehler oder den Zugriff auf Nicht-Array-Elemente verursachen. Eine übliche Technik, um solche Korrektheitsnachweise durchzuführen (zumindest in Grundstudien …

4
Was sind gängige formale Techniken, um die Richtigkeit des Funktionscodes zu beweisen?
Ich möchte Beweise für Teile eines Haskell-Programms liefern, das ich im Rahmen meiner Abschlussarbeit schreibe. Bisher habe ich jedoch kein gutes Nachschlagewerk gefunden. Graham Huttons Einführungsbuch Programming in Haskell ( Google Books ), das ich beim Lernen von Haskell gelesen habe, geht auf einige Techniken ein, um über Programme wie …

6
Könnten Programmüberprüfungstechniken das Auftreten von Fehlern des Genres Heartbleed verhindern?
In Bezug auf den Heartbleed-Bug schrieb Bruce Schneier in seinem Crypto-Gram vom 15. April: "Catastrophic" ist das richtige Wort. Auf der Skala von 1 bis 10 ist dies eine 11. ' Ich habe vor einigen Jahren gelesen, dass ein Kernel eines bestimmten Betriebssystems mit einem modernen Programmüberprüfungssystem rigoros überprüft wurde. …

2
Einführung in die Logikverifikation erster Ordnung
Ich versuche mir verschiedene Ansätze zur Softwareüberprüfung beizubringen. Ich habe einige Artikel gelesen. Soweit ich gelernt habe, verwendet die Aussagenlogik mit Zeit im Allgemeinen die Modellprüfung mit SAT-Lösern (in laufenden - reaktiven Systemen), aber was ist mit der Logik erster Ordnung mit Zeit? Verwendet es Theorembeweiser? Oder kann es auch …

1
Datenflussanalyse mit Ausnahmen
Die Datenflussanalyse erfolgt über ein Kontrollflussdiagramm. Wenn eine betrachtete Sprache Ausnahmen unterstützt, kann das Kontrollflussdiagramm explodieren. Was sind die Standardtechniken für den Umgang mit dieser Explosion? Können wir ausnahmsweise hervorgerufene Kanten ignorieren? Datenflussanalysen berechnen ohnehin Übernäherungen, sodass wir eine weniger genaue, aber solide Lösung erhalten würden. Ist das wahr? Update …

2
Was genau ist symbolische Modellprüfung?
Ich weiß, dass die symbolische Modellprüfung eine Zustandsraumdurchquerung ist, die auf Darstellungen von Zustandssätzen und Übergangsbeziehungen als Formeln wie in CTL unter Verwendung von Modellen wie dem Kripke-Modell basiert. Ich kenne die Theorie. Aber ich finde es schwierig, die tatsächliche Anwendung zu verstehen. Wo genau wird es verwendet? Was genau …

1
Überprüfen Sie die Richtigkeit der Quantifizierereliminierung mit SAT
Let und sein -Vektoren der Booleschen Variablen. Ich habe ein boolesches Prädikat auf . Ich gebe meiner Freundin Priscilla . Als Antwort gibt sie mir , ein boolesches Prädikat für , und sie behauptet dasx=(x1,…,xn)x=(x1,…,xn)x=(x_1,\dots,x_n)y=(y1,…,yn)y=(y1,…,yn)y=(y_1,\dots,y_n)nnnQ(x,y)Q(x,y)Q(x,y)x,yx,yx,yQ(x,y)Q(x,y)Q(x,y)P(x)P(x)P(x)xxx P(x)≡∃y.Q(x,y),P(x)≡∃y.Q(x,y),P(x) \equiv \exists y . Q(x,y), oder mit anderen Worten, das ∀x.[P(x)⇔∃y.Q(x,y)].∀x.[P(x)⇔∃y.Q(x,y)].\forall x . [P(x) …

5
Können wir quantifizieren, wie nahe ein teilweise korrektes Programm an der Richtigkeit liegt?
Ich weiß, dass es etwas gibt, das als teilweise Korrektheit bezeichnet wird, aber ich habe mich gefragt, ob es eine Möglichkeit gibt, festzustellen, wie nahe ein halbkorrektes Programm an einem vollständig korrekten Programm liegt. Wenn Sie beispielsweise ein Sortierprogramm hätten, das ein Array fast vollständig sortiert, könnten Sie dann mithilfe …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.