Search papers, labs, and topics across Lattice.
This paper addresses the verification of message-passing programs with a variable number of processes by transforming them into parameterized sequential programs. The authors introduce a method that utilizes user-defined functions to specify message interactions and communication hierarchies, enabling the application of existing verification techniques. The implementation extends Frama-C/Wp, allowing for the verification of C/MPI programs, which enhances the reliability of concurrent software systems.
Transforming message-passing programs into parameterized sequential forms unlocks new verification capabilities for concurrent systems.
We consider the problem of verifying a message passing program in which the number of processes is a parameter NP and each process knows its unique ID. Processes communicate using send and receive commands which specify a single destination or source. To verify the program, the user provides functions specifying the number of messages sent from process i to process j, the level of each communication event in the happens-before hierarchy, and a fact that holds for the k-th message sent from i to j. These are used to transform the program to a parameterized sequential program which can be verified using any techniques appropriate for such programs. We realize this approach in an extension to Frama-C/Wp to verify C/MPI programs.