Loading…
Thumbnail Image

Technical Report accompanying: Preserving Liveness Guarantees from Synchronous Communication to Asynchronous Unstructured Low-Level Languages

Berg, Nils; Göthel, Thomas; Danziger, Armin; Glesner, Sabine

In the implementation of abstract synchronous communication in asynchronous unstructured low-level languages, e. g., using shared variables, the preservation of safety and especially liveness properties is a hitherto open problem due to inherently different abstraction levels. Our approach to overcome this problem is threefold: First, we present our notion of handshake refinement with which we formally prove the correctness of the implementation relation of a handshake protocol. Second, we verify the soundness of our handshake refinement, i. e., all safety and liveness properties are preserved to the lower level. Third, we apply our handshake refinement to show the correctness of all implementations that realize the abstract synchronous communication with the handshake protocol. To this end, we employ an exemplary language with asynchronous shared variable communication. Our approach is scalable and closes the verification gap between different abstraction levels of communication.
Bei der Implementierung von abstrakter, synchroner Kommunikation in asynchronen, unstrukturierten Low-Level-Sprachen, zum Beipspiel mit Hilfe von geteilten Variablen, ist die Erhaltung von Sicherheits- und Lebendigkeitseigenschaften ein bis dato ein ungelöstes Problem aufgrund der verschiedenen Abstraktionsstufen. Unser Ansatz um dieses Problem zu lösen ist dreiteilig: Zu erst stellen wir unseren Begriff der Handschlag-Verfeinerung vor, mit dem wir die Korrektheit von Implementierungen, die das Handschlag-Protokoll benutzen, zeigen können. Zweitens weisen wir nach, dass die Handschlag-Verfeinerung die Sicherheits- und Lebendigkeitseigenschaften erhält. Drittens, zeigen wir das alle Programme, die synchrone Kommunikation mit dem Handschlag-Protokoll implementieren, korrekt sind. Wir verwenden dazu eine beispielhafte Sprache mit asynchroner Kommunikation mit Hilfe von geteilten Variablen. Unser Ansatz ist skalierbar und schließt die Verifikationslücke zwischen den verschiedenen Abstraktionsstufen der Kommunikation.