Übungen zu „Grundlagen von Programm

Werbung
Technische Universität München
Institut für Informatik
Prof. Dr. M. Broy
Dr. A. Malkis, V. Bauer, D. Marmsoler
WiSe 2013/14
Übungsblatt 11
Ausgabe: 8. Januar 2014
Besprechung: 20. Januar 2014
Übungen zu „Grundlagen von Programm- und Systementwicklung“
Aufgabe 1 Rekursive Funktionen auf unendlichen Sequenzen
Für eine unendliche Sequenz seq von natürlichen Zahlen, dargestellt als eine Funktion Nat → Nat (diese
Funktion bildet die Position in der Sequenz auf den Eintrag ab), und eine Position x definieren wir
search(x, seq) als das erste Vorkommen von x in seq:
fct search = (x : Nat, seq: Nat -> Nat) Nat:
search_from_index (x, seq, 0);
fct search_from_index = (x : Nat, seq: Nat -> Nat, start : Nat) Nat:
if (seq(start)=x) then start
else search_from_index (x, seq, start+1);
(a) Sei τ das der Deklaration von search_from_index zugeordnete Funktional. Geben Sie eine explizite äquivalente Definition für die Funktion search_from_index i = τ i (λ x : Nat, seq : Nat →
Nat, start : Nat. ⊥) für alle i ∈ N an, so dass ihre Definition nichtrekursiv ist, und in der τ nicht
vorkommt.
(b) Geben Sie sup{search_from_index i | i ∈ N} an.
(c) Ist das Supremum der kleinste Fixpunkt von τ ? Zeige oder widerlege.
(d) Für welche Werte der Eingabeparameter terminiert search? Stellen Sie für diese Werte eine Abstiegsfunktion auf und beweisen Sie, dass es sich dabei tatsächlich um eine Abstiegsfunktion handelt.
Aufgabe 2 wp- und wlp-Semantik
Betrachten Sie die folgende Erweiterung von NAT:
SPEC EXT_NAT = {
based_on NAT,
≤: Nat,Nat→Bool,
÷: Nat,Nat→Nat,
even: Nat→Bool,
0 ≤ x = true,
succ(x) ≤ 0 = false,
succ(x) ≤ succ(y) = x ≤ y,
x 6= 0 ⇒ x ∗ (y ÷ x) ≤ y = true ∧ x ∗ succ(y ÷ x) ≤ y = false,
even(0) = true,
even(succ(0)) = false,
even(succ(succ(x))) = even(x)
}
Seien im folgenden die Variablen x, y und z von der Sorte Nat und 1, 2, 3 wie üblich als succ(0),
succ(succ(0)) und succ(succ(succ(0))) definiert. Geben Sie für jedes der folgenden Prädikate eine in
jedem Modell von EXT_NAT äquivalente quantorenfreie Formel ohne wp und wlp an.
(a) wp(x := x + 1, x ≤ 1).
(b) wp if y ≤ x then z := x [] x ≤ y then z := y fi , z = max{x, y} , wobei z = max{x, y} eine
Abkürzung für (x ≤ y ∧ z = y) ∨ (y ≤ x ∧ z = x) ist.
(c) wlp if y ≤ x then z := x [] x ≤ y then z := y fi , z + 1 = y .
(d) (Optionale Aufgabe)
wlp((y := 1; z := 3;
do y ≤ x then y := y + z; z := z + 2 od;
z := √
z ÷ 2 − 1) ,
z = b xc)
√
Hierbei ist b√ ·c : Nat
√ → Nat wie üblich spezifiziert:
√
√
∀ x ∈ Nat : b xc ∗ b xc ≤ x ∧ not(succ(b xc) ∗ succ(b xc) ≤ x).
(e) (Optionale Aufgabe, erhöhter Schwierigkeitsgrad)
wp((do even(x) then x := x ÷ 2 [] not(even(x)) then x := 3 ∗ x + 1 od), x = 1).
Lösungen dieser optionalen Aufgaben können bis zur Besprechung abgegeben werden, sie werden korrigiert. Musterlösungen wird es dazu nicht geben.
Herunterladen