Core Concepts
Symbolische endliche Automaten können verwendet werden, um präzise und kompakt die zeitlichen und datenbezogenen Interaktionshistorien zwischen funktionalen Clients und zustandsbehafteten Bibliotheken zu erfassen. Diese Automaten werden in ein Verfeinerungstypsystem integriert, um modulares und kompositionelles Schließen über die Darstellungsinvarianten von Datentypen zu ermöglichen, deren Implementierung von verborgenen Zuständen in zustandsbehafteten Bibliotheken abhängt.
Abstract
Der Artikel präsentiert einen Ansatz zur Spezifikation und Verifikation von Darstellungsinvarianten für funktionale Programme, die mit zustandsbehafteten Bibliotheken interagieren.
Zunächst wird erläutert, dass funktionale Programme oft mit zustandsbehafteten Bibliotheken interagieren, die den internen Zustand hinter getypten Abstraktionen verbergen. Um die Semantik der höheren Abstraktionen zu gewährleisten, müssen die Implementierungen oft Darstellungsinvarianten ausdrücken, die sich auf den verborgenen Zustand der Bibliothek beziehen.
Um diese Herausforderung anzugehen, wird ein Typsystem vorgestellt, das symbolische endliche Automaten (SFA) als Verfeinerungstypen verwendet. SFAs können präzise die zeitlichen und datenbezogenen Interaktionshistorien zwischen Clients und Bibliotheken erfassen. Diese SFAs werden in ein Verfeinerungstypsystem integriert, um modulares und kompositionelles Schließen über Darstellungsinvarianten zu ermöglichen.
Das Typsystem definiert sogenannte "Hoare Automaten Typen" (HATs), die SFAs als Vor- und Nachbedingungen von Typen verwenden. HATs ermöglichen es, die Darstellungsinvarianten eines Datentyps sowohl zu spezifizieren als auch automatisch zu überprüfen, selbst wenn seine Implementierung von verborgenen Zuständen in zustandsbehafteten Bibliotheken abhängt.
Außerdem wird ein bidirektionaler Typprüfungsalgorithmus entwickelt, der eine effiziente Untertyp-Inklusionsprüfung über HATs implementiert, um ihre Übersetzung in eine für SMT-basierte automatische Verifikation geeignete Form zu ermöglichen.
Abschließend werden umfangreiche experimentelle Ergebnisse präsentiert, die die Machbarkeit des Ansatzes für die Typprüfung komplexer und anspruchsvoller HAT-spezifizierter OCaml-Datenstruktur-Implementierungen, die auf zustandsbehafteten Bibliotheks-APIs aufbauen, demonstrieren.
Stats
Eine Darstellungsinvariante kann präzise als symbolischer endlicher Automat ausgedrückt werden, der die zulässigen Sequenzen von Bibliotheksaufrufen und -rückgaben beschreibt.
Der Hoare Automaten Typ (HAT) [A] {ν:b | φ} [B] qualifiziert einen Verfeinerungstyp {ν:b | φ} mit zwei symbolischen endlichen Automaten: einer Vorbedingung A und einer Nachbedingung B.
Der bidirektionale Typprüfungsalgorithmus implementiert eine effiziente Untertyp-Inklusionsprüfung über HATs, um ihre Übersetzung in eine für SMT-basierte automatische Verifikation geeignete Form zu ermöglichen.
Quotes
"Symbolische endliche Automaten können verwendet werden, um präzise und kompakt die zeitlichen und datenbezogenen Interaktionshistorien zwischen funktionalen Clients und zustandsbehafteten Bibliotheken zu erfassen."
"Hoare Automaten Typen (HATs) ermöglichen es, die Darstellungsinvarianten eines Datentyps sowohl zu spezifizieren als auch automatisch zu überprüfen, selbst wenn seine Implementierung von verborgenen Zuständen in zustandsbehafteten Bibliotheken abhängt."