{"title":"Synthesizing Abstract Transformers for Reduced-Product Domains","authors":"Pankaj Kumar Kalita, Thomas Reps, Subhajit Roy","doi":"arxiv-2408.04040","DOIUrl":null,"url":null,"abstract":"Recently, we showed how to apply program-synthesis techniques to create\nabstract transformers in a user-provided domain-specific language (DSL) L\n(i.e., ''L-transformers\"). However, we found that the algorithm of Kalita et\nal. does not succeed when applied to reduced-product domains: the need to\nsynthesize transformers for all of the domains simultaneously blows up the\nsearch space. Because reduced-product domains are an important device for improving the\nprecision of abstract interpretation, in this paper, we propose an algorithm to\nsynthesize reduced L-transformers $\\langle f_1^{\\sharp R}, f_2^{\\sharp R},...,\nf_n^{\\sharp R}\\rangle$ for a product domain $A_1 \\times A_2 \\times \\ldots\n\\times A_n$ , using multiple DSLs: $\\mathcal{L} = \\langle \\mathcal{L}_1 ,\n\\mathcal{L}_2, ... , \\mathcal{L}_n \\rangle$. Synthesis of reduced-product\ntransformers is quite challenging: first, the synthesis task has to tackle an\nincreased ''feature set\" because each component transformer now has access to\nthe abstract inputs from all component domains in the product. Second, to\nensure that the product transformer is maximally precise, the synthesis task\nneeds to arrange for the component transformers to cooperate with each other. We implemented our algorithm in a tool, Amurth2, and used it to synthesize\nabstract transformers for two product domains -- SAFE and JSAI -- available\nwithin the SAFEstr framework for JavaScript program analysis. For four of the\nsix operations supported by SAFEstr, Amurth2 synthesizes more precise abstract\ntransformers than the manually written ones available in SAFEstr.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0000,"publicationDate":"2024-08-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2408.04040","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
Recently, we showed how to apply program-synthesis techniques to create
abstract transformers in a user-provided domain-specific language (DSL) L
(i.e., ''L-transformers"). However, we found that the algorithm of Kalita et
al. does not succeed when applied to reduced-product domains: the need to
synthesize transformers for all of the domains simultaneously blows up the
search space. Because reduced-product domains are an important device for improving the
precision of abstract interpretation, in this paper, we propose an algorithm to
synthesize reduced L-transformers $\langle f_1^{\sharp R}, f_2^{\sharp R},...,
f_n^{\sharp R}\rangle$ for a product domain $A_1 \times A_2 \times \ldots
\times A_n$ , using multiple DSLs: $\mathcal{L} = \langle \mathcal{L}_1 ,
\mathcal{L}_2, ... , \mathcal{L}_n \rangle$. Synthesis of reduced-product
transformers is quite challenging: first, the synthesis task has to tackle an
increased ''feature set" because each component transformer now has access to
the abstract inputs from all component domains in the product. Second, to
ensure that the product transformer is maximally precise, the synthesis task
needs to arrange for the component transformers to cooperate with each other. We implemented our algorithm in a tool, Amurth2, and used it to synthesize
abstract transformers for two product domains -- SAFE and JSAI -- available
within the SAFEstr framework for JavaScript program analysis. For four of the
six operations supported by SAFEstr, Amurth2 synthesizes more precise abstract
transformers than the manually written ones available in SAFEstr.