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.
Vervollständigung<br />
✻<br />
nein<br />
Richte Gleichungen in E<br />
✲<br />
✏ ✏✏✏✏<br />
<br />
Terminiert ✏<br />
R<br />
✏ ✏✏✏✏ ja<br />
✏ ✏✏✏✏<br />
<br />
Ist R <br />
<br />
konfluent<br />
✏<br />
✏ ✏✏✏✏ ja<br />
❄<br />
Erfolg<br />
nein<br />
.<br />
❄<br />
Gib auf<br />
Abbildung 3.1: Vorgehen zur Konstruktion äquivalenter konvergenter TESe<br />
Diese drei Fragen werden wir in den nächsten drei Kapiteln untersuchen <strong>und</strong> automatische<br />
Verfahren kennen lernen, um diese Fragestellungen zu bearbeiten. Diese Punkte haben<br />
auch generelle Bedeutung bei der Analyse <strong>und</strong> Verifikation von Programmen, da dort die<br />
Frage des Terminierungsnachweises, der Eindeutigkeit von Programmen <strong>und</strong> der automatischen<br />
Vervollständigung unvollständiger Programme ebenfalls von großer Wichtigkeit sind.<br />
Die Frage der Terminierung (I.) ist unentscheidbar (dies entspricht der Unentscheidbarkeit<br />
des Halteproblems). Daher werden wir uns in Kapitel 4 mit hinreichenden Kriterien<br />
begnügen müssen, um die Terminierung von TESen zu erkennen. Hingegen ist es für<br />
terminierende TESe entscheidbar, ob sie konfluent sind. Die Frage II. kann daher immer<br />
automatisch beantwortet werden <strong>und</strong> wir werden in Kapitel 5 hierzu ein Verfahren kennen<br />
lernen. Wenn durch das Richten der Gleichungen ein zwar terminierendes, aber nicht<br />
konfluentes TES R 0 entsteht, so fügt man in einem Vervollständigungsverfahren (Kapitel<br />
6) neue Regeln hinzu, die die Korrektheit (<strong>und</strong> damit die Äquivalenz) des TES erhalten.<br />
Dies führt zu einem TES R 1 , das nun wieder auf Terminierung <strong>und</strong> Konfluenz überprüft<br />
wird. Falls R 1 wieder terminiert, aber nicht konfluent ist, so fügt man erneut weitere Regeln<br />
hinzu <strong>und</strong> erhält ein neues TES R 2 , etc.<br />
Man erhält so eine Folge R 0 ,R 1 ,R 2 ,... von TESen, die alle zu E äquivalent sind. Es<br />
gibt nun 3 Möglichkeiten für diesen Prozess:<br />
1. Man könnte nach einigen Iterationen ein TES R n erhalten, das sowohl terminiert als<br />
auchkonfluent ist. DannendetdasVerfahrenmitErfolg<strong>und</strong>manhateinkonvergentes<br />
<strong>und</strong> zu E äquivalentes TES gef<strong>und</strong>en.<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 />
unsere hinreichenden Kriterien nur die Terminierung nicht nachweisen können.) Nun<br />
bricht man mit Misserfolg ab. Immerhin erkennt man in diesem Fall den Misserfolg<br />
<strong>und</strong> könnte z.B. mit einem verbesserten Terminierungstest einen neuen Vervollständigungsversuch<br />
starten.