Certified Foata Normalization for Generalized Traces
Mazurkiewicz traces are a well-known model of concurrency with a notion of equivalence for interleaving executions. Interleaving executions of a concurrent system are represented as strings over an alphabet equipped with an independence relation, and two strings are taken to be equivalent if they can be transformed into each other by repeatedly commuting independent consecutive letters. Analyzing all behaviors of the system can be reduced to analyzing one canonical representative from each equivalence class; normal forms such as the Foata normal form can be used for this purpose. In some applications, it is useful to have commutability of two adjacent letters in a string depend on their left context. We develop Foata normal forms and normalization for Sassone et al.’s context-dependent generalization of traces, formalize this development in the dependently typed programming language Agda and show generalized Foata normalization in action on an example from relaxed shared-memory concurrency (local reads in TSO).
This work was supported by the ERDF funded Estonian national CoE project EXCITE and the Estonian Ministry of Education and Research institutional research grant IUT-3313.
- 10.Maarand, H., Uustalu, T.: Generating representative executions. In: Vasconcelos, V.T., Haller, P. (eds.) Proceedings of 10th Workshop on Programming Language Approaches to Concurrency and Communication-Centric Software, PLACES 2017. Electronic Processing Theoretical Computer Science, vol. 246, pp. 39–48. Open Publishing Association, Sydney (2017)Google Scholar
- 11.Mazurkiewicz, A.: Concurrent program schemes and their interpretations. DAIMI Report PB-78, Aarhus University (1977)Google Scholar
- 16.SPARC International Inc.: The SPARC Architecture Manual, Version 9. Prentice Hall, Englewood Cliffs (1994). (Ed. by D.L. Weaver and T. Germond)Google Scholar
- 17.Zhang, N., Kusano, M., Wang, C.: Dynamic partial order reduction for relaxed memory models. In: Proceedings of 36th ACM SIGPLAN Conference on Principles of Language Design and Implementation, PLDI 2015, pp. 250–259. ACM, New York (2015)Google Scholar