Formal Verification of Python Software Transactional Memory Serializability Based on the Push/Pull Semantic Model

The Push/Pull semantic model of transactions has appeared recently as a solution that unifies a wide range of transactional memory algorithms. It has been proved that the push/pull semantic model satisfies serializability, thus one may prove that a given STM satisfies serializability by constructing its push/pull model such that this model satisfies respective correctness criteria. In this paper, we prove that a Python STM implementation is serializable by constructing its Push/Pull model and by showing that the model satisfies the correctness criteria for the relevant push/pull semantic rules. We first identify that modeling Python STM requires only four, out of seven, push/pull operations, namely the operations pull, apply, push, and commit. Next, we introduce the detailed specification of the PSTM transactional algorithm. Then we map the steps of the PSTM transactional algorithm to the respective push/pull semantic rules. Finally, we prove that the PSTM algorithm satisfies the correctness criteria of the respective push/pull semantic rules. We have envisaged this paper to provide interested researchers with a better understanding of PSTM semantics, in order to construct push/pull models of their own STMs more easily.

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

[2]  Miroslav Popovic,et al.  Formalization and Verification of the PSTM Architecture , 2017, 2017 24th Asia-Pacific Software Engineering Conference (APSEC).

[3]  D. M. Hutton,et al.  The Art of Multiprocessor Programming , 2008 .

[4]  M Goldstein,et al.  Evaluating the peptide structure prediction capabilities of a purely ab-initio method , 2017, Protein engineering, design & selection : PEDS.

[5]  Ilija Basicevic,et al.  Transaction scheduling for Software Transactional Memory , 2017, 2017 IEEE 2nd International Conference on Cloud Computing and Big Data Analysis (ICCCBDA).

[6]  Ilija Basicevic,et al.  A Solution of Concurrent Queue on PSTM , 2018, 2018 26th Telecommunications Forum (TELFOR).

[7]  Miroslav Popovic,et al.  An approach to formal verification of python software transactional memory , 2017, ECBS.

[8]  Dimitar Dimitrov,et al.  Commutativity race detection , 2014, PLDI.

[9]  Miroslav Popovic,et al.  Online algorithms for scheduling transactions on python software transactional memory , 2019 .

[10]  Maurice Herlihy,et al.  The Art of Multiprocessor Programming, Revised Reprint , 2012 .

[11]  Matthew J. Parkinson,et al.  The Push/Pull model of transactions , 2015, PLDI.

[12]  Erick Fredj,et al.  A new hybrid algorithm for finding the lowest minima of potential surfaces: Approach and application to peptides , 2011, J. Comput. Chem..

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

[14]  Håkan Grahn,et al.  Transactional memory , 2010, J. Parallel Distributed Comput..

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