Certified normalization of generalized traces

  • Hendrik MaarandEmail author
  • Tarmo Uustalu
S.I.: NFM2018


Mazurkiewicz traces are a generalization of strings where an independence relation on the alphabet for commutability of letters induces an equivalence relation on strings. The equivalence relation can be made more expressive by allowing the commutability of two adjacent letters in a string to depend on their left context. We generalize two classical normal forms and the corresponding normalization algorithms for Mazurkiewicz traces for Sassone et al.’s context-dependent generalization of traces, formalize this development in the dependently typed programming language Agda, and show generalized traces in action on an example from relaxed shared-memory concurrency (local reads in TSO).


Concurrency Mazurkiewicz traces Normal forms Relaxed memory 



This work was supported by the ERDF funded Estonian national centre of excellence Project EXCITE (2014-2020.4.01.15-0018) and the Estonian Ministry of Education and Research institutional research Grant IUT33-13.


  1. 1.
    Aalbersberg IJJ, Rozenberg G (1988) Theory of traces. Theor Comput Sci 60(1):1–82MathSciNetCrossRefzbMATHGoogle Scholar
  2. 2.
    Abdulla PA, Aronis S, Atig MF, Jonsson B, Leonardsson C, Sagonas K (2015) Stateless model checking for TSO and PSO. In: Baier C, Tinelli C (eds) TACAS 2015. LNCS, vol 9035. Springer, Berlin, pp 353–367Google Scholar
  3. 3.
    Anisimov AV, Knuth DE (1979) Inhomogeneous sorting. Int J Comput Inf Sci 8(4):255–260MathSciNetCrossRefzbMATHGoogle Scholar
  4. 4.
    Aspinall D, Sevčik J (2007) Formalising Java’s data race free guarantee. In: Schneider K, Brandt J (eds) TPHOLs 2007. LNCS, vol 4732. Springer, Berlin, pp 22–37Google Scholar
  5. 5.
    Bouajjani A, Enea C, Mutluergil SO, Tasiran S (2018) Reasoning about TSO programs using reduction and abstraction. In: Chockler H, Weissenbacher G (eds) CAV 2018, part 2. LNCS, vol 10982. Springer, Berlin, pp 336–353Google Scholar
  6. 6.
    Cartier P, Foata D (1969) Problemes combinatoires de commutation et réarrangements. LNM, vol 85. Springer, BerlinCrossRefzbMATHGoogle Scholar
  7. 7.
    Chou C-T, Peled D (1996) Formal verification of a partial-order reduction technique for model checking. In: Margaria T, Steffen B (eds) TACAS’96. LNCS, vol 1055. Springer, Berlin, pp 241–257Google Scholar
  8. 8.
    Diekert V, Métivier Y (1997) Partial commutation and traces. In: Rozenberg G, Salomaa A (eds) Handbook of formal languages. Beyond words, vol 3. Springer, Berlin, pp 457–553CrossRefGoogle Scholar
  9. 9.
    Droste M (1990) Concurrency, automata and domains. In: Paterson MS (ed) ICALP’90. LNCS, vol 443. Springer, Berlin, pp 185–208Google Scholar
  10. 10.
    Godefroid P (1990) Using partial orders to improve automatic verification methods. In: Clarke EM, Kurshan RP (eds) CAV ’90. LNCS, vol 531. Springer, Berlin, pp 176–185Google Scholar
  11. 11.
    Hoogers PW, Kleijn HCM, Thiagarajan PS (1995) A trace semantics for Petri nets. Inf Comput 117(1):98–114MathSciNetCrossRefzbMATHGoogle Scholar
  12. 12.
    Katz S, Peled D (1995) Defining conditional independence using collapses. Theor Comput Sci 101(2):337–359MathSciNetCrossRefzbMATHGoogle Scholar
  13. 13.
    Lipton RJ (1975) Reduction: a method of proving properties of parallel programs. Commun ACM 18(12):717–721MathSciNetCrossRefzbMATHGoogle Scholar
  14. 14.
    Maarand H, Uustalu T (2017) Generating representative executions. In: Vasconcelos VT, Haller P (eds) Proceedings of 10th workshop on programming language approaches to concurrency and communication-centric software, PLACES 2017. Electronic Proceedings in Theoretical Computer Science, vol 246. Open Publishing Association, Sydney, pp 39–48Google Scholar
  15. 15.
    Maarand H, Uustalu T (2018) Certified Foata normalization for generalized traces. In: Dutle A, Muñoz C, Narkawicz A (eds) NFM 2018. LNCS, vol 10811. Springer, Berlin, pp 299–314Google Scholar
  16. 16.
    Mazurkiewicz A (1977) Concurrent program schemes and their interpretations. DAIMI report PB-78, Aarhus UniversityGoogle Scholar
  17. 17.
    Norell U (2009) Dependently typed programming in Agda. In: Koopman P, Plasmeijer R, Swierstra D (eds) AFP 2008. LNCS, vol 5832. Springer, Berlin, pp 230–266Google Scholar
  18. 18.
    Owens S, Sarkar S, Sewell P (2009) A better x86 memory model: x86-TSO. In: Berghofer S, Nipkow T, Urban C, Wenzel M (eds) TPHOLs 2009. LNCS, vol 5674. Springer, Berlin, pp 391–407Google Scholar
  19. 19.
    Peled D (1993) All from one, one for all: on model checking using representatives. In: Courcourbetis C (ed) CAV’93. LNCS, vol 697. Springer, Berlin, pp 409–423Google Scholar
  20. 20.
    Sassone V, Nielsen M, Winskel G (1993) Deterministic behavioural models for concurrency. In: Borzyszkowski AM, Sokolowski S (eds) MFCS’93. LNCS, vol 711. Springer, Berlin, pp 682–692Google Scholar
  21. 21.
    SPARC International Inc., Weaver DL (1994) The SPARC architecture manual. Prentice Hall, Upper Saddle River, NJGoogle Scholar
  22. 22.
    Yang Y, Gopalakrishnan G, Lindstrom G, Slind K (2004) Nemos: a framework for axiomatic and executable specifications of memory consistency models. In: Proceedings of 18th international parallel and distributed processing symposium, IPDPS 2004. IEEE, Los Alamitos, CA, pp 433–441Google Scholar
  23. 23.
    Zhang N, Kusano M, Wang C (2015) Dynamic partial order reduction for relaxed memory models. In: Proceedings of 36th ACM SIGPLAN conference on principles of language design and implementation, PLDI 2015. ACM, New York, pp 250–259Google Scholar

Copyright information

© Springer-Verlag London Ltd., part of Springer Nature 2019

Authors and Affiliations

  1. 1.School of Computer ScienceReykjavik UniversityReykjavíkIceland
  2. 2.Department of Software ScienceTallinn University of TechnologyTallinnEstonia

Personalised recommendations