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 ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Beispiel 4.4.10 Wir betrachten die folgende Variante der plus-TES, bei dem die Argumente<br />
im rekursiven Aufruf vertauscht wurden.<br />
plus(O,y) → y<br />
plus(succ(x),y) → succ(plus(y,x))<br />
Für die zweite Regel lässt sich keine lexikographische Pfadordnung angeben, so dass die<br />
linke Seite größer als die rechte Seite wäre. Das Problem ist, dass weder das erste noch<br />
das zweite Argument von plus hierbei kleiner wird. Es gilt succ(x) ⊁ y <strong>und</strong> y ⊁ x für jede<br />
f<strong>und</strong>ierte <strong>und</strong> stabile Relation ≻. Das Problem liegt daran, dass in diesen Ungleichungen<br />
die rechte Seite Variablen enthält, die nicht auf der linken Seite auftreten.<br />
Im obigen Beispiel besteht die Abhilfe darin, dass man die Argumente von plus nicht<br />
als Tupel, sondern als Mengen vergleicht. Dann spielt es keine Rolle mehr, an welcher Argumentposition<br />
ein Argument auftritt. Hierzu führen wir nun neben der lexikographischen<br />
Pfadordnung eine zweite Simplifikationsordnung für automatische Terminierungsbeweise<br />
mit TESen ein.<br />
Im allgemeinen kann ein Funktionssymbol natürlich mehrere Argumente mit demselben<br />
Wert besitzen. Bei der Datenstruktur der Mengen werden jedoch doppelte Vorkommen<br />
eines Elements ignoriert. Es ist daher sinnvoll, statt Mengen sogenannte Multimengen zu<br />
verwenden. Multimengen unterscheiden sich von Mengen dadurch, dass Elemente mehrfach<br />
vorkommen können (wie bei linearen Listen). Im Unterschied zu Listen ist jedoch die Reihenfolge<br />
der Elemente unerheblich. Bei Multimengen gilt also {1,1,4} = {1,4,1} ≠ {1,4}.<br />
Definition 4.4.11 (Multimenge) Sei T eine nicht-leere Menge. Eine ungeordnete endliche<br />
Folge M von Elementen aus T heißt Multimenge über T. Wir bezeichnen die Menge<br />
aller (endlichen) Multimengen über T mit M(T).<br />
Eine solche Multimenge M ist durch ihre charakteristische Funktion # M : T → IN<br />
definiert, wobei # M (t) die Anzahl der Vorkommen des Elements t in der Multimenge M<br />
angibt. Es gilt also t ∈ M gdw. # M (t) > 0. Auf Multimengen M,N werden nun die folgenden<br />
Operationen definiert:<br />
• M = N gdw. # M (t) = # N (t) für alle t ∈ T<br />
• M ⊆ N gdw. # M (t) ≤ # N (t) für alle t ∈ T<br />
• M ⊂ N gdw. M ⊆ N <strong>und</strong> M ≠ N<br />
• M ∪N ist die Multimenge mit # M∪N (t) = # M (t)+# N (t) für alle t ∈ T<br />
• M ∩N ist die Multimenge mit # M∩N (t) = min(# M (t),# N (t)) für alle t ∈ T<br />
• M \N ist die Multimenge mit # M\N (t) = max(0,# M (t)−# N (t)) für alle t ∈ T