Source Code Verification for Embedded Systems using Prolog
Frank Flederer (University of Wuerzburg), Ludwig Ostermayer, (University of Wuerzburg), Dietmar Seipel (University of Wuerzburg), Sergio, Montenegro (University of Wuerzburg)

TL;DR
This paper presents a Prolog-based approach for verifying embedded system source code, transforming C++ ASTs into Prolog facts to analyze program flow and verify correctness, demonstrated through a satellite flash file system case study.
Contribution
It introduces a novel Prolog-based method for source code verification of embedded systems, utilizing AST transformation and a custom DSL for verification goals.
Findings
Successfully verified a satellite flash file system in Prolog.
Effectively identified incorrect semaphore usage in embedded software.
Demonstrated the advantages of Prolog's non-determinism for program analysis.
Abstract
System relevant embedded software needs to be reliable and, therefore, well tested, especially for aerospace systems. A common technique to verify programs is the analysis of their abstract syntax tree (AST). Tree structures can be elegantly analyzed with the logic programming language Prolog. Moreover, Prolog offers further advantages for a thorough analysis: On the one hand, it natively provides versatile options to efficiently process tree or graph data structures. On the other hand, Prolog's non-determinism and backtracking eases tests of different variations of the program flow without big effort. A rule-based approach with Prolog allows to characterize the verification goals in a concise and declarative way. In this paper, we describe our approach to verify the source code of a flash file system with the help of Prolog. The flash file system is written in C++ and has been…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
