• Keine Ergebnisse gefunden

9.1 Stärkste Nachbedingungen 20 Punkte

N/A
N/A
Protected

Academic year: 2022

Aktie "9.1 Stärkste Nachbedingungen 20 Punkte"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Serge Autexier Christoph Lüth Korrekte Software: Grundlagen und Methoden SoSe 17

9. Übungsblatt

Ausgabe: 22.06.17 Abgabe: 29.06.17

9.1 Stärkste Nachbedingungen 20 Punkte

In diesem Übungsblatt wollen wir den Funktionsumfang unseres C-Analysewerkzeugscatnoch um die Vor- wärtsberechnung von Verifikationsbedingungen mit Hilfe der stärksten Nachbedingung (strongest postconditi- on) erweitern.

Die Eingabe ist dabei wie immer ein C-Programm, bei dem Funktionen mit Vor- und Nachbedingungen (erste optional) annotiert sind, und zwingend jede Schleife mit einer Invariante.

Analog zu der Berechung von Verifikationsbedingungen mit Hilfe der stärksten Nachbedingung (awp) nimmt unser Analysewerkzeug ein annotiertes Programm, und berechnet daraus die Verifikationsbedingungen mit Hilfe der approximierten stärksten Nachbedingung (asp). Wir schreiben dazu zwei Funktionen:

def svc( ctxt : Env) (s : Stmt, post : Term, ret : Term) : List [Term]

def asp( ctxt : Env) (s : Stmt, post : Term, ret : Term) : Term

die exakt den in der Vorlesung vorgestellten entsprechen.

Die VCG ist in der KlasseStrongestPostconditionzu implementieren. Sie finden den entsprechenden Rahmen im git-Repository der Veranstaltung. Lösen Sie die Aufgabe so dass die entsprechenden Tests ein sinnvolles Ergebnis liefern (d.h.sbt "testOnly cat.VCGTest").

12 Teilpunkte Direkt wie in der Vorlesung vorgestellt wird so aus einer Sequenz vonnZuweisungen eine Nachbedingung mitnExistenzquantoren. Um das zu vermeiden, wollen wir eine spezialisierte Regel für den Fall entwerfen, dass die Vorbedingung schon von der Form∃S.P(S)∧σ= f(S)ist. Formulieren Sie diese Regel erst als Hoare- Regel, oder als neue Klausel für die Definition vonasp, und implementieren Sie sie dann.

3 Teilpunkte Die so generierten Verifikationsbedingungen sind nicht vereinfacht (insbesondere sindRead-Operationen nicht vereinfacht), und damit sehr länglich. Implementieren Sie deshalb eine Funktion

simpState( t : Term) : Term

welche einen Term mit Hilfe der folgenden Regeln vereinfacht:

Read(Upd(s,l,v),l) =v

Read(Upd(s,l,v),m) =Read(s,m) wennl6=m Upd(Upd(s,l,v),l,w) =Upd(s,l,w)

Für die Ungleichheitl6=mkönnen Sie nur davon ausgehen, dass benannte Variablen (Var( Identifier ( i ) , t , k)) ungleich sind, wenn der Bezeichneri ungleich ist.

5 Teilpunkte

— Seite 1 von 1 —

Referenzen

ÄHNLICHE DOKUMENTE

f) Wie groß ist die Wahrscheinlichkeit, dass von der Nachricht mindestens 9 Zeichen richtig übertragen werden? Zwischenrechnungen sind mit 8 Dezimalstellen zu erfas- sen. Das

Achtung: Für die Lösung verwenden Sie bitte das beiliegende Einzelblatt, auf dem Sie auch Ihren Na- men und Ihre Matrikelnummer vermerken!. 5 P...

a) Wie groß ist die Wahrscheinlichkeit, dass die Laufleistung eines der laufenden Produktion zufällig entnommenen Reifens mindestens 36.250 km beträgt..

erforderlich sein? Wie groß sind die Varianz und die Standardabweichung von x? 5 P d) Wie groß ist die Wahrscheinlichkeit, dass bei genau einer Maschine während der.. nächsten

• Nur dann, wenn die Punkte für eine Aufgabe nicht differenziert vorgegeben sind, ist ihre Aufschlüsselung auf die einzelnen Lösungsschritte Ihnen überlassen. • Stossen Sie

b) Mit welcher Wahrscheinlichkeit wird die Lebensdauer einer zufällig der Produktion entnommenen Lampe des genannten Typs höchstens 10.640 Stunden betragen.

In nachstehender Tabelle sind die Umsätze in Millionen Euro für Großhandels- unternehmen einer Region für das Jahr 2007 festgehalten. Umsatz x

c) Erweitern Sie Ihre Tabelle zu a) durch geeignete Spalten so, dass Sie den Gini-Koeffizienten (4 Dezimalstellen) bestimmen können.. Ein Verkäufer von Dosenbier unterstellt, dass