Verifying Procedural Programs via Constrained Rewriting Induction

Carsten Fuhs, Cynthia Kop, Naoki Nishida

ACM Transactions on Computational Logic 18(2), pp. 14:1 – 14:50, 2017.


This article aims to develop a verification method for procedural programs via a transformation into logically constrained term rewriting systems (LCTRSs). To this end, we extend transformation methods based on integer term rewriting systems to handle arbitrary data types, global variables, function calls, and arrays, and to encode safety checks. Then we adapt existing rewriting induction methods to LCTRSs and propose a simple yet effective method to generalize equations. We show that we can automatically verify memory safety and prove correctness of realistic functions. Our approach proves equivalence between two implementations; thus, in contrast to other works, we do not require an explicit specification in a separate specification language.


  PDF |    doi:10.1145/3060143  


author = "Carsten Fuhs and Cynthia Kop and Naoki Nishida",
title = "Verifying Procedural Programs via Constrained Rewriting Induction",
journal = "{ACM} Transactions on Computational Logic",
volume = "18",
issue = "2",
pages = "14:1--14:50",
year = 2017,
doi = "10.1145/3060143"
Nach oben scrollen