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 ...
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