Testing forms a critical part of the development process for large-scale software, and there is growing need for automated tools that can read, represent, analyze, and transform th...
Named constants are used heavily in operating systems code, both as internal flags and in interactions with devices. Decision making within an operating system thus critically de...
To help programmers of high-performance computing (HPC) systems avoid communication-related errors, we employ a formal process algebra, Communicating Sequential Processes (CSP), w...
The traditional model transformation approach is to write transformation programs in a specialized language. Although such languages provide powerful capabilities to automate mode...
Despite the advancements of concurrency theory in the past decades, practical concurrent programming has remained a challenging activity. Fundamental problems such as data races an...