,
Peter Lammich
Creative Commons Attribution 3.0 Unported license
Separation Logic with Time Credits is a well established method to formally verify the correctness and run-time of algorithms, which has been applied to various medium-sized use-cases. Refinement is a technique in program verification that makes software projects of larger scale manageable. Combining these two techniques for the first time, we present a methodology for verifying the functional correctness and the run-time analysis of algorithms in a modular way. We use it to verify Kruskal’s minimum spanning tree algorithm and the Edmonds - Karp algorithm for network flow. An adaptation of the Isabelle Refinement Framework [Lammich and Tuerk, 2012] enables us to specify the functional result and the run-time behaviour of abstract algorithms which can be refined to more concrete algorithms. From these, executable imperative code can be synthesized by an extension of the Sepref tool [Lammich, 2015], preserving correctness and the run-time bounds of the abstract algorithm.
@InProceedings{haslbeck_et_al:LIPIcs.ITP.2019.20,
author = {Haslbeck, Maximilian P. L. and Lammich, Peter},
title = {{Refinement with Time - Refining the Run-Time of Algorithms in Isabelle/HOL}},
booktitle = {10th International Conference on Interactive Theorem Proving (ITP 2019)},
pages = {20:1--20:18},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-122-1},
ISSN = {1868-8969},
year = {2019},
volume = {141},
editor = {Harrison, John and O'Leary, John and Tolmach, Andrew},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ITP.2019.20},
URN = {urn:nbn:de:0030-drops-110754},
doi = {10.4230/LIPIcs.ITP.2019.20},
annote = {Keywords: Isabelle, Time Complexity Analysis, Separation Logic, Program Verification, Refinement, Run Time, Algorithms}
}