Peterson’s algorithm Total correctness proof in IPCL

The total correctness of the Peterson’s Algorithm has been proved. States and transitions were fixed by the program. Runtime environment considered is interleaving concurrency with shared memory. Invariant of the program was constructed. All reasoning provided in terms of Method for software propert...

Повний опис

Збережено в:
Бібліографічні деталі
Дата:2018
Автор: Zhygallo, A.A.
Формат: Стаття
Мова:English
Опубліковано: Інститут програмних систем НАН України 2018
Теми:
Онлайн доступ:https://pp.isofts.kiev.ua/index.php/ojs1/article/view/186
Теги: Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
Назва журналу:Problems in programming
Завантажити файл: Pdf

Репозитарії

Problems in programming
id pp_isofts_kiev_ua-article-186
record_format ojs
resource_txt_mv ppisoftskievua/76/3b9f487df70422c6acf915ad0cddc776.pdf
spelling pp_isofts_kiev_ua-article-1862024-04-28T13:09:56Z Peterson’s algorithm Total correctness proof in IPCL Тотальная корректность алгоритма Петерсона в IPCL Тотальна коректність алгоритму Петерсона в IPCL Zhygallo, A.A. Peterson’s algorithm; mutual exclusion; software total correctness; formal verification; liveness property; concurrent program; interleaving; IPCL; composition-nominative languages UDC 004.415.52 алгоритм Петерсона; взаимное исключение; тотальная корректность программ; формальная верификация; liveness property; параллельная программа; interleaving; IPCL; композиционно-номинативные языки УДК 004.415.52 алгоритм Пітерсона; взаємне виключення; тотальна коректність програм; формальна верифікація; liveness property; паралельна програма; interleaving; IPCL; композиційно-номінативні мови УДК 004.415.52 The total correctness of the Peterson’s Algorithm has been proved. States and transitions were fixed by the program. Runtime environment considered is interleaving concurrency with shared memory. Invariant of the program was constructed. All reasoning provided in terms of Method for software properties proof in Interleaving Parallel Compositional Languages (IPCL). Conclusions about adequacy of the Method usage for such a kind of tasks (thanks to flexibility of composition-nominative platform) and its practicality as well as ease of use for real-world systems have been made based on this and other author’s works.Problems in programming 2016; 2-3: 113-118 Доказана тотальная корректность алгоритма Петерсона. За программой зафиксированы состояния и переходы транзиционной системы. Среда выполнения – параллельная с поочередным переключением с общей памятью. Сформулировано инвариант. Суждение происходит в рамках метода доказательства свойств программ в Interleaving Parallel Compositional Languages (IPCL). Руководствуясь этой и другими работами автора сделано вывод об адекватности использования метода для подобных задач исходя из гибкости композиционно-номинативной платформы и его практичности и легкости в использовании для реальных систем.Problems in programming 2016; 2-3: 113-118 Доведено тотальну коректність алгоритму Пітерсона. За програмою зафіксовано стани та переходи транзиційної системи. Середо-вище виконання – паралельне з почерговим переключенням зі спільною пам’яттю. Сформульовано інваріант. Судження проведено в рамках методу доведення властивостей програм в Interleaving Parallel Compositional Languages (IPCL). Спираючись на дану та ін-ші роботи автора зроблено висновки щодо адекватності застосування методу для подібних задач завдяки гнучкості композиційно-номінативної платформи та його практичності і легкості застосування для реальних систем.Problems in programming 2016; 2-3: 113-118 Інститут програмних систем НАН України 2018-07-06 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/186 10.15407/pp2016.02-03.113 PROBLEMS IN PROGRAMMING; No 2-3 (2016); 113-118 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2-3 (2016); 113-118 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2-3 (2016); 113-118 1727-4907 10.15407/pp2016.02-03 en https://pp.isofts.kiev.ua/index.php/ojs1/article/view/186/181 Copyright (c) 2017 ПРОБЛЕМИ ПРОГРАМУВАННЯ
institution Problems in programming
baseUrl_str https://pp.isofts.kiev.ua/index.php/ojs1/oai
datestamp_date 2024-04-28T13:09:56Z
collection OJS
language English
topic Peterson’s algorithm
mutual exclusion
software total correctness
formal verification
liveness property
concurrent program
interleaving
IPCL
composition-nominative languages
UDC 004.415.52
spellingShingle Peterson’s algorithm
mutual exclusion
software total correctness
formal verification
liveness property
concurrent program
interleaving
IPCL
composition-nominative languages
UDC 004.415.52
Zhygallo, A.A.
Peterson’s algorithm Total correctness proof in IPCL
topic_facet Peterson’s algorithm
mutual exclusion
software total correctness
formal verification
liveness property
concurrent program
interleaving
IPCL
composition-nominative languages
UDC 004.415.52
алгоритм Петерсона
взаимное исключение
тотальная корректность программ
формальная верификация
liveness property
параллельная программа
interleaving
IPCL
композиционно-номинативные языки
УДК 004.415.52
алгоритм Пітерсона
взаємне виключення
тотальна коректність програм
формальна верифікація
liveness property
паралельна програма
interleaving
IPCL
композиційно-номінативні мови
УДК 004.415.52
format Article
author Zhygallo, A.A.
author_facet Zhygallo, A.A.
author_sort Zhygallo, A.A.
title Peterson’s algorithm Total correctness proof in IPCL
title_short Peterson’s algorithm Total correctness proof in IPCL
title_full Peterson’s algorithm Total correctness proof in IPCL
title_fullStr Peterson’s algorithm Total correctness proof in IPCL
title_full_unstemmed Peterson’s algorithm Total correctness proof in IPCL
title_sort peterson’s algorithm total correctness proof in ipcl
title_alt Тотальная корректность алгоритма Петерсона в IPCL
Тотальна коректність алгоритму Петерсона в IPCL
description The total correctness of the Peterson’s Algorithm has been proved. States and transitions were fixed by the program. Runtime environment considered is interleaving concurrency with shared memory. Invariant of the program was constructed. All reasoning provided in terms of Method for software properties proof in Interleaving Parallel Compositional Languages (IPCL). Conclusions about adequacy of the Method usage for such a kind of tasks (thanks to flexibility of composition-nominative platform) and its practicality as well as ease of use for real-world systems have been made based on this and other author’s works.Problems in programming 2016; 2-3: 113-118
publisher Інститут програмних систем НАН України
publishDate 2018
url https://pp.isofts.kiev.ua/index.php/ojs1/article/view/186
work_keys_str_mv AT zhygalloaa petersonsalgorithmtotalcorrectnessproofinipcl
AT zhygalloaa totalʹnaâkorrektnostʹalgoritmapetersonavipcl
AT zhygalloaa totalʹnakorektnístʹalgoritmupetersonavipcl
first_indexed 2024-09-16T04:08:14Z
last_indexed 2024-09-16T04:08:14Z
_version_ 1818568387968630784
fulltext Паралельне програмування. Розподілені системи і мережі © A.A. Zhygallo, 2016 ISSN 1727-4907. Проблеми програмування. 2016. № 2–3. Спеціальний випуск 113 УДК 004.415.52, 681.3 PETERSON’S ALGORITHM TOTAL CORRECTNESS PROOF IN IPCL A.A. Zhygallo The total correctness of the Peterson’s Algorithm has been proved. States and transitions were fixed by the program. Runtime environment considered is interleaving concurrency with shared memory. Invariant of the program was constructed. All reasoning provided in terms of Method for software properties proof in Interleaving Parallel Compositional Languages (IPCL). Conclusions about adequacy of the Method usage for such a kind of tasks (thanks to flexibility of composition-nominative platform) and its practicality as well as ease of use for real- world systems have been made based on this and other author’s works. Key Words: Peterson’s algorithm, mutual exclusion, software total correctness, formal verification, liveness property, concurrent program, interleaving, IPCL, composition-nominative languages. Доведено тотальну коректність алгоритму Пітерсона. За програмою зафіксовано стани та переходи транзиційної системи. Середо- вище виконання – паралельне з почерговим переключенням зі спільною пам’яттю. Сформульовано інваріант. Судження проведено в рамках методу доведення властивостей програм в Interleaving Parallel Compositional Languages (IPCL). Спираючись на дану та ін- ші роботи автора зроблено висновки щодо адекватності застосування методу для подібних задач завдяки гнучкості композиційно- номінативної платформи та його практичності і легкості застосування для реальних систем. Ключові слова: алгоритм Пітерсона, взаємне виключення, тотальна коректність програм, формальна верифікація, liveness property, паралельна програма, interleaving, IPCL, композиційно-номінативні мови. Доказана тотальная корректность алгоритма Петерсона. За программой зафиксированы состояния и переходы транзиционной си- стемы. Среда выполнения – параллельная с поочередным переключением с общей памятью. Сформулировано инвариант. Сужде- ние происходит в рамках метода доказательства свойств программ в Interleaving Parallel Compositional Languages (IPCL). Руковод- ствуясь этой и другими работами автора сделано вывод об адекватности использования метода для подобных задач исходя из гиб- кости композиционно-номинативной платформы и его практичности и легкости в использовании для реальных систем. Ключевые слова: алгоритм Петерсона, взаимное исключение, тотальная корректность программ, формальная верификация, liveness property, параллельная программа, interleaving, IPCL, композиционно-номинативные языки. Introduction Almost every day while operating on up-to-date computers or working with modern software products we have to deal with systems which are based on shared memory concurrency [1]. Those are supercomputers with UMA and NUMA memory architecture, SMP-based computer hardware architectures, operating systems, database management systems (DBMS), centralized databases, server-side software in client-server environments, etc. At the same time, due to the power wall in silicon technology all state of the art computing devices have multiple processing units and the transition to chip multiprocessors is happening very fast. Therefore, these days parallel programming becomes a neces- sity while the problem of software verification is still acute and open to debate. Although there is a broad range of approaches to handle this issue most of them have remarkable disadvantages in terms of using them on practice as they are too complicated or too theorized. Moreover, some of them are not appli- cable for coping with real tasks in general. For instance, without specifying the details, original Owicki-Gries method [2] requires the quadratic number of verifications relating to the program operators amount. While the extended version of the rely-guarantee Owicki-Gries method [3] needs the implementation of additional variables as well as non-evident formulating of rely- and guarantee- conditions in order to tackle this task. In TLA [4] (Temporal Logic of Actions) Lamport offers to construct a model which is not much easier than the two previous ones. Moreover, TLA is character- ized with a big difference between the program and its proving formula. In such a way Interleaving Parallel Composi- tion Language (IPCL) [5] might be one of the most efficient solutions. While IPCL is up to solve the verification prob- lem of the parallel software it describes the so-called serializability mechanism. Though ultimately, we will work with sequential processes which steps will be interrupted by parallel running programs in an unpredictable way. Total Correctness Proof in IPCL. Problem Statement In this particular work the total correctness of Peterson’s algorithm will be proven with a help of Method for program properties proof in IPCL. Paterson’s algorithm is a concurrent programming [6] algorithm for mutual exclu- sion (i.e. no two concurrent processes are in their critical section at the same time [7]) that allows two processes to share a single-use resource without conflict, using only shared memory for communication. The partial correctness (the safety) was proved in the other author’s paper [8]. The aim of this work is to prove the total correctness (the liveness) of the mentioned algorithm. That is to show that the algorithm will stop for sure. We will do the reasoning based on IPCL [5] – the class of compositional [9–11] languages, which provide an ad- equate model for interleaving concurrency with shared memory [12]. We will also use the Method for software proper- ties proof in IPCL (including safety and correctness ones) [12]. IPCL Syntax The syntax of such languages is defined as follows: Паралельне програмування. Розподілені системи і мережі 114 P::= P1;P2 | if b then P1 else P2 | while b do P | x:=e| P1 || P2, where x:=e is an atomic, vector assigning and P1 || P2 implies interleaving parallelism. IPCL Semantics Let us define compositional semantics of IPCL. The semantics of the first three compositions is standard while semantics of interleaving parallelism is defined through its arguments semantics and syntactic context in traditional way with its algebraic and semantic properties. An Index-parameter of the semantics function is a syntactic context - piece of the program or the program itself. So: Semantics of “;”: sem A ; B (d) = d ’ sem A (d) ’ sem B (d ’ sem A (d)) where ’ – component-wise superposition of Cartesian product of nominative data: d1 ’ d2 = (Pr1(d1)  Pr1(d2), Pr2(d1)  Pr2(d2)) Pri(d) is a projection of the Cartesian product d by the i-th component, d1, d2  DD, This small modification is due to the fact that data is considered as two-component one – such that contains "global" and "local" parts and  – is a simple operation of the data superposition (two nominal or nominative sets) in accordance with [9–11] here. Semantics of “:=”: sem x := e (d) = d ’ f (d), where f  Oper – is a (semantic) fucntion, which complies with syntactic operator x := e. An assignment (the result of f) provides two-component result, as global and local data are evaluated, and superposition is occurring to the relevant components of d data: global variables – to the first component, local variables – to the second; x and e are the vectors of names and values (expressions) respectively, semantics of “if”: sem if b then P else Q (d) = sem P (d), iff b(d) = True, sem if b then P else Q (d) = sem Q (d), iff b(d) = False, semantics of “while”: sem while b do P (d) = sem P ; while b do P (d), iff b(d) = True, sem while b do P (d) = d, iff b(d) = False, semantics of “||”: || is associative and commutative: sem ( A || B ) || C (d) = sem A || ( B || C ) (d) sem A || B (d) = sem B || A (d) on the syntactic level it means respectively: ((A || B) || C) (d) = (A || ( B || C )) (d) (A || B) (d) = (B || A) (d) || relatively to “if”: sem if b then P else Q || R (d) = sem P || R (d), iff b(d) = True, sem if b then P else Q || R (d) = sem Q || R (d), iff b(d) = False, sem if b then P else Q ; P’ || R (d) = sem P ; P’ || R (d), iff b(d) = True, sem if b then P else Q ; P’ || R (d) = sem Q ; P’ || R (d), iff b(d) = False, || relatively to “while”: Паралельне програмування. Розподілені системи і мережі 115 sem while b do P || R (d) = sem P ; while b do P || R (d), iff b(d) = True, sem while b do P || R (d) = sem R (d), iff b (d) = False, sem while b do P ; P’ || R (d) = sem P ; while b do P ; P’ || R (d), iff b (d) = True, sem while b do P ; P’ || R (d) = sem P’ || R (d), iff b (d) = False, || relatively to “;”: sem ( A ; B ) || P (d) = sem A ; ( B || P ) (d), sem A || P (d) = sem A ; P (d), where A, B, C, P, P’, Q, R  Terms – programs in IPCL (terms in IPCL Algebra), b is a syntax notation of an appropri- ate condition of the predicate pred from Pred that is b (d) = sem b (d) = pred (d) and d  DD. In all the above definitions if the value of b (d) is undefined then the value of the left side of the relevant equality will also be undefined. Similarly, if any of the definitions of the right side of equality is undefined then the value of the left side is undefined. F is a set of functions for the data conversion, C is the compositions over functions from F. F=OperPred, where Oper=DD  DD and Pred=DD  {True, False}, where the first occurrence of D to the Cartesian product is “global data” while the second is “local data” for the current process; functions which return values from the set {True, False} (predicates) do not change the current state (i.e. does not have “side effect”) of data DD – they are used as conditions in branching and cycle operators; D=ND(V,W) in the usual sense (as simple nominative data [9–11]). The specific IPCL class language is formed by fixing F. The functions from F are atomic transactions which are indivisible in the sense of parallelism – their execution cannot be interrupted. Thus, the conditions in compositions are also atomic. Peterson’s algorithm notation in IPCL The main idea of the Peterson’s algorithm is to use three variables, flag1, flag2 and turn. flag1 or flag2 value of 1 indicates that the process n wants to enter the critical section. Entrance to the critical section is granted for process T1 if T2 does not want to enter its critical section or if T2 has given priority to T1 by setting turn to 1. Also entrance to the critical section is granted for process T2 if T1 does not want to enter its critical section or if T1 has given priority to T2 by setting turn to 2. According to the method for program’s properties correctness proof [1, 5, 12] the sources of T1 and T2 programs with labels will have the form: T1≡ [M11] flag1≔1; [M12] turn∶= 2; while [M13] (flag2 = 1 && turn = 2) do skip; [M14] r≔do_critical_operations(); //critical section [M15] flag1∶= 0;[M16] T2≡ [M21] flag2∶=1; [M22] turn∶= 1; while [M23] (flag1 = 1 && turn = 1) do skip; [M24 ] r≔do_critical_operations(); //critical section [M25] flag2∶= 0;[M26] In this work while-cycle condition (for instance in T1 program: 𝑓𝑙𝑎𝑔2 = 1 && 𝑡𝑢𝑟𝑛 = 1) is considered as an atomic operation while we may as well use the method dividing this process into three independent stages, like: 𝑣𝑎𝑟𝑓𝑙𝑎𝑔2 = 𝑓𝑙𝑎𝑔2; Паралельне програмування. Розподілені системи і мережі 116 𝑣𝑎𝑟𝑡𝑢𝑟𝑛 = 𝑡𝑢𝑟𝑛; 𝑤ℎ𝑖𝑙𝑒(𝑣𝑎𝑟𝑓𝑙𝑎𝑔2 = 1 && 𝑣𝑎𝑟𝑡𝑢𝑟𝑛 = 1) do begin 𝑣𝑎𝑟𝑓𝑙𝑎𝑔2 = 𝑓𝑙𝑎𝑔2; 𝑣𝑎𝑟𝑡𝑢𝑟𝑛 = 𝑡𝑢𝑟𝑛; end; This case could be researched as a separate question in further works. The whole program system will have the following structure: 𝒑𝒓𝒐𝒈𝒓𝒂𝒎 = 𝑻𝟏||𝑻𝟐. States and Transitions The state of this program will be as follows: 𝑆𝑡𝑎𝑡𝑒 = (𝑆1,𝑆2,[𝑓𝑙𝑎𝑔1 ↦ 𝑓1,𝑓𝑙𝑎𝑔2 ↦ 𝑓2,𝑡𝑢𝑟𝑛 ↦ 𝑡],𝑑1,𝑑2), where 𝑆1 ∈ {𝑴𝟏𝟏, 𝑴𝟏𝟐, 𝑴𝟏𝟑, 𝑴𝟏𝟒, 𝑴𝟏𝟓, 𝑴𝟏𝟔} – labels of T1; 𝑆2 ∈ {𝑴𝟐𝟏, 𝑴𝟐𝟐, 𝑴𝟐𝟑, 𝑴𝟐𝟒, 𝑴𝟐𝟓, 𝑴𝟐𝟔} – labels of T2; [𝑓𝑙𝑎𝑔1 ↦ 𝑓1, 𝑓𝑙𝑎𝑔2 ↦ 𝑓2, 𝑡𝑢𝑟𝑛 ↦ 𝑡] – global data; d1 and d2 are the local data of T1 and T2 respectively. States will denote the set of all possible states. The transition system will have the following scheme of transitions: 𝑇𝑟𝑎𝑛𝑠𝑖𝑡𝑖𝑜𝑛𝑠 = {𝑆1 → 𝑆2 | 𝑆1, 𝑆2∈ 𝑆𝑡𝑎𝑡𝑒𝑠 ∧ (𝑇𝑟11(𝑆1,𝑆2) ∨ 𝑇𝑟12(𝑆1,𝑆2) ∨ 𝑇𝑟13(𝑆1,𝑆2) ∨ 𝑇𝑟14(𝑆1,𝑆2) ∨ 𝑇𝑟15(𝑆1,𝑆2) ∨ 𝑇𝑟16(𝑆1,𝑆2) ∨ 𝑇𝑟21(𝑆1,𝑆2) ∨ 𝑇𝑟22(𝑆1,𝑆2) ∨ 𝑇𝑟23(𝑆1,𝑆2) ∨ 𝑇𝑟24(𝑆1,𝑆2) ∨ 𝑇𝑟25(𝑆1,𝑆2) ∨ 𝑇𝑟26(𝑆1,𝑆2)}, where each predicate 𝑇𝑟ij 𝑖 = 1:2, 𝑗 = 1:6 describes the possible program step between states. For program T1 we have 6 different steps: 1. Move M11 →M12 (assigning variable flag1 to 1): Tr11(S1,S2) = (Pr1(S1) = M11) ∧ (Pr1(S2) = M12) ∧ (Pr2(S1) = Pr2(S2)) ∧ (Pr3(S1) = d) ∧ (Pr3(S2) = d∇ [flag1↦1]) ∧ (Pr4(S1) = Pr4(S2)) ∧ (Pr5(S1) = Pr5(S2)) 2. Move M12 → M13 (assigning variable turn to 1): Tr12(S1,S2) = (Pr1(S1) = M12) ∧ (Pr1(S2) = M13) ∧ (Pr2(S1) = Pr2(S2)) ∧ (Pr3(S1) = d) ∧ (Pr3(S2) = d∇ [turn↦2]) ∧ (Pr4(S1) = Pr4(S2)) ∧ (Pr5(S1) = Pr5(S2)) 3. Move M13 → M13 (true value of while-cycle condition): Tr13(S1,S2) = (Pr1(S1) = M13) ∧ (Pr1(S2) = M13) ∧ (Pr2(S1) = Pr2(S2)) ∧ (Pr3(S1) = Pr3(S2) = [flag1↦ f1, flag2↦ f2, turn ↦ t]) ∧ (Pr4(S1) = Pr4(S2)) ∧ (Pr5(S1) = Pr5(S2)) ∧ (f2 = 1) ∧ (t = 2) 4. Move M13 → M14 (false value of while-cycle condition): Tr14(S1,S2) = (Pr1(S1) = M13) ∧ (Pr1(S2) = M14) ∧ (Pr2(S1) = Pr2(S2)) ∧ (Pr3(S1) = Pr3(S2) = [flag1↦ f1, flag2↦ f2, turn ↦ t]) ∧ (Pr4(S1) = Pr4(S2)) ∧ (Pr5(S1) = Pr5(S2)) ∧ (f2 ≠ 1 ∨ t ≠ 2) 5. Move M14 → M15 (execution of the critical section as ‘atomic’ operation): Tr15(S1,S2) = (Pr1(S1) = M14) ∧ (Pr1(S2) = M15) ∧ (Pr2(S1) = Pr2(S2)) ∧ (Pr3(S1) = Pr3(S2)) ∧ (Pr4(S1) = d1) ∧ (Pr4(S2) = func1(d1)) ∧ (Pr5(S1) = Pr5(S2)) 6. Move M15 → M16 (assigning variable flag1 to 0): Tr16(S1,S2) = (Pr1(S1) = M15) ∧ (Pr1(S2) = M16) ∧ (Pr2(S1) = Pr2(S2)) ∧ (Pr3(S1) = d) ∧ (Pr3(S2) = d∇ [flag1↦0]) ∧ (Pr4(S1) = Pr4(S2)) ∧ (Pr5(S1) = Pr5(S2)) Similar transitions could be fixed for program T2. Паралельне програмування. Розподілені системи і мережі 117 The set of the fixed Starting states will have the following structure: StartStates = {S ∈ States | Pr1(S) = M11 ∧ Pr2(S) = M21} The Final states are: FinalStates = {S ∈ States | Pr1(S) = M16 ∧ Pr2(S) = M26} Invariant In these terms the mutual exclusion condition for the algorithm, that no two concurrent processes are in their crit- ical section at the same time, can be formulated as:  (Pr1(S) ∈ {M14, M15} ∧ Pr2(S) ∈ {M24, M25}) The invariant of the program system is: Inv(S)= I1(S) ∧ I2(S) ∧ I3(S) ∧ I4(S), where I1(S) = Pr1(S) ∈ {M12, M13, M14, M15} → flag1 ⇒ (Pr3(S)) = 1, I2(S) = Pr1(S) ∈ {M14, M15} → (Pr2(S) ∉ {M24, M25} ∧ Pr2(S) = M23 → turn ⇒ (Pr3(S)) = 1), I3(S) = Pr2(S) ∈ {M22, M23, M24, M25} → flag2 ⇒ (Pr3(S)) = 1, I4(S) = Pr2(S) ∈ {M24, M25} → (Pr1(S) ∉ {M14, M15} ∧ Pr1(S) = M13 → turn ⇒ (Pr3(S)) = 2) The idea of invariant Inv(S) is clear and follows from the definition of critical section. If T1 is located previously to while-cycle {M12, M13} or is inside its critical section {M14, M15}, then flag1 = 1, namely it wants to enter critical section (getting access to the resource). If T1 “goes through” while-cycle {M14, M15}, that means it comes out of the cycle (entrance to critical section and getting access to the resource), then the other process (T2) is outside critical sec- tion (i.e. not in {M24, M25}), and also if T2 is located previously to critical section {M23} – then it does not have an access, because it is T1's turn to entrance now: turn = 1. The proof that invariant holds true over all transitions is rather technical and will not be presented here [8]. It is obvious, that Inv(S) implies that Pr1(S) ∈ {M14, M15} → Pr2(S) ∉ {M24, M25} ∧ Pr2(S) ∈ {M24, M25} → Pr1(S) ∉ {M14, M15} which is equal to:  (Pr1(S) ∈ {M14, M15} ∧ Pr2(S) ∈ {M24, M25}) namely, the mutual exclusion condition: for any state S it is not possible to appear in critical section (marks M14, M15 for T1 and marks M24, M25 for T2) for both processes (T1 and T2) at the same time. Total Correctness. Proof Let us prove that that the program system 𝒑𝒓𝒐𝒈𝒓𝒂𝒎 = 𝑻𝟏||𝑻𝟐 will stop in the shown model. According to the algorithm structure the only problem space is a cycle. We have to prove that as soon as the pro- cess T2 has finished its work (flag2∶= 0), the process T1 will leave the cycle (we will not observe the infinite cycle). Proof by contradiction: let us suppose that the process T1 after the label M13 will get into the label M13 which means the true value of the while-cycle condition. According to the transition Tr13(S1,S2) flag2 = 1. From the fact that none of transitions of T1 will influence the global variable flag2 and from the condition that the process T2 has finished and thus due to Tr16(S1,S2), we have that flag2 = 0. Got contradiction. The same proof is applicable to show that if the process T1 has ended then we will not have the infinite cycle in the process T2. Let us consider the situation where both processes T1 and T2 have infinite cycles at the same time. This situation is only possible when we observe the transitions in the following order: Tr13(S1,S2) -> Tr23(S1,S2) -> Tr13(S1,S2) -> Паралельне програмування. Розподілені системи і мережі 118 Tr23(S1,S2) and so on. Due to Tr13(S1,S2) global variable turn = 2 while due to Tr23(S1,S2) turn = 1 ≠ 2. That means that the situation where both processes have infinite cycles is impossible. We have proved that the infinite cycle is impossible and that both processes will end their work. Conclusion Together with the other results (besides this work) total correctness of well-known Peterson’s Algorithm was proved. Namely, we have: 1) noted the algorithm in IPCL terms, 2) provided semantics in terms of states and transitions, 3) formulated invariant of the program, 4) proved the liveness correctness (impossibility of the infinite cycles). According to the wide range of difficulties of total correctness proofs in parallel environments, we may state that the IPCL method is well adapted to parallel software verification. Moreover, this method let us make the proof shorter by choosing an adequate level of abstraction of the problem due to the universality of composition-nominative lan- guages. 1. Панченко Т.В. Композиційні методи специфікації та верифікації програмних систем. Дисертація на здобуття наукового ступеня канди- дата фізико-математичних наук.: 01.05.03 / Т.В. Панченко – Київ, 2006. – 177 с. 2. Owicki S. An Axiomatic Proof Technique for Parallel Programs / S. Owicki, D. Gries // Acta Informatica. – 1976. – Vol. 6, N 4. – P. 319–340. 3. Xu Q., W.-P. de Roever, J. He. The Rely-Guarantee Method for Verifying Shared Variable Concurrent Programs // Formal Aspects of Computing. – 1997. – Vol. 9, N 2. – P. 149–174. 4. Lamport L. Verification and Specification of Concurrent Programs // deBakker J., deRoever W., Rozenberg G. (eds.) A Decade of Concurrency, Vol. 803. – Berlin: Springer-Verlag, 1993. – P. 347–374. 5. Панченко Т.В. Методологія доведення властивостей програм в композиційних мовах IPCL // Доповіді Міжнарод-ної конференції “Тео- ретичні та прикладні аспекти побудови програмних систем” (TAAPSD’2004). – К., 2004. – С. 62–67. 6. Tanenbaum A.S. Modern operating systems, 3Ed. – Upper Saddle River, NJ: Pearson Prentice Hall, 2008. – 1104 p. 7. Peterson G.L. Myths About the Mutual Exclusion Problem // Information Processing Letters. – 1981. – 12 (3). – P. 115–116. 8. Жигалло А.А., Остаповська Ю.А., Панченко Т.В. Доведення у IPCL коректності алгоритму Пітерсона для взаємного виключення // Віс- ник Київського університету імені Тараса Шевченка. Серія: фізико-математичні науки. – 2015. – Вип. 4. 9. Редько В.Н. Композиции программ и композиционное программирование // Программирование. – 1978. – № 5. – С. 3–24. 10. Редько В.Н. Основания композиционного программирования // Программирование. – 1979. – № 3. – С. 3–13. 11. Nikitchenko N. A Composition Nominative Approach to Program Semantics. – Technical Report IT-TR: 1998-020. – Technical University of Denmark, 1998. – 103 p. 12. Панченко Т.В. Метод доведення властивостей програм в композиційно-номінативних мовах IPCL // Проблеми програмування. – 2008. – № 1. – С. 3–16. References 1. PANCHENKO, T. (2006) Compositional Methods for Software Systems Specification and Verification (PhD Thesis), Kyiv, 177 p. 2. OWICKI S., GRIES D. (1976) An Axiomatic Proof Technique for Parallel Programs. Acta Informatica, Vol. 6, № 4, pp. 319–340. 3. XU Q., de ROEVER W.-P., HE J. (1997) The Rely-Guarantee Method for Verifying Shared Variable Concurrent Programs. Formal Aspects of Computing, Vol. 9, № 2, pp. 149–174. 4. LAMPORT L. (1993) Verification and Specification of Concurrent Programs. A Decade of Concurrency, deBakker J., deRoever W., Rozenberg G. (eds.), Berlin: Springer-Verlag, Vol. 803, pp. 347–374. 5. PANCHENKO, T. (2004) The Methodology for Program Properties Proof in Compositional Languages IPCL. In Proceedings of the International Conference "Theoretical and Applied Aspects of Program Systems Development" (TAAPSD'2004), Kyiv, pp. 62–67. 6. TANENBAUM, A.S. (2008) Modern operating systems, 3Ed. Upper Saddle River, NJ: Pearson Prentice Hall, 1104 p. 7. PETERSON, G.L. (1981) Myths About the Mutual Exclusion Problem. Information Processing Letters, 12(3), pp. 115–116. 8. ZHYGALLO A., OSTAPOVSKA Yu., PANCHENKO T. (2015) Peterson’s Algorithm for Mutual Exclusion Correctness Proof in IPCL. Bulletin of Taras Shevchenko National University of Kyiv. Series: Physical & Mathematical Sciences, N 4. 9. REDKO, V. (1978) Compositions of Programs and Composition Programming. Programming, 5, pp. 3–24. 10. REDKO, V. (1979) Foundation of Composition Programming. Programming, 3, pp. 3–13. 11. NIKITCHENKO, N. (1998) A Composition Nominative Approach to Program Semantics. Technical Report IT-TR: 1998-020. Technical Univer- sity of Denmark. 103 p. 12. PANCHENKO, T. (2008) The Method for Program Properties Proof in Compositional Nominative Languages IPCL. Problems of Programming. 1. pp. 3–16. About the author: Zhygallo Andrey, undergraduate student, Department of Applied Statistics, Faculty of Cybernetics. 1 Ukrainian publication. http://orcid.org/0000-0002-2976-3250. Affiliation: Taras Shevchenko National University of Kyiv, 4D Academician Glushkov avenue, Kyiv, Ukraine, 03680. Tel.: +38(063)8795790/ Email: zhigallandrejj@gmail.com mailto:zhigallandrejj@gmail.com