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.
DasVerfahrenwirdnunsolangewiederholt,biskeineneuenRegelnmehrentstehen, d.h.,<br />
bis alle kritischen Paare zusammenführbar sind. Wie in Abschnitt 3.3 erwähnt, erhält man<br />
so eine Folge R 0 ,R 1 ,R 2 ,... von TESen, die alle zu E äquivalent sind. Wie dort erläutert<br />
wurde, gibt es 3 Möglichkeiten für diesen Prozess:<br />
1. Man könnte nach einigen Iterationen ein TES R n erhalten, dessen kritische Paare<br />
alle zusammenführbar sind. Dann endet das Verfahren mit Erfolg, denn R n ist ein<br />
konvergentes <strong>und</strong> zu E äquivalentes TES.<br />
2. Es könnte sein, dass man bei einem TES R n in der Folge die Terminierung nicht<br />
nachweisen kann. (Dies kann daran liegen, dass es wirklich nicht terminiert oder dass<br />
unser hinreichendes Kriterium der Terminierungsüberprüfung mit der RPOS nur die<br />
Terminierung nicht nachweisen kann.) Nun bricht man mit Misserfolg (“Fail”) ab.<br />
Immerhin erkennt man in diesem Fall den Misserfolg <strong>und</strong> könnte z.B. mit einem<br />
verbesserten Terminierungstest einen neuen Vervollständigungsversuch starten.<br />
3. Schließlich kann es auch passieren, dass zwar alle R i in der Folge terminieren, man<br />
aber kein konfluentes TES erreicht. Dann terminiert das Vervollständigungsverfahren<br />
nicht <strong>und</strong> in diesem Fall erkennen wir daher die Erfolglosigkeit des Verfahrens auch<br />
nicht.<br />
Eine generelle Vermeidung der letzten beiden Möglichkeiten ist prinzipiell nicht möglich,<br />
da das Wortproblem im allgemeinen unentscheidbar ist. (Selbstverständlich kann man aber<br />
natürlich versuchen, bessere Vervollständigungsalgorithmen zu entwickeln, die häufiger erfolgreich<br />
sind, vgl. Abschnitt 6.2.) Man erhält demnach den folgenden Algorithmus BA-<br />
SIC COMPLETION.<br />
Algorithmus BASIC COMPLETION(E,≻)<br />
Eingabe: Ein Gleichungssystem E <strong>und</strong> eine Reduktionsordnung ≻.<br />
Ausgabe: Ein zu E äquivalentes konvergentes TES R<br />
oder “Fail” oder Nicht-Terminierung.<br />
1. Falls es s ≡ t ∈ E mit s ≠ t, s ⊁ t <strong>und</strong> t ⊁ s gibt,<br />
dann gib “Fail” aus <strong>und</strong> brich ab.<br />
2. Setze i = 0 <strong>und</strong> R 0 = {l → r|l ≻ r <strong>und</strong> l ≡ r ∈ E oder r ≡ l ∈ E}.<br />
3. Setze R i+1 = R i .<br />
4. Für alle 〈s,t〉 ∈ CP(R i ):<br />
4.1. Berechne R i -Normalformen s ′ <strong>und</strong> t ′ von s <strong>und</strong> t.<br />
4.2. Falls s ′ ≠ t ′ , s ′ ⊁ t ′ <strong>und</strong> t ′ ⊁ s ′ ,<br />
dann gib “Fail” aus <strong>und</strong> brich ab.<br />
4.3. Falls s ′ ≻ t ′ , dann setze R i+1 = R i+1 ∪{s ′ → t ′ }.<br />
4.4. Falls t ′ ≻ s ′ , dann setze R i+1 = R i+1 ∪{t ′ → s ′ }.<br />
5. Falls R i+1 = R i , dann gib R i aus <strong>und</strong> brich ab.<br />
6. Setze i = i+1 <strong>und</strong> gehe zu Schritt 3.<br />
In diesem Algorithmus gehen wir davon aus, dass die verwendete Reduktionsordnung ≻<br />
bereits als Eingabe gegeben ist. (Wie erwähnt, sollte man bei der Implementierung dieses