|
Die Termersetzungssysteme (TES) sind ein formales Berechnungsmodell in der Theoretischen Informatik. Sie bilden insbesondere die Grundlage der Logik- und funktionalen Programmierung. Ferner spielen sie eine wichtige Rolle beim Wortproblem und bei der Terminierungsanalyse. Termersetzungssysteme sind Mengen von so genannten Termersetzungsregeln. Diese Mengen kann man sich wie Gleichungssysteme zwischen Termen vorstellen, bei dem die Gleichungen nur von links nach rechts angewendet werden dürfen.
plus(0 , y) Die oben stehenden Regeln bilden einen Termersetzungssystem, welches die Addition zweier natürlicher Zahlen berechnet. Die Regeln besagen, dass beispielsweise jedes Vorkommen von plus(0,y) in einem Term durch y ersetzt werden darf. Dabei kann y selbst ein beliebiger Term sein. Termersetzungssysteme sind turing-vollständig, stehen also was die Berechnungsstärke angeht anderen Formalismen wie den Turingmaschinen, dem Lambda-Kalkül oder Registermaschinen in nichts nach. Da sie vergleichsweise einfach strukturiert sind und von Computern gut gehandhabt werden können, stellen die Termersetzungssysteme ein wichtiges Hilfsmittel in der computergestützten Analyse von Algorithmen dar.
DefinitionenUm ein Termersetzungssystem aufzubauen, benötigt man zunächst eine klare Vorstellung von den zu Grunde liegenden Begriffen. TermeFür eine Menge Σ von Funktionssymbolen und eine (unendliche) Menge
Ohne formale Definition seien noch folgende Begriffe erwähnt:
TermersetzungsregelnEine Termersetzungsregel ist ein Paar Die TermersetzungsrelationDie "Funktionsweise" eines Termersetzungssystems wird über die so genannte Termersetzungsrelation Anschauliche BeschreibungPasst auf einen Term s oder einen Teilterm von s die linke Seite einer Regel, so kann man diese linke Seite in s durch die rechte Seite der entsprechenden Regel ersetzen und so einen neuen Term t erhalten. Dies soll an einigen Beispielen gezeigt werden. Dazu betrachten wir das einfache Termersetzungssystem f(x,y) -> x
Formale DefinitionEin Term s wertet zu t aus, geschrieben
FragestellungenJe nach Anwendungsbereich eines Termersetzungssystems gibt es mehrere Fragestellungen, welche von Interesse sind. Dies sind unter anderem: TerminierungHierbei stellt man sich die Frage, ob es zu einem Termersetzungssystem Zwar ist die Frage nach der Terminierung in jedem turingvollständigen Berechnungssystemen unentscheidbar. Es existieren jedoch eine Menge fortgeschrittener Techniken, um die Terminierung vieler Termersetzungssysteme automatisch nachzuweisen. Ein einfaches Mittel ist, die Länge der linken Seiten mit denen der rechten zu Vergleichen. Nimmt die Zahl der Funktionssymbole oder ihre Stelligkeit stets ab, terminiert das TES. Ein Beispiel hierfür wäre das System: f(g(x),y) -> g(y) g(x) -> a Ein allgemeinerer Ansatz ist, eine fundierte Ordnung KonfluenzAusgehend von einem Term kann es mehrere mögliche Ableitungen geben. Mit Konfluenz meint man die Eigenschaft eines Termersetzungssystems, dass zwei Terme, die in mehreren Schritten auf unterschiedliche Art aus einem Ausgangsterm hervorgehen, stets wieder zu einem Term zusammengeführt werden können. Eine damit zusammenhängende Frage ist, ob die durch ein Termersetzungssystem beschriebene Berechnung für dieselbe Eingabe stets zu demselben Ergebnis (eindeutige Normalform) kommt. Ein Termersetzungssystem, das terminiert und konfluent ist, bezeichnet man auch als konvergent. Für solche Systeme existiert zu jedem Term eine eindeutige Normalform. AnwendungenAls mathematisch relativ leicht handhabbares Konstrukt eignen sich Termersetzungssysteme für die computergestützte Behandlung von Problemen aus der theoretischen Informatik. Einige Anwendungen sind: Entscheidungsverfahren für das WortproblemEin Termgleichungssystem f(x,f(y,z)) = f(f(x,y),z) f(x,e) = x f(x,i(x)) = e Hierbei ist f die Gruppenverknüpfung, das neutrale bzw. inverse Element ist e bzw. i(x). Man sucht nun nach einem Verfahren, automatisch Gleichungen wie i(e) = e oder i(i(x)) = x auf ihren Wahrheitsgehalt hin zu überprüfen. Zu diesem Zweck konstruiert man zum Gleichungssystem Hat man nun ein solches konvergentes TES gegeben, lässt sich das Wortproblem s = t lösen, indem man einfach s und t mittels Da das Wortproblem unentscheidbar ist, lässt sich nicht immer ein konvergentes Termersetzungssystem finden, das das Wortproblem für das entsprechende Gleichungssystem entscheidbar macht. TerminierungsanalyseDa für Termersetzungssysteme so viele mächtige Techniken existieren, welche die Terminierung nachweisen können, transformiert man Programme höherer Programmiersprachen in Termersetzungssysteme und wendet diese Techniken darauf an. Das Tool AProvE, welches an der RWTH Aachen entwickelt wird, hat dies bisher für die Programmiersprachen Prolog und Haskell implementiert. Die Behandlung imperativer und objektorientierter Sprachen ist Gegenstand aktueller Forschung. Literatur
Weblinks
|
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net