功能性合成是将输出合成为输入函数的问题,同时满足输入和输出之间的声明性关系规范。本教程概述了最近的方法,这些方法结合了自动推理、知识编译和机器学习方面的进步,以解决各种实际的功能合成问题。鉴于合成在计算机科学中的根本重要性,除了与核心 AI 相关的论坛之外,该领域的最新进展已在多个论坛中得到报道。
本教程围绕三个新兴的合成研究方向:
基于知识编译的方法: 受到贝叶斯推理中知识编译方法成功的启发;这些方法侧重于将规范编译成一种表示语言,从该语言中可以轻松导出所需的程序/功能。
反例引导技术:这些方法涉及对所需系统的智能初始“猜测”,然后使用高效求解器检查猜测是否满足用户要求,如果不满足则逐步修复系统。这种方法非常成功在不同的合成设置中。
数据驱动的综合:这些方法专注于利用约束采样的最新进展来生成数据(或示例),然后将其馈送到机器学习技术以生成初始候选函数。随后,如果有必要,将使用无法满足的核心计算和分析的进展来修复生成的功能/程序。