Als Softwareentwickler schreibe ich viel Code für Industrieprodukte. Relativ kompliziertes Zeug mit Klassen, Threads, einigen Designbemühungen, aber auch einigen Kompromissen für die Leistung. Ich teste viel und bin es leid zu testen. Daher interessierte ich mich für formale Proof-Tools wie Coq, Isabelle ... Könnte ich eines davon verwenden, um zu …
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 …
Aus Wikipedia: In der theoretischen Informatik wird die Korrektheit eines Algorithmus behauptet, wenn gesagt wird, dass der Algorithmus in Bezug auf eine Spezifikation korrekt ist. Das Problem ist jedoch, dass es keine triviale Aufgabe ist, die "passende" Spezifikation zu erhalten, und es gibt keine 100% korrekte Methode (soweit ich weiß), …
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 …
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 …
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 …
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 …
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. …
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 …
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 …
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 …
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) …
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 …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.