An approach to formal verification of python software transactional memory

Although Python is one of the most widely used programming languages, and it is a foundation for a variety of parallel and distributed computing frameworks, it still lacks an applicable and reliable software transactional memory. In this paper, we present an approach to formal verification of a Python Software Transactional Memory (PSTM) solution using UPPAAL tool. The aims are (i) to apply a formal verification process to a real STM implementation in order to derive a faithful STM model based on a PSTM design and (ii) to use developed PSTM model for automated machine-checked formal verification of core system properties such as safety and liveness using a model checker tool. Firstly, an architecture of PSTM solution is introduced. Secondly, formalization and a PSTM system model are analyzed. Finally, core PSTM system's properties are verified, namely safety, liveness, and reachability. Utilizing a UPPAAL's model checker tool it is successfully verified that the PSTM system model satisfies each of the three formerly mentioned properties.

[1]  Rachid Guerraoui,et al.  Model checking transactional memories , 2010, Distributed Computing.

[2]  Albert Mo Kim Cheng,et al.  Schedulability Analysis of Transactions in Software Transactional Memory Using Timed Automata , 2011, 2011IEEE 10th International Conference on Trust, Security and Privacy in Computing and Communications.

[3]  Rachid Guerraoui,et al.  On the correctness of transactional memory , 2008, PPoPP.

[4]  Rachid Guerraoui,et al.  Completeness and Nondeterminism in Model Checking Transactional Memories , 2008, CONCUR.

[5]  Kim G. Larsen,et al.  A Tutorial on Uppaal , 2004, SFM.

[6]  Amir Pnueli,et al.  Verifying Correctness of Transactional Memories , 2007, Formal Methods in Computer Aided Design (FMCAD'07).

[7]  Amir Pnueli,et al.  Mechanical Verification of Transactional Memories with Non-transactional Memory Accesses , 2008, CAV.

[8]  Nir Shavit,et al.  Software transactional memory , 1995, PODC '95.

[9]  Branislav Kordic,et al.  PSTM: Python software transactional memory , 2014, 2014 22nd Telecommunications Forum Telfor (TELFOR).

[10]  Mark Moir,et al.  Towards formally specifying and verifying transactional memory , 2009, Formal Aspects of Computing.

[11]  Miroslav Popovic,et al.  DPM-PSTM: Dual-Port Memory Based Python Software Transactional Memory , 2015, 2015 4th Eastern European Regional Conference on the Engineering of Computer Based Systems.

[12]  Rupak Majumdar,et al.  Parameterized verification of transactional memories , 2010, PLDI '10.

[13]  Rajeev Alur,et al.  A Theory of Timed Automata , 1994, Theor. Comput. Sci..

[14]  Maurice Herlihy,et al.  Transactional Memory: Architectural Support For Lock-free Data Structures , 1993, Proceedings of the 20th Annual International Symposium on Computer Architecture.