On the application of substitution algebra to program unification

Many problems in software engineering such as program refactoring, deobfuscation, vulnerability detection, require an efficient toolset for detecting pieces of code that have similar behavior. Current state of art in software clone detection makes it possible to find out only those pieces of code wh...

Full description

Bibliographic Details
Main Authors: V. A. Zakharov, T. A. Novikova
Format: Article
Language:English
Published: Ivannikov Institute for System Programming of the Russian Academy of Sciences 2018-10-01
Series:Труды Института системного программирования РАН
Subjects:
Online Access:https://ispranproceedings.elpub.ru/jour/article/view/1035
_version_ 1818807342370652160
author V. A. Zakharov
T. A. Novikova
author_facet V. A. Zakharov
T. A. Novikova
author_sort V. A. Zakharov
collection DOAJ
description Many problems in software engineering such as program refactoring, deobfuscation, vulnerability detection, require an efficient toolset for detecting pieces of code that have similar behavior. Current state of art in software clone detection makes it possible to find out only those pieces of code which have the same syntactic structure since. A more profound analysis of functional properties of programs encounters with undecidability of equivalence checking problem for Turing-complete models of computation. To overcome this principal deficiency of modern clone detection techniques we suggest to use equivalence relations on programs that are more strong than functional equivalence. One of such equivalences is a so called logic&term program equivalence introduced by V.E. Itkin in 1972 г. In this paper we build a new algorithm for checking logic&term equivalence of programs. This algorithm is based on the operations for computing the least upper bound and the greatest upper bound in the lattice of finite substitutions. Using this algorithm we also develop a procedure for solving the unification problem for sequential programs, i.e. the problem of computing the most general common instance (specialization) of a given pair of programs (pieces of code).
first_indexed 2024-12-18T19:24:08Z
format Article
id doaj.art-335d9e833ae9499ab0a0edd620496032
institution Directory Open Access Journal
issn 2079-8156
2220-6426
language English
last_indexed 2024-12-18T19:24:08Z
publishDate 2018-10-01
publisher Ivannikov Institute for System Programming of the Russian Academy of Sciences
record_format Article
series Труды Института системного программирования РАН
spelling doaj.art-335d9e833ae9499ab0a0edd6204960322022-12-21T20:55:54ZengIvannikov Institute for System Programming of the Russian Academy of SciencesТруды Института системного программирования РАН2079-81562220-64262018-10-012101035On the application of substitution algebra to program unificationV. A. Zakharov0T. A. Novikova1ИСП РАНф-т ВМК МГУ им. М.В. ЛомоносоваMany problems in software engineering such as program refactoring, deobfuscation, vulnerability detection, require an efficient toolset for detecting pieces of code that have similar behavior. Current state of art in software clone detection makes it possible to find out only those pieces of code which have the same syntactic structure since. A more profound analysis of functional properties of programs encounters with undecidability of equivalence checking problem for Turing-complete models of computation. To overcome this principal deficiency of modern clone detection techniques we suggest to use equivalence relations on programs that are more strong than functional equivalence. One of such equivalences is a so called logic&term program equivalence introduced by V.E. Itkin in 1972 г. In this paper we build a new algorithm for checking logic&term equivalence of programs. This algorithm is based on the operations for computing the least upper bound and the greatest upper bound in the lattice of finite substitutions. Using this algorithm we also develop a procedure for solving the unification problem for sequential programs, i.e. the problem of computing the most general common instance (specialization) of a given pair of programs (pieces of code).https://ispranproceedings.elpub.ru/jour/article/view/1035программаобнаружение клоновэквивалентностьподстановкаунификацияантиунификация
spellingShingle V. A. Zakharov
T. A. Novikova
On the application of substitution algebra to program unification
Труды Института системного программирования РАН
программа
обнаружение клонов
эквивалентность
подстановка
унификация
антиунификация
title On the application of substitution algebra to program unification
title_full On the application of substitution algebra to program unification
title_fullStr On the application of substitution algebra to program unification
title_full_unstemmed On the application of substitution algebra to program unification
title_short On the application of substitution algebra to program unification
title_sort on the application of substitution algebra to program unification
topic программа
обнаружение клонов
эквивалентность
подстановка
унификация
антиунификация
url https://ispranproceedings.elpub.ru/jour/article/view/1035
work_keys_str_mv AT vazakharov ontheapplicationofsubstitutionalgebratoprogramunification
AT tanovikova ontheapplicationofsubstitutionalgebratoprogramunification