First order proofs for concurrent programs

Abstract — We study the uniform verification problem for infinite state processes. The problem consists on proving the parallel composition of an arbitrary number of processes running the same program satisfies a temporal property. As the general problem is too big for a bachelor thesis, we restrict our attention to concurrent implementations of sets using single linked list theory. We reduce the verification to the validity of formulas in this theory. By validity we mean that certain property expressed as a formula of the theory holds. In our case, we prove that a list remains a list and that it is always ordered (both with independence of the number of processes executing on the same list). We could lock the whole list every time a process accesses it, but that is a very inefficient procedure. In this work we prove a grain-lock implementation. Those proofs can be done using first order logic reasoning or model search. The approach chosen by Alejandro Sánchez and César Sánchez in his “Formal Verification of Temporal Properties for Parametrized Concurrent Programs and Concurrent Data Structures” (Sánchez, 2015) [1] was model searching. This work has been developed to complement “Formal Verification of Temporal Properties for Parametrized Concurrent Programs and Concurrent Data Structures” (Sánchez, 2015) [1] by providing a framework to prove the validity of formulas of the theories treated by them with first order logic. As there are lots of proofs to be done, we decided to use an automatic theorem prover. SPASS Version 3.5 [2] has been chosen because it has been used previously in the department. We will also cover a brief discussion (using the results observed) about the benefits and the costs of this technique of verification. Is this way of verification always worth it? We study the uniform verification problem for infinite state processes. The problem consists on proving the parallel composition of an arbitrary number of processes running the same program satisfies a temporal property. As the general problem is too big for a bachelor thesis, we restrict our attention to concurrent implementations of sets using single linked list theory. We reduce the verification to the validity of formulas in this theory. By validity we mean that certain property expressed as a formula of the theory holds. In our case, we prove that a list remains a list and that it is always ordered (both with independence of the number of processes executing on the same list). We could lock the whole list every time a process accesses it, but that is a very inefficient procedure. In this work we prove a grain-lock implementation. Those proofs can be done using first order logic reasoning or model search. The approach chosen by Alejandro Sánchez and César Sánchez in his “Formal Verification of Temporal Properties for Parametrized Concurrent Programs and Concurrent Data Structures” (Sánchez, 2015) [1] was model searching. This work has been developed to complement “Formal Verification of Temporal Properties for Parametrized Concurrent Programs and Concurrent Data Structures” (Sánchez, 2015) [1] by providing a framework to prove the validity of formulas of the theories treated by them with first order logic. As there are lots of proofs to be done, we decided to use an automatic theorem prover. SPASS Version 3.5 [2] has been chosen because it has been used previously in the department. We will also cover a brief discussion (using the results observed) about the benefits and the costs of this technique of verification. Is this way of verification always worth it?