文件Open Access徽标

Hoogle⋆:使用符号执行的基于Petri网的合成中的常数和λ-抽象

作者 亨利克·博特尔霍·格拉(Henrique Botelho Guerra) , 乔·费雷拉 , 乔·科斯塔·塞科



PDF格式
缩略图PDF

文件

LIPIcs公司。ECOOP.2023.4.pdf
  • 文件大小:1.01 MB
  • 28页

文件标识符

作者详细信息

亨利克·博特尔霍·格拉(Henrique Botelho Guerra)
  • 葡萄牙里斯本大学INESC-ID和IST
乔·费雷拉
  • 葡萄牙里斯本大学INESC-ID和IST
乔·科斯塔·塞科
  • NOVA LINCS,NOVA科学技术学院,葡萄牙卡帕里察

致谢

我们要感谢匿名评论员的建设性反馈。

引用为获取BibTex

亨利克·博特洛·格拉(Henrique Botelho Guerra)、乔·费雷拉(Joáo F.Ferreira)和乔·科斯塔·塞科(Joóo Costa Seco)。Hoogle⋆:使用符号执行的基于Petri网的合成中的常数和λ-抽象。第37届欧洲面向对象编程会议(ECOOP 2023)。莱布尼茨国际信息学论文集(LIPIcs),第263卷,第4:1-4:28页,达格斯图尔-莱布尼兹-泽特鲁姆信息学院(2023)
https://doi.org/10.4230/LIPIcs.ECOOP.2023.4

摘要

基于类型定向组件的程序合成是使用可用组件的应用程序自动构建函数的任务,其类型与给定的目标类型匹配。基于经典证明搜索的现有基于组件的合成方法无法处理大型组件集。最近,Haskell的一个基于组件的合成器Hoogle+通过将搜索问题简化为Petri网可达性问题来克服这个问题。然而,Hoogle+不能合成常数或λ-抽象,这限制了它可以解决的问题。我们通过两个独立的步骤介绍了Hoogle⋆,它是Hoogle+的扩展,将常量和λ-抽象引入搜索空间。首先,我们介绍了通配符组件的概念,它是一个匹配所有类型的组件。这使算法能够生成不完整的函数,即包含通配符组件出现的函数。其次,我们通过用常量或自定义的λ-抽象替换每次出现的情况来完成这些函数。我们选择通过推理算法来寻找常数:我们提出了一种基于符号执行的新统一算法,该算法使用用户提供的输入输出示例来计算通配符的替换。与Hoogle+相比,Hoogle⋆可以解决更多类型的问题,尤其是需要生成常量和λ-抽象的问题,而不会降低性能。

主题分类

ACM科目分类
  • 软件及其工程→自动编程
  • 计算理论→自动推理
关键词
  • 类型定向
  • 基于组件
  • 程序综合
  • 符号执行
  • 统一
  • 哈斯克尔

韵律学

