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.

Beispiel 4.4.19 Betrachten wir noch einmal das Additions-TES aus Bsp. 4.4.8.<br />

sum(O,y) → y<br />

sum(succ(x),y) → sum(x,succ(y))<br />

In Bsp. 4.4.8 wurde die Terminierung mit Hilfe der lexikographischen Pfadordnung gezeigt.<br />

Hingegen gelingt der Beweis mit der rekursiven Pfadordnung nicht. Für die zweite<br />

Regel müsste man sum(succ(x),y) ≻ rpo sum(x,succ(y)) <strong>und</strong> daher {succ(x),y}(≻ rpo ) mul<br />

{x,succ(y)} zeigen. In diesem Fall wäre X die gesamte erste <strong>und</strong> Y die gesamte zweite Multimenge.<br />

Es gibt aber nicht zu jedem Element der zweiten Multimenge ein größeres Element<br />

in der ersten Multimenge, denn es gilt sowohl succ(x) ⊁ rpo succ(y) als auch y ⊁ rpo succ(y).<br />

Wie bei der lexikographischen Pfadordnung erwähnt, kann man jedes Funktionssymbol<br />

mit einem Status versehen, der angibt, in welcher Reihenfolge seine Argumente lexikographisch<br />

verglichen werden sollen. DasKonzept des Status kannnun so erweitert werden, dass<br />

man die lexikographische <strong>und</strong> die rekursive Pfadordnung verbindet. Dann gibt es neben den<br />

lexikographischen Status-Möglichkeiten nun auch die Möglichkeit, dass der Status angibt,<br />

dass die Argumente eines Funktionssymbols als Multimenge zu vergleichen sind. Die so<br />

entstehenden Ordnungen bezeichnet man als rekursive Pfadordnungen mit Status (RPOS)<br />

≻ rpos . All diese Ordnungen sind wieder Reduktionsordnungen, die die Einbettungsordnung<br />

enthalten (d.h., es handelt sich um Simplifikationsordnungen) <strong>und</strong> es lässt sich automatisch<br />

überprüfen, ob es eine Präzedenz <strong>und</strong> eine geeignete Wahl für den Status der Funktionssymbole<br />

gibt, so dass l ≻ rpos r für alle Regeln l → r gilt, vgl. [Der87, Ste95]. Hiermit erhält<br />

man also ein noch mächtigeres automatisches Terminierungsverfahren. Die Terminierung<br />

des TES, das sowohl die sum-Regeln aus Bsp. 4.4.19 als auch die plus-Regeln aus Bsp.<br />

4.4.17 enthält, lässt sich beispielsweise weder mit der lexikographischen noch mit der rekursiven<br />

Pfadordnung alleine beweisen. Verwendet man hingegen eine rekursive Pfadordnung<br />

mit Status, wobei man die Argumente von sum lexikographisch von links nach rechts <strong>und</strong><br />

die Argumente von plus als Multimenge vergleicht, so kann man die Terminierung leicht<br />

(automatisch) zeigen.<br />

Die Frage, ob es eine rekursive Pfadordnung mit Status gibt, mit der man die Terminierung<br />

eines gegebenen TES nachweisen kann, ist entscheidbar. Dieses automatische Terminierungsverfahren<br />

lässt sich nicht nur für TESe verwenden, sondern es lässt sich direkt bei<br />

funktionalen Programmiersprachen einsetzen <strong>und</strong> auch auf andere (z.B. imperative) Programmiersprachen<br />

erweitern [BG99]. Da die Terminierung von TESen aber unentscheidbar<br />

ist, folgt damit sofort, dass es sich hierbei nur um ein unvollständiges Verfahren handelt.<br />

Es gibt also TESe, die zwar terminieren, deren Terminierung aber nicht mit rekursiven<br />

Pfadordnungen nachgewiesen werden kann. Ein Beispiel hierfür ist das folgende System.<br />

plus(succ(succ(x)),succ(y)) → succ(plus(x,succ(succ(y))))<br />

plus(succ(x),succ(succ(y))) → succ(plus(succ(succ(x)),y))<br />

Neben solchen rekursiven Pfadordnungen, wie sie in diesem Abschnitt vorgestellt wurden,<br />

gibt es aber auch noch andere Arten von Simplifikationsordnungen, die ebenfalls für<br />

automatische Terminierungsbeweise eingesetzt werden (z.B. die Knuth-Bendix Ordnung

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!