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