General information
Latest issue
Impact factor

Search papers
Search references

Latest issue
Current issues
Archive issues
What is RSS

Model. Anal. Inform. Sist.:

Personal entry:
Save password
Forgotten password?

Model. Anal. Inform. Sist., 2018, Volume 25, Number 4, Pages 358–381 (Mi mais634)  

Program Verification

Verification of programs with mutual recursion in the Pifagor language

M. S. Ushakova, A. I. Legalov

Siberian Federal University, Institute of Space and Information Technology, 26 Kirenskogo str., Krasnoyarsk 660074, Russia

Abstract: In the article, we consider verification of programs with mutual recursion in the data driven functional parallel language Pifagor. In this language the program could be represented as a data flow graph, that has no control connections, and has only data relations. Under these conditions it is possible to simplify the process of formal verification, since there is no need to analyse resource conflicts, which are present in the systems with ordinary architectures. The proof of programs correctness is based on the elimination of mutual recursions by program transformation. The universal method of mutual recursion of an arbitrary number of functions elimination consists in constructing the universal recursive function that simulates all the functions in the mutual recursion. A natural number is assigned to each function in mutual recursion. The universal recursive function takes as its argument the number of a function to be simulated and the arguments of this function. In some cases of the indirect recursion it is possible to use a simpler method of program transformation, namely, the merging of the functions code into a single function. To remove mutual recursion of an arbitrary number of functions, it is suggested to construct a graph of all connected functions and transform this graph by removing functions that are not connected with the target function, then by merging functions with indirect recursion and finally by constructing the universal recursive function. It is proved that in the Pifagor language such transformations of functions as code merging and universal recursive function construction do not change the correctness of the initial program. An example of partial correctness proof is given for the program that parses a simple arithmetic expression. We construct the graph of all connected functions and demonstrate two methods of proofs: by means of code merging and by means of the universal recursive function.

Keywords: data driven functional parallel programming, Pifagor programming language, correctness of recursions, elimination of mutual recursion, universal recursive function.

Funding Agency Grant Number
Russian Foundation for Basic Research 17-07-00288_а
The research is supported by RFBR (research project No 17-07-00288).


Full text: PDF file (501 kB)
References: PDF file   HTML file

UDC: 004.052.42
Received: 23.03.2018

Citation: M. S. Ushakova, A. I. Legalov, “Verification of programs with mutual recursion in the Pifagor language”, Model. Anal. Inform. Sist., 25:4 (2018), 358–381

Citation in format AMSBIB
\by M.~S.~Ushakova, A.~I.~Legalov
\paper Verification of programs with mutual recursion in the Pifagor language
\jour Model. Anal. Inform. Sist.
\yr 2018
\vol 25
\issue 4
\pages 358--381

Linking options:

    SHARE: FaceBook Twitter Livejournal

    Citing articles on Google Scholar: Russian citations, English citations
    Related articles on Google Scholar: Russian articles, English articles
  • Моделирование и анализ информационных систем
    Number of views:
    This page:81
    Full text:41

    Contact us:
     Terms of Use  Registration  Logotypes © Steklov Mathematical Institute RAS, 2020