工具书类

  1. 勒纳特·奥古斯塔森(Lenart Augusstson)。吉恩。网址:https://github.com/augustss/djinn网站.
  2. 弗兰兹·巴德。统一理论。1990年10月1日至3日,德国杜宾根IWWERT’90第一次国际研讨会,克劳斯·U·舒尔茨(Klaus U.Schulz)主编,《计算机科学讲稿》第572卷,第151-170页。斯普林格,1990年。网址:https://doi.org/10.1007/3-540-55124-7_5.
  3. 罗伯特·巴多尼、埃米利奥·科帕、丹尼尔·科诺·德埃利亚、卡米尔·德米特里斯库和艾琳·菲诺奇。符号执行技术综述。ACM计算。调查。,51(3):50:1-50:39, 2018. 网址:https://doi.org/10.1145/3182657.
  4. 乔奥·科斯塔·塞科、乔纳森·奥尔德里奇、路易斯·卡瓦略、贝尔纳多·托尼霍和卡拉·费雷拉。用于基于概念的程序合成的带孔派生。2022年ACM SIGPLAN国际研讨会论文集,关于编程和软件的新思想、新范式和思考,继续!2022年,第63-79页,美国纽约州纽约市,2022年。计算机协会。网址:https://doi.org/10.1145/3563835.3567658.
  5. 克里斯蒂娜·戴维和丹尼尔·科伦。课程综合:挑战与机遇。《皇家学会哲学学报A:数学、物理和工程科学》,375(2104):201504032017。网址:https://doi.org/10.1098/rsta.2015.0403.
  6. Daniel J.Dougherty和Patricia Johann。一种改进的通用电子统一方法。J.塞姆。计算。,14(4):303-320, 1992. 网址:https://doi.org/10.1016/0747-7171(92)90010-2.
  7. Yu Feng、Ruben Martins、Yuepeng Wang、Isil Dillig和Thomas W.Reps.复杂原料药的成分合成。朱塞佩·卡斯塔尼亚(Giuseppe Castagna)和安德鲁·戈登(Andrew D.Gordon),编辑,第44届ACM SIGPLAN编程语言原则研讨会论文集,2017年POPL,2017年1月18日至20日,法国巴黎,599-612页。ACM,2017年。网址:https://doi.org/10.1145/3009837.3009851.
  8. Jean H.Gallier和Wayne Snyder。通用完整的电子统一程序。1987年5月25日至27日,法国波尔多RTA-87第二届国际会议重写技术与应用编辑皮埃尔·莱斯坎(Pierre Lescane),《计算机科学讲稿》第256卷,第216-227页。施普林格,1987年。网址:https://doi.org/10.1007/3-540-17220-3_19.
  9. 马蒂亚斯·帕尔·吉苏拉森(Matthías Páll Gissurarson)。为键入的孔建议有效的孔配合(经验报告)。第十一届ACM SIGPLAN Haskell国际研讨会论文集编辑Nicolas Wu,哈斯克尔@ICFP2018年9月27日至17日,美国密苏里州圣路易斯,第179-185页。ACM,2018年。网址:https://doi.org/10.1145/3242744.3242760.
  10. 马蒂亚斯·帕尔·吉瑟拉森、莱昂哈德·阿普利斯、安妮贝·帕尼切拉、阿里·范·德森和大卫·桑兹。PROPR:基于属性的自动程序修复。第44届IEEE/ACM第44届国际软件工程会议,ICSE 2022,匹兹堡,宾夕法尼亚州,美国,2022年5月25日至27日,第1768-1780页。ACM,2022年。网址:https://doi.org/10.1145/3510003.3510620.
  11. 苏米特·古尔瓦尼。程序合成中的维度。在Temur Kutsia、Wolfgang Schreiner和Maribel Fernández,编辑,《第12届国际ACM SIGPLAN声明性编程原则和实践会议记录》,2010年7月26日至28日,奥地利哈根堡,第13-24页。ACM,2010年。网址:https://doi.org/10.1145/1836089.1836091.
  12. 苏米特·古尔瓦尼(Sumit Gulwani)、奥列克桑德·波洛佐夫(Oleksandr Polozov)和里沙布·辛格(Rishabh Singh)。程序综合。已找到。趋势计划。Lang.,4(1-2):2017年1月119日。网址:https://doi.org/10.1561/250000010.
  13. 郑国、曹大卫、达文·特容、让·杨、科尔·施莱辛格和娜迪娅·波里卡波娃。restful api的类型定向程序合成。兰吉特·贾拉(Ranjit Jhala)和伊西尔·迪利格(Isil Dillig)主编,PLDI’22:第43届ACM SIGPLAN编程语言设计与实现国际会议,美国加利福尼亚州圣地亚哥,2022年6月13-17日,第122-136页。ACM,2022年。网址:https://doi.org/10.1145/3519939.3523450.
  14. 郑果、迈克尔·詹姆斯、大卫·朱斯托、周家雄、王子腾、兰吉特·贾拉和娜迪娅·波里卡波娃。通过类型引导的抽象精化进行程序合成。程序。ACM计划。Lang.,4(POPL):2020年12月1日-12:28日。网址:https://doi.org/10.1145/3371080.
  15. 蒂霍米尔·格维罗(Tihomir Gvero)、维克托·昆卡(Viktor Kuncak)、伊万·库拉吉(Ivan Kuraj)和鲁齐卡·皮斯卡(Ruzica Piskac)。使用类型和重量完成。Hans Juergen Boehm和Cormac Flanagan,编辑,ACM SIGPLAN编程语言设计与实现会议,PLDI’13,美国华盛顿州西雅图,2013年6月16日至19日,第27-38页。ACM,2013年。网址:https://doi.org/10.1145/2491956.2462192.
  16. William T.Hallahan、Anton Xue、Maxwell Troy Bland、Ranjit Jhala和Ruzica Piskac。懒惰的反事实象征性执行。编者凯瑟琳·麦金利(Kathryn S.McKinley)和凯瑟琳·费舍尔(Kathleen Fisher),《第40届ACM SIGPLAN编程语言设计与实现会议记录》,PLDI 2019,美国亚利桑那州凤凰城,2019年6月22日至26日,第411-424页。ACM,2019年。网址:https://doi.org/10.1145/3314221.3314618.
  17. William T.Hallahan、Anton Xue和Ruzica Piskac。G2Q:haskell约束求解。在理查德·艾森伯格(Richard A.Eisenberg)主编的《第十二届ACM SIGPLAN Haskell国际研讨会论文集》中,哈斯克尔@ICFP2019年8月18日至23日,德国柏林,第44-57页。ACM,2019年。网址:https://doi.org/10.1145/3331545.3342590.
  18. 保罗·哈达克和约瑟夫·法塞尔。轻轻介绍哈斯克尔。ACM SIGPLAN通知,27(5):11992年1月。网址:https://doi.org/10.1145/130697.130698.
  19. 杰拉德·P·休特。类型lambda-calculus的统一算法。西奥。计算。科学。,1(1):27-57, 1975. 网址:https://doi.org/10.1016/0304-3975(75)90011-0.
  20. Michael B.James、Zheng Guo、Ziteng Wang、Shivani Doshi、Hila Peleg、Ranjit Jhala和Nadia Polikarpova。挖掘褶皱:haskell的合成辅助API发现。程序。ACM计划。Lang.,4(OOPSLA):205:1-205:272020年。网址:https://doi.org/10.1145/3428273.
  21. SL Peyton Jones、Cordy Hall、Kevin Hammond、Will Partain和Philip Wadler。格拉斯哥-哈斯克尔编译器:技术概述。程序中。英国信息技术联合框架(JFIT)技术会议,第93卷,1993年。谷歌学者
  22. John C.Kolesar、Ruzica Piskac和William T.Hallahan。检查非限定语言中的等价性。程序。ACM计划。Lang.,6(OOPSLA2):1469-14962022年。网址:https://doi.org/10.1145/3563340.
  23. 詹姆斯·科佩尔(James Koppel)、郑国(Zheng Guo)、埃德斯科·德弗里斯(Edsko de Vries)、阿曼多·索拉勒扎马(Armando Solar-Lezama)和纳迪娅·波里卡波娃(Nadia Polikarpova)。搜索纠缠的程序空间。程序。ACM计划。Lang.,6(ICFP):2022年第23-51页。网址:https://doi.org/10.1145/3547622.
  24. 贾斯汀·卢宾、尼克·柯林斯、赛勒斯·奥马尔和拉维·楚格。程序草图与实时双向评估。程序。ACM计划。Lang.,4(ICFP):109:1-109:292020年。网址:https://doi.org/10.1145/3408991.
  25. David Mandelin、Lin Xu、Rastislav Bodík和Doug Kimelman。丛林采矿:帮助探索API丛林。Vivek Sarkar和Mary W.Hall,编辑,《ACM SIGPLAN 2005编程语言设计与实现会议论文集》,美国伊利诺伊州芝加哥,2005年6月12日至15日,第48-61页。ACM,2005年。网址:https://doi.org/10.1145/1065010.1065018.
  26. 尼尔·米切尔。胡格尔。网址:https://hoogle.haskell.org/.
  27. Niek Mulleners、Johan Jeuring和Bastian Heeren。使用示例传播进行程序合成。CoRR,abs/2210.138732022。网址:https://doi.org/10.48550/arXiv.2210.13873.
  28. Niek Mulleners、Johan Jeuring和Bastian Heeren。斯克里贝。https://github.com/NiekM/scrybe, 2022.
  29. Phuc C.Nguyen、Sam Tobin-Hochstadt和David Van Horn。用于合同验证和反驳的高阶符号执行。J.功能。程序。,2017年3月27日。网址:https://doi.org/10.1017/S0956796816000216.
  30. 乌尔夫·诺雷尔。agda中的依赖类型编程。Pieter W.M.Koopman、Rinus Plasmeijer和S.Doaitse Swierstra,第六国际学校高级函数编程编辑,AFP 2008,荷兰Heijen,2008年5月,修订讲座,计算机科学讲稿第5832卷,第230-266页。施普林格,2008年。网址:https://doi.org/10.1007/978-3-642-04652-05.
  31. 彼得·迈克尔·奥塞拉(Peter-Michael Osera)和史蒂夫·兹丹塞维奇(Steve Zdancewic)。类型和示例导向的程序合成。David Grove和Stephen M.Blackburn,编辑,《第36届ACM SIGPLAN编程语言设计与实现会议论文集》,美国俄勒冈州波特兰,2015年6月15日至17日,第619-630页。ACM,2015年。网址:https://doi.org/10.1145/2737924.2738007.
  32. 丹尼尔·佩雷尔曼(Daniel Perelman)、苏米特·古尔瓦尼(Sumit Gulwani)、托马斯·鲍尔(Thomas Ball)和丹·格罗斯曼(Dan Grossman)。分部表达式的类型定向完成。2012年6月11日至16日,中国北京,ACM SIGPLAN编程语言设计与实现会议,编辑Jan Vitek、Haibo Lin和Frank Tip,第275-286页。ACM,2012年。网址:https://doi.org/10.1145/2254064.2254098.
  33. 约翰·彼得森和马克·琼斯。实现类型类。编辑Robert Cartwright,《美国计算机学会SIGPLAN’93编程语言设计与实现会议论文集》,美国新墨西哥州阿尔伯克基,1993年6月23日至25日,第227-236页。ACM,1993年。网址:https://doi.org/10.1145/155090.155112.
  34. Veselin Raychev、Martin T.Vechev和Eran Yahav。使用统计语言模型完成代码。Michael F.P.O'Boyle和Keshav Pingali,ACM SIGPLAN编程语言设计与实现会议编辑,PLDI’14,英国爱丁堡,2014年6月9日至11日,第419-428页。ACM,2014年。网址:https://doi.org/10.1145/2594291.2594321.
  35. 约格·希克曼。统一理论。J.塞姆。计算。,7(3/4):207-274, 1989. 网址:https://doi.org/10.1016/S0747-7171(89)80012-4.
  36. 阿曼多·索拉尔·勒扎马(Armando Solar-Lezama)。程序草图。国际期刊软件。技术工具。传输。,15(5-6):475-495, 2013. 网址:https://doi.org/10.1007/s10009-012-0249-7.
  37. 埃米娜·托拉克和拉斯蒂斯拉夫·博迪克。使用玫瑰花结增长求解辅助语言。Antony L.Hosking、Patrick Th.Eugster和Robert Hirschfeld,编辑,ACM软件编程新思想和思考研讨会,继续!2013年10月26日至31日,美国印第安纳州印第安纳波利斯SPLASH’13的一部分,第135-152页。ACM,2013年。网址:https://doi.org/10.1145/2509578.2509586.
  38. Darya Verzhbinsky和Daniel Wang。Petsy:多态枚举型指导合成。2021年POPL 2021学生研究竞赛。谷歌学者
问题/备注/反馈
X(X)

Dagstuhl出版社反馈


感谢您的反馈!

已提交反馈

无法发送消息

请稍后再试或发送电子邮件