无法发送具有此谓词类型的内容正文_采用多模态细化类型进行程序合成

引用Polikarpova N, Kuraj I, Solar-Lezama A. Program synthesis from polymorphic refinement types[J]. ACM SIGPLAN Notices, 2016, 51(6): 522-538.摘要本文提出了一种合成递归函数的方法,该方法能够满足以多模态细化类型(Polymorphic Refinement Ty...
摘要由CSDN通过智能技术生成
86605f8d7fc48bdeb43d18fbaa7c6e1f.png

引用

Polikarpova N, Kuraj I, Solar-Lezama A. Program synthesis from polymorphic refinement types[J]. ACM SIGPLAN Notices, 2016, 51(6): 522-538.

摘要

本文提出了一种合成递归函数的方法,该方法能够满足以多模态细化类型(Polymorphic Refinement Type)形式给出的规范。这类规范非常适合使用程序合成解决,其原因有二:首先,这些规范会提供表达能力和可判定性的独特组合,使针对非平凡(Nontrivial)程序的自动化验证变得可行,进而使非平凡程序的合成变为可能;其次,一种为程序指定的、基于类型的规范通常可以被有效地拆解成一系列独立的子规范,用于分别描述目标程序不同组件。由此,合成器可以考虑更少的组件这,并大大缩减搜索空间的规模。本文提出的程序合成过程的核心就是一种基于细化类型的、支持规范分解的全新算法。

本文对提出的合成算法进行了原型实现,并利用大量程序合成问题对其进行了评估。基于评估结果作者发现:相比于现有技术,本文的原型实现具备更加优秀的可拓展性和可用性、合成出的程序也更加复杂(合成的目标是排序算法、平衡搜索树相关操作)。此外,本文提出的原型实现还优化了许多现有程序合成基线问题的解决过程,体现为更加简洁直观的用户输入。

关键词:程序分析;函数式编程;细化类型;谓词抽象

引言

实现可扩展的程序合成的关键是实现模块化验证(Modular Verification)。模块化使得合成器能够独立地筛选候选子程序,从而缩减通过组合子程序得到的搜索空间的大小。

仅使用简单的粗粒度类型不足以精确地描述程序合成的目标。因此,现有的方法往往会利用一些其他的规范来补充类型信息,例如:输入输出示例(Input-output Examples)和前后置条件(Pre-Conditions and Post-Conditions)等。遗憾的是:目前,相应的验证过程很少能够达到和类型检查(Type Checking)对等的模块化程度,这从根本上限制了上述技术的可拓展性。

本工作实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值