Verifying Determinism in Sequential Programs

When a program is nondeterministic, it is difficult to test and debug. Nondeterminism occurs even in sequential programs iterating over the elements of a hash table. We have created a type system that expresses determinism specifications in a program. The key ideas in the type system are type qualif...

Full description

Saved in:
Bibliographic Details
Published in2021 IEEE/ACM 43rd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion) pp. 213 - 214
Main Authors Mudduluru, Rashmi, Waataja, Jason, Millstein, Suzanne, Ernst, Michael
Format Conference Proceeding
LanguageEnglish
Published IEEE 01.05.2021
Subjects
Online AccessGet full text
ISBN1665412194
9781665412193
DOI10.1109/ICSE-Companion52605.2021.00095

Cover

More Information
Summary:When a program is nondeterministic, it is difficult to test and debug. Nondeterminism occurs even in sequential programs iterating over the elements of a hash table. We have created a type system that expresses determinism specifications in a program. The key ideas in the type system are type qualifiers for nondeterminism, order-nondeterminism, and determinism; type well-formedness rules to restrict collection types; and enhancements to polymorphism that improve precision when analyzing collection operations. We implemented our type system for Java. Our type checker, the Determinism Checker, warns if a program is nondeterministic or verifies that the program is deterministic. In this paper, we explain how to obtain our tool and reproduce the results described inhttps://homes.cs.washington.edu/ mernst/pubs/determinismicse2021.pdf. Additionally, our tool and subject programs are available at https://zenodo.org/record/4536285#.YEaCxZNKiWw.
ISBN:1665412194
9781665412193
DOI:10.1109/ICSE-Companion52605.2021.00095