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

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.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!