,
Alex Potanin
Creative Commons Attribution 4.0 International license
Synchronous languages such as Lustre and Scade are used to implement safety-critical control systems; proving such programs correct and having the proved properties apply to the compiled code is therefore equally critical. We introduce Pipit, a small synchronous language embedded in F*, designed for verifying control systems and executing them in real-time. Pipit includes a verified translation to transition systems; by reusing F*’s existing proof automation, certain safety properties can be automatically proved by k-induction on the transition system. Pipit can also generate executable code in a subset of F* which is suitable for compilation and real-time execution on embedded devices. The executable code is deterministic and total and preserves the semantics of the original program.
@InProceedings{robinson_et_al:LIPIcs.ECOOP.2024.34,
author = {Robinson, Amos and Potanin, Alex},
title = {{Pipit on the Post: Proving Pre- and Post-Conditions of Reactive Systems}},
booktitle = {38th European Conference on Object-Oriented Programming (ECOOP 2024)},
pages = {34:1--34:28},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-341-6},
ISSN = {1868-8969},
year = {2024},
volume = {313},
editor = {Aldrich, Jonathan and Salvaneschi, Guido},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2024.34},
URN = {urn:nbn:de:0030-drops-208836},
doi = {10.4230/LIPIcs.ECOOP.2024.34},
annote = {Keywords: Lustre, streaming, reactive, verification}
}
archived version