20.01.2015 Aufrufe

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...

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.

terminiert das Programm (nach Satz 4.4.9 <strong>und</strong> Satz 4.3.4). Ansonsten kann man keine<br />

Aussage über die Terminierung von R treffen.<br />

Dieses Verfahren ist deutlich stärker als die Verwendung der Einbettungsordnung. Der<br />

Gr<strong>und</strong> ist, dass jede lexikographische Pfadordnung eine Simplifikationsordnung ist <strong>und</strong><br />

daher die Einbettungsordnung in jeder lexikographischen Pfadordnung enthalten ist.<br />

In Def. 4.4.6 findet der lexikographische Vergleich der Argumente immer von links nach<br />

rechts statt, d.h., wenn s = f(s 1 ,...,s i ,...,s n ), t = f(t 1 ,...,t i ,...,t n ) <strong>und</strong> s i ≻ lpo t i ist,<br />

so verlangen wir s j = t j für 1 ≤ j < i <strong>und</strong> s ≻ lpo t j für i < j ≤ n. Selbstverständlich könnte<br />

man stattdessen auch einen lexikographischen Vergleich von rechts nach links verwenden.<br />

Die dritte Bedingung in der Definition der lexikographischen Pfadordnung müsste dann wie<br />

folgt geändert werden:<br />

• s = f(s 1 ,...,s i−1 ,s i ,s i+1 ,...,s n ), t = f(t 1 ,...,t i−1 ,t i ,s i+1 ,...,s n ), s i ≻ lpo t i <strong>und</strong><br />

s = f(s 1 ,...,s i−1 ,s i ,s i+1 ,...,s n ) ≻ lpo t j für alle j ∈ {1,...,i−1}.<br />

Diese Variante der lexikographischen Pfadordnung ist z.B. nötig, wenn man die Terminierung<br />

des folgenden TES nachweisen will.<br />

pred(O) → O<br />

pred(succ(x)) → x<br />

minus(x,O) → x<br />

minus(x,succ(y)) → minus(pred(x),y)<br />

Die Ungleichungen, die aus den ersten drei Regeln entstehen, werden bereits von der Einbettungsordnung<br />

erfüllt. Für die letzte Regel müssen wir jedoch<br />

minus(x,succ(y)) ≻ lpo minus(pred(x),y)<br />

nachweisen. Wenn man die Argumente lexikographisch von links nach rechts vergleicht, ist<br />

dies nicht möglich, da x ⋡ lpo pred(x) gilt. Bei der Variante der lexikographischen Pfadordnung,<br />

die von rechts nach links vergleicht, gelingt dieser Beweis jedoch bei der Präzedenz<br />

minus ❂ pred, da wir dann succ(y) ≻ lpo y <strong>und</strong> minus(x,succ(y)) ≻ lpo pred(x) haben. Das<br />

obige Programm terminiert daher.<br />

Neben dem lexikographischen Vergleich von links nach rechts <strong>und</strong> von rechts nach links<br />

sind natürlich auch alle anderen Permutationen der Argumente möglich. Um auch die Terminierung<br />

von Programmen nachzuweisen, die sowohl einen Algorithmus wie sum (für den<br />

man die Argumente von links nach rechts vergleichen muss) als auch einen Algorithmus<br />

wie minus enthalten (für den man von rechts nach links vorgehen muss), kann man jedes<br />

Funktionssymbol mit einem sogenannten Status versehen, der angibt, auf welche Weise die<br />

Argumente dieses Funktionssymbols verglichen werden sollen. Der Status von sum wäre<br />

dann die Permutation 〈1,2〉 (da die Argumente in dieser Reihenfolge verglichen werden)<br />

<strong>und</strong> der Status von minus wäre 〈2,1〉.<br />

Es gibt jedoch auch TESe, bei denen es keine Permutation der Argumente gibt, so dass<br />

der lexikographische Vergleich erfolgreich ist.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!