03.11.2012 Aufrufe

Informatik I - Institut für Informatik - Christian-Albrechts-Universität zu ...

Informatik I - Institut für Informatik - Christian-Albrechts-Universität zu ...

Informatik I - Institut für Informatik - Christian-Albrechts-Universität zu ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Als Variablen setzen wir mindestens x von der Sorte m voraus. Schließlich gehen wir<br />

von nur einer Regel aus, die folgendes Aussehen hat:<br />

(1) f(x, x) → x<br />

Bei diesem Termerset<strong>zu</strong>ngssystem sind mehrere Erset<strong>zu</strong>ngswege <strong>zu</strong> einer Eingabe<br />

möglich. Für den Term f(f(a, a), f(a, a)) bekommt man beispielsweise das nachfolgende<br />

Berechnungsdiagramm:<br />

f(f(a, a), f(a, a))<br />

❍<br />

� ❍❍❥<br />

�✠<br />

f(a, f(a, a)) f(f(a, a), a)<br />

❅ �<br />

❅❘ ❄<br />

f(a, a) �✠<br />

❄<br />

a<br />

Etwa gilt <strong>für</strong> die obere mittlere Erset<strong>zu</strong>ng z = ε und σ(x) = f(a, a). Für die obere<br />

rechte Erset<strong>zu</strong>ng verwendet man die Stelle z = 2 und die Substitution σ(x) = a.<br />

c) Im folgenden sei die Signatur die von Beispiel 2.3.2.a mit nat, zero und succ, wobei<br />

wir, wie schon in a), die gewohnte 0 statt zero schreiben, erweitert um ein Funktionsymbol<br />

add : nat, nat → nat. Die Variablenmenge enthalte x und y, beide von der<br />

Sorte nat. Als Regeln des Termerset<strong>zu</strong>ngssystem habe man schließlich:<br />

(1) add(x, 0) → x<br />

(2) add(x, succ(y)) → succ(add(x, y))<br />

(3) add(x, y) → add(y, x)<br />

Eine Beispielrechnung (mit Markierung der Übergänge durch die verwendeten Regeln)<br />

sieht dann wie folgt aus:<br />

add(0, succ(0))<br />

�<br />

�<br />

� �✠<br />

add(succ(0), 0)<br />

❅<br />

❅❅❘ (2)<br />

succ(add(0, 0))<br />

❅ �<br />

(1) (1)<br />

❅❅❘<br />

�<br />

��✠<br />

succ(0)<br />

���✒<br />

(3) (3)<br />

✻<br />

(3)<br />

Die Kommutativitätsregel (3) läßt also nicht nur Verzweigungen in den Texterset<strong>zu</strong>ngsberechnungen<br />

<strong>zu</strong>, sondern zerstört auch die Terminierung des Termerset<strong>zu</strong>ngssystems.<br />

Entfernt man die Termerset<strong>zu</strong>ngsregel (3), so gilt offensichtlich<br />

add(succ n (0), succ m (0)) ∗ ⇒ succ n+m (0),<br />

wobei succ k (0) <strong>für</strong> den Term succ(succ(. . .succ(0) . . .)) mit k Anwendungen von succ<br />

steht. Das Termerset<strong>zu</strong>ngssystem mit den beiden Regeln (1) und (2) realisiert somit<br />

die Addition von natürlichen Zahlen. �<br />

40

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!