Softwaretechnik II – Übungen 2

Werbung
Übungsaufgaben
Softwaretechnik II – Wintersemester 2012/13
Lehrstuhl für Softwaretechnik und Programmiersprachen,
Universität Düsseldorf
1
Lotto
Erstellen Sie einen Kontext, der Ihnen dabei hilft, die Anzahl Richtige beim
Lotto zu errechnen. Gehen Sie dabei einfach schrittweise vor und fügen Sie nach
und nach Konstanten und Axiome für die Zwischenergebnisse hinzu. Prüfen
Sie mittels ProB das Ergebnis. Wir empfehlen Ihnen die Verwendung der EvalKonsole um die Ausdrücke auszuprobieren.
1. Ein Lottoschein besteht aus mehreren Tipps. Bei einem Tipp werden 6
aus den Zahlen 1 bis 49 gewählt. Fügen Sie die Tipps als Konstante in
Ihren Kontext ein.
2. Das Ergebnis der Ziehung sind 6 Zahlen.
3. Berechnen Sie für jeden Tipp die Menge der Treffer.
4. Berechnen Sie für jeden Tipp die Anzahl der Treffer.
5. Berechnen Sie die maximale Anzahl Treffer.
6. Berechnen Sie eine Abbildung der Zahlen 1 bis 6 auf die Anzahl der Tipps,
die so viele Treffer haben ohne die Nullen. (Beispiel: {1 7→ 1, 2 7→ 2, 4 7→ 1}
bedeutet, dass es einen Tipp mit einem Richtigen, 2 Tipps mit 2 Richtigen
und einen Tipp mit 4 Richtigen gibt.
2
Who killed Agatha?
Erstellen Sie einen Kontext, der folgendes Logikrätsel formalisiert.
Someone in Dreadsbury Mansion killed Aunt Agatha. Agatha,
the butler, and Charles live in Dreadsbury Mansion, and are the
only ones to live there. A killer always hates, and is no richer than
his victim. Charles hates noone that Agatha hates. Agatha hates
everybody except the butler. The butler hates everyone not richer
than Aunt Agatha. The butler hates everyone whom Agatha hates.
Noone hates everyone.
Who killed Agatha?
Finden Sie mittels ProB (oder gar durch eigene Überlegung) heraus, wer
Agatha tötete. Es gibt nur eine richtige Lösung. Fügen Sie dem Kontext ein
Theorem hinzu, das explizit aussagt, wer der Mörder ist. Beweisen Sie mittels
Rodin ihre Schlussfolgerung.
1
3
Minimum und Maximum
Spezifizieren Sie einen Algorithmus, der ein Array von Zahlen als Eingabe bekommt und sowohl Maximum und Minimum berechnet. Als Spezifikation soll
ein einzelnes Event dienen. Es bleibt Ihnen überlassen, ob die Ergebnisse zwei
Parameter des Events oder Variablen der Maschine sind.
Beschreiben Sie Ihren Algorithmus im Refinement.
2
Herunterladen