Synthesizing Abstract Transformers for Reduced-Product Domains

Pankaj Kumar Kalita, Thomas Reps, Subhajit Roy
{"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.
为还原产品领域合成抽象变压器
最近,我们展示了如何应用程序合成技术,在用户提供的特定领域语言(DSL)L 中创建抽象变换器(即 "L-变换器")。然而,我们发现,Kalita 等人的算法在应用于减积域时并不成功:因为需要同时合成所有域的变换器,这就压缩了arch 空间。因为还原积域是提高抽象解释精确度的重要工具,所以在本文中,我们提出了一种算法,使用多个 DSL 为积域 $A_1 \times A_2 \times \ldots\times A_n$ 合成还原 L 变换器 $langle f_1^\{sharp R}, f_2^{sharp R},...,f_n^{sharp R}\rangle$ :$\mathcal{L} = \langle \mathcal{L}_1 ,\mathcal{L}_2, ..., \mathcal{L}_n \rangle$。简化产品变换器的合成具有相当大的挑战性:首先,合成任务必须处理增加的 "特征集",因为每个组件变换器现在都可以访问产品中所有组件域的抽象输入。其次,为了确保产品变换器达到最高精度,合成任务需要安排组件变换器相互合作。我们在 Amurth2 工具中实现了我们的算法,并用它合成了两个产品域(SAFE 和 JSAI)的抽象变换器,这两个产品域可在用于 JavaScript 程序分析的 SAFEstr 框架中找到。对于SAFEstr支持的六种操作中的四种,Amurth2合成的抽象变换器比SAFEstr中手动编写的更为精确。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信