TY - GEN
T1 - On inter-procedural analysis of programs with lists and data
AU - Bouajjani, Ahmed
AU - Drǎgoi, Cezara
AU - Enea, Constantin
AU - Sighireanu, Mihaela
PY - 2011/1/1
Y1 - 2011/1/1
N2 - We address the problem of automatic synthesis of assertions on sequential programs with singly-linked lists containing data over infinite domains such as integers or reals. Our approach is based on an accurate abstract inter-procedural analysis. Program configurations are represented by graphs where nodes represent list segments without sharing. The data in these list segments are characterized by constraints in abstract domains. We consider a domain where constraints are in a universally quantified fragment of the first-order logic over sequences, as well as a domain constraining the multisets of data in sequences. Our analysis computes the effect of each procedure in a local manner, by considering only the reachable part of the heap from its actual parameters. In order to avoid losses of information, we introduce a mechanism based on unfolding/folding operations allowing to strengthen the analysis in the domain of first-order formulas by the analysis in the multisets domain. The same mechanism is used for strengthening the sound (but incomplete) entailment operator of the domain of first-order formulas. We have implemented our techniques in a prototype tool and we have shown that our approach is powerful enough for automatic (1) generation of non-trivial procedure summaries, (2) pre/post-condition reasoning, and (3) procedure equivalence checking.
AB - We address the problem of automatic synthesis of assertions on sequential programs with singly-linked lists containing data over infinite domains such as integers or reals. Our approach is based on an accurate abstract inter-procedural analysis. Program configurations are represented by graphs where nodes represent list segments without sharing. The data in these list segments are characterized by constraints in abstract domains. We consider a domain where constraints are in a universally quantified fragment of the first-order logic over sequences, as well as a domain constraining the multisets of data in sequences. Our analysis computes the effect of each procedure in a local manner, by considering only the reachable part of the heap from its actual parameters. In order to avoid losses of information, we introduce a mechanism based on unfolding/folding operations allowing to strengthen the analysis in the domain of first-order formulas by the analysis in the multisets domain. The same mechanism is used for strengthening the sound (but incomplete) entailment operator of the domain of first-order formulas. We have implemented our techniques in a prototype tool and we have shown that our approach is powerful enough for automatic (1) generation of non-trivial procedure summaries, (2) pre/post-condition reasoning, and (3) procedure equivalence checking.
KW - assertion synthesis
KW - dynamic data structures
KW - interprocedural analysis
UR - https://www.scopus.com/pages/publications/79959878355
U2 - 10.1145/1993498.1993566
DO - 10.1145/1993498.1993566
M3 - Conference contribution
AN - SCOPUS:79959878355
SN - 9781450306638
T3 - Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
SP - 578
EP - 589
BT - PLDI'11 - Proceedings of the 2011 ACM Conference on Programming Language Design and Implementation
PB - Association for Computing Machinery
T2 - 32nd ACM Conference on Programming Language Design and Implementation, PLDI 2011
Y2 - 4 June 2011 through 8 June 2011
ER -