一句话:提出 ALPS,利用语法引导剪枝从输入输出示例合成 Datalog 程序。
Datalog 在多个领域有应用前景,但从示例合成 Datalog 程序因语言表达力强而搜索空间巨大。本文提出编程示例系统 ALPS,采用语法引导合成方法:观察到实际 Datalog 程序中的规则往往具有相似的潜在语法结构,据此剪枝搜索空间,从而将合成扩展到更现实的程序。作者在来自知识发现、程序分析和数据库查询三个领域的 34 个基准上评估 ALPS。结果显示,ALPS 能合成其中 33 个基准,显著优于当前最先进的 Metagol 和 Zaatar,后者最多只能合成 10 个基准。
Datalog has witnessed promising applications in a variety of domains. We propose a programming-by-example system, ALPS, to synthesize Datalog programs from input-output examples. Scaling synthesis to realistic programs in this manner is challenging due to the rich expressivity of Datalog. We present a syntax-guided synthesis approach that prunes the search space by exploiting the observation that in practice Datalog programs comprise rules that have similar latent syntactic structure. We evaluate ALPS on a suite of 34 benchmarks from three domains—knowledge discovery, program analysis, and database queries. The evaluation shows that ALPS can synthesize 33 of these benchmarks, and outperforms the state-of-the-art tools Metagol and Zaatar, which can synthesize only up to 10 of the benchmarks.