¨Ubungen zu â Modellierung verteilter Systemeâ
¨Ubungen zu â Modellierung verteilter Systemeâ
¨Ubungen zu â Modellierung verteilter Systemeâ
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Lösung der Aufgabe 2<br />
Syntaktische und semantische Korrektheit von Strömen<br />
Diskussion: Syntax vs. Semantik<br />
(a) first(〈1, 2, 3〉) = 1<br />
Richtig<br />
(b) rest(〈1, 2, ⊥, 3, 4〉) = rest(〈1, 2〉)<br />
Richtig, da 1&2& ⊥ &3&4 = 〈1, 2〉<br />
⊥ schneidet den Strom ab. Man sieht das, wenn man den Strom auf Normalform (1&2& . . .)<br />
bringt, dann kann man Axiome der Vorlesung anwenden.<br />
(c) sˆt = tˆs<br />
Syntaktisch richtig, aber semantisch falsch. Konkatenation ist nicht kommutativ.<br />
(d) first(sˆt) = first(s)<br />
Richtig, da s nicht leer ist.<br />
(e) (xˆs)ˆt = xˆ(sˆt)<br />
Syntaktisch falsch, da x eine Nachricht ist und ˆ ist daher nicht anwendbar.<br />
Richtig wären: (x & s)ˆt = x & (sˆt) und (〈x〉ˆs)ˆt = 〈x〉ˆ(sˆt)<br />
(f) first(rest(first(〈1, 2, 3〉))) = ⊥<br />
Syntaktisch falsch, da first eine Nachricht <strong>zu</strong>rück gibt. rest ist dafür nicht definiert. Zusätzliche<br />
Diskussion ob es überhaupt Fälle geben kann, in denen es sinnvoll ist ⊥ in Axiomen<br />
<strong>zu</strong> verwenden. Ja, z.B. in rest(〈〉) =⊥.<br />
(g) rest(rest(rest(x&(y&s)))) = rest(s)<br />
Richtig<br />
Stromverarbeitende Funktionen<br />
• Aufgabe a)<br />
fct merge : Stream Nat, Stream Nat → Stream Nat<br />
sorted(a) ∧ sorted(b) ∧ c = merge(a, b)<br />
=⇒ sorted(c)<br />
∧ ∀i, j : a i ≤ b j ⇒ ∃k : c k = a i<br />
∧ ∀i, j : a i ≥ b j ⇒ ∃k : c k = b j<br />
∧ ∀k : ∃i: c k = a i ∨ c k = b i<br />
sorted(〈 〉)<br />
sorted(〈x〉)<br />
sorted(x&y&s) ⇐⇒ (x ≤ y ∧ sorted(y&s))