Algorithmic Verification of Single-Pass List Processing Programs
Rajeev Alur, Pavol Cerny

TL;DR
This paper introduces streaming data string transducers for verifying list-processing programs, enabling efficient equivalence and correctness checks for imperative and functional code manipulating data lists.
Contribution
It defines a new class of transducers for data string processing and provides algorithms for program verification and equivalence checking.
Findings
PSPACE complexity for equivalence and verification problems
Effective translation of list-manipulating programs into transducers
Algorithms for assertion checking of list-processing routines
Abstract
We introduce streaming data string transducers that map input data strings to output data strings in a single left-to-right pass in linear time. Data strings are (unbounded) sequences of data values, tagged with symbols from a finite set, over a potentially infinite data domain that supports only the operations of equality and ordering. The transducer uses a finite set of states, a finite set of variables ranging over the data domain, and a finite set of variables ranging over data strings. At every step, it can make decisions based on the next input symbol, updating its state, remembering the input data value in its data variables, and updating data-string variables by concatenating data-string variables and new symbols formed from data variables, while avoiding duplication. We establish that the problems of checking functional equivalence of two streaming transducers, and of checking…
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.
Taxonomy
TopicsLogic, programming, and type systems · Security and Verification in Computing · Formal Methods in Verification
