English

Verifying Safety of Functional Programs with Rosette/Unbound

Software Engineering 2017-04-18 v1

Abstract

The goal of unbounded program verification is to discover an inductive invariant that safely over-approximates all possible program behaviors. Functional languages featuring higher order and recursive functions become more popular due to the domain-specific needs of big data analytics, web, and security. We present Rosette/Unbound, the first program verifier for Racket exploiting the automated constrained Horn solver on its backend. One of the key features of Rosette/Unbound is the ability to synchronize recursive computations over the same inputs allowing to verify programs that iterate over unbounded data streams multiple times. Rosette/Unbound is successfully evaluated on a set of non-trivial recursive and higher order functional programs.

Keywords

Cite

@article{arxiv.1704.04558,
  title  = {Verifying Safety of Functional Programs with Rosette/Unbound},
  author = {Dmitry Mordvinov and Grigory Fedyukovich},
  journal= {arXiv preprint arXiv:1704.04558},
  year   = {2017}
}
R2 v1 2026-06-22T19:17:55.163Z