Westsächsische Hochschule Zwickau, Fachgruppe Informatik Prof. Dr. S. Schwarz [email protected] 3.Übung zur Vorlesung Spezifikation und Verifikation“ ” Wintersemester 2012/2013 gestellt am 25. Oktober 2012 Aufgabe 3.1: Definieren Sie zunächst schriftlich und dann in Coq (mit Hilfe der Vorlesungsfolien) a. einen rekursiven Datentyp zur Darstellung von Peano-Zahlen b. die Funktionen Addition und Multiplikation von Peano-Zahlen c. die Aussage, dass die Addition von Peano-Zahlen kommutativ ist, d. die Aussage, dass die Addition von Peano-Zahlen assoziativ ist, e. die Aussage, dass S Z das neutrale Element der Multiplikation ist, f. die Aussagen, dass für jede Peano-Zahl n gilt: mult 2 n = plus n n g. die Beweise für alle oben aufgestellten Aussagen. Aufgabe 3.2: Definieren Sie zunächst schriftlich und dann in Coq (mit Hilfe der Vorlesungsfolien) a. einen rekursiven Datentyp zur Darstellung von Listen (polymorph), b. die Funktionen append und reverse für diese Listen, (Zeigen Sie durch schrittweises Ableiten (Papier), dass gilt: append [1,4] (append [2] [3,5]) = append (append [1,4] [2]) [3,5] ) c. die Aussage, dass zweimalige Anwendung von reverse die Liste unverändert zurückgibt, d. eine Funktion len, welche die Länge einer Liste zurückgibt, e. die Aussage, dass die Länge der Verkettung zweier Listen die Summe der Längen beider Listen ist, f. die Beweise für alle oben aufgestellten Aussagen. Aufgabe 3.3: Definieren Sie zunächst schriftlich und dann in Coq (mit Hilfe der Vorlesungsfolien) a. einen rekursiven Datentyp zur Darstellung von Listen natürlicher Zahlen, b. eine Funktion double_all, welche jedes Element der Liste verdoppelt, c. das Prädikat palindrom, welches zurückgibt, ob eine eingegebene Liste ein Palindrom ist, d. das Prädikat member, welches zurückgibt, ob ein Element in einer Liste enthalten ist. e. das Prädikat sortiert, welches zurückgibt, ob eine Liste natürlicher Zahlen aufsteigend sortiert ist, f. eine Funktion insert, die ein Element sortiert in eine sortierte Liste einfügt, g. den Beweis, dass Ihre Funktion insert bei Eingabe einer sortierten Liste eine sortierte Liste zurückgibt. h. eine Funktion merge, welche zwei sortierte Listen zu einer sortierten Liste zusammenfügt, i. den Beweis, dass Ihre Funktion merge bei Eingabe zweier sortierten Listen einen sortierte Liste zurückgibt. Aufgabe 3.4: Definieren Sie zunächst schriftlich und dann in Coq (mit Hilfe der Vorlesungsfolien) a. einen rekursiven Datentyp zur Darstellung von Binärbäumen (polymorph) mit Schlüsseln in den inneren Knoten. b. die Funktionen inorder und preorder für diese Bäume. Aufgabe 3.5: Definieren Sie zunächst schriftlich und dann in Coq (mit Hilfe der Vorlesungsfolien) a. einen rekursiven Datentyp zur Darstellung von Binärbäumen mit natürlichen Zahlen als Schlüssel (nur in den inneren Knoten). b. ein Prädikat suchbaum, welches zurückgibt, ob ein solcher Binärbaum die SuchbaumEigenschaft erfüllt, c. eine Funktion insert, welches einen Schlüssel in diesen Suchbaum einfügt, d. den Beweis, dass Ihre Funktion insert die Suchbaum-Eigenschaft erhält. Aufgabe 3.6: Definieren Sie in Coq a. einen Datentyp zur Verwaltung von Bäumen mit beliebigem Verzweigungsgrad b. eine Funktion, die alle Schlüssel eines solchen Baumes in Preorder-Reihenfolge zurückgibt. Aufgabe 3.7: Definieren Sie zunächst schriftlich und dann in Coq (mit Hilfe der Vorlesungsfolien) a. einen rekursiven Datentyp zur Darstellung von aussagenlogischen Formeln (nur Junktoren {t, f , ¬, ∨, ∧}, keine Aussagenvariablen) b. die Funktion varcount, welche die Anzahl aller Variablenvorkommen in einer Formel zurückgibt, c. die Funktion wert, welche den Wahrheitswert einer solchen Formel zurückgibt. Übungsaufgaben, Folien und weitere Hinweise zur Vorlesung finden Sie online unter http://www.fh-zwickau.de/~sibsc/lehre/ws12/veri/.