In the design of our language, we traded expressivity for simplicity, so we cannot always describe the intended behaviors precisely. To compensate, Ariadne provides a set of functions that return characteristics of a match. The user can explore a match with queries such as
Did all matching events occur in parallel?At this time, Ariadne provides only rudimentary feedback. Our current work is aimed at expanding its repertoire. Although simple, Ariadne has proved effective in finding a variety of parallel program bugs. We have found it flexible in allowing the user to examine program behavior from different viewpoints. The next section describes several Ariadne debugging sessions illustrating its modeling language and functionality.
Which processes were the destinations of a Write in this match?
Which processes matched the first Read of the pattern?
Why did the match fail on process 12?