kirancodes.me
To Proof Maintenance & Beyond!

Verifying Determinism in Sequential Programs

Rashmi Mudduluru

Abstract

A nondeterministic program is difficult to test and debug. Nondeterminism occurs even in sequential programs: for example, iterating over the elements of a hash table can result in diverging test results. We have created a type system that can express whether a computation is deterministic, nondeterministic, or ordernondeterministic (like a set). While state-of-the-art nondeterminism detection tools unsoundly rely on observing run-time output, our approach soundly verifies determinism at compile time. Our implementation found previously-unknown nondeterminism errors in a 24,000 line program that had been heavily vetted by its developers.

BibTeX
@inproceedings{Mudduluru:ASE19,
  author    = {Rashmi Mudduluru},
  title     = {Verifying Determinism in Sequential Programs},
  booktitle = {ASE},
  pages     = {1271--1273},
  publisher = {{IEEE}},
  year      = {2019},
}

Related papers