English

Synthesizing Abstract Transformers

Programming Languages 2022-08-16 v2

Abstract

This paper addresses the problem of creating abstract transformers automatically. The method we present automates the construction of static analyzers in a fashion similar to the way yacc\textit{yacc} automates the construction of parsers. Our method treats the problem as a program-synthesis problem. The user provides specifications of (i) the concrete semantics of a given operation op\textit{op}, (ii) the abstract domain A to be used by the analyzer, and (iii) the semantics of a domain-specific language LL in which the abstract transformer is to be expressed. As output, our method creates an abstract transformer for op\textit{op} in abstract domain A, expressed in LL (an "LL-transformer for op\textit{op} over A"). Moreover, the abstract transformer obtained is a most-precise LL-transformer for op\textit{op} over A; that is, there is no other LL-transformer for op\textit{op} over A that is strictly more precise. We implemented our method in a tool called AMURTH. We used AMURTH to create sets of replacement abstract transformers for those used in two existing analyzers, and obtained essentially identical performance. However, when we compared the existing transformers with the transformers obtained using AMURTH, we discovered that four of the existing transformers were unsound, which demonstrates the risk of using manually created transformers.

Keywords

Cite

@article{arxiv.2105.00493,
  title  = {Synthesizing Abstract Transformers},
  author = {Pankaj Kumar Kalita and Sujit Kumar Muduli and Loris D'Antoni and Thomas Reps and Subhajit Roy},
  journal= {arXiv preprint arXiv:2105.00493},
  year   = {2022}
}

Comments

17 Figures, 5 Tables, 32 pages

R2 v1 2026-06-24T01:42:43.499Z