Typentheorie als Grundlage verifizierter und effizienter Systeme zur Synthese von Programmen

Christoph Kreitz.

Arbeitstreffen "Typentheorie",
University of Ulm, Germany, April 1994.


Abstract

Aus theoretischer Sicht ist Typentheorie ein geeigneter Formalismus für die Konstruktion korrekter Programme aus logischen Spezifikationen. Beweiseditoren für die Typentheorie können genutzt werden, um interaktiv oder unterstützt durch Taktiken Programme zu erstellen. Für praktische Anwendungen sind diese Werkzeuge jedoch bisher nicht verwendbar. Bei komplexeren Beispielen können voll-automatische Synthesen nicht durchgeführt werden. Andererseits aber ist das Abstraktionsniveau der elementaren Inferenzen so niedrig, dass es für Nicht-Logiker kaum zu verstehen ist, was eine benutzergesteuerte Programmentwicklung praktisch unmöglich werden lässt.

Dieses Problem kann dadurch gelöst werden, dass auf der Basis von Typentheorie eine formale Theorie der Programmierung entwickelt wird, welche in der Begriffsbildung den aus Standardlehrbüchern bekannten Programmierkonzepten entspricht und ein logisches Schliessen auf diesem Niveau unterstützt. Da man sich auf diese Art von den Eigenarten einer speziellen Formulierung der Typentheorie lösen kann, werden Inferenzen und Synthesen einfacher, "natürlicher" und verständlicher. Durch die Abstützung auf Typentheorie bleiben sie aber dennoch vollständig formal und verifizierbar korrekt. Die Formalisierung der Theorie der Programmierung bildet daher das Fundament einer praktisch verwendbaren Inferenzmaschine für wissensbasierte Software-Entwicklung.

Neben der Formulierung von Faktenwissen über verschiedene Standardanwendungsbereiche (das sogenannte Objektwissen) bildet die Formalisierung deklarativen Wissens über Programmentwicklungsmethoden (Metawissen) einen zentralen Bestandteil dieser Theorie. Letztere ermöglicht es, eine verifizierte Implementierung von Syntheseverfahren auf der Basis von Theoremen durchzuführen, welche die zentralen Eigenschaften in einer Art formalisieren, die der heute üblichen Beschreibungsform auf dem Papier sehr nahe kommt. Fehler beim ębergang von der Beschreibung der Strategie zur Codierung sind somit ausgeschlossen. Zudem erlaubt die deklarative Charakterisierung auf hohem Abstraktionsniveau den Vergleich und die Integration von Verfahren, die aufgrund der der verschiedenartigen Formalismen, in denen sie entworfen wurden, bisher nur schwer verglichen werden konnten.

Auch wenn die Entwicklung einer vollständigen formalen Theorie der Programmierung ein Langzeitprojekt ist, bei dem vor allem auch Wert auf die Festlegung von Standards für Begriffsbildungen gelegt werden muss, ist ihr zentraler Kern bereits erstellt und durch die Untersuchung einiger Syntheseverfahren exemplarisch getestet worden. Im Vortrag wurde dies illustriert anhand eines Theorems über die konstruktive Äquivalenz der drei Hauptparadigmen der Programmsynthese (Beweise als Programme, Transformationen, Algorithmenschemata) und der Formalisierung einer Strategie zum Entwurf von Globalsuch-Algorithmen aus ihren Spezifikationen.


Not available online   Slides of the presentation will be made available
in compressed postscript and pdf format
  BACK
Back to overview of talks