Program synthesis approaches struggle to learn programs with numerical values. An especially difficult problem is learning continuous values over multiple examples, such as intervals. To overcome this limitation, we introduce an inductive logic programming approach which combines relational learning with numerical reasoning. Our approach, which we call NUMSYNTH, uses satisfiability modulo theories solvers to efficiently learn programs with numerical values. Our approach can identify numerical values in linear arithmetic fragments, such as real difference logic, and from infinite domains, such as real numbers or integers. Our experiments on four diverse domains, including game playing and program synthesis, show that our approach can (i) learn programs with numerical values from linear arithmetical reasoning, and (ii) outperform existing approaches in terms of predictive accuracies and learning times.
翻译:程序合成方法努力学习具有数值的方案。 一个特别困难的问题是, 学习连续的数值, 而不是多个例子, 例如间隔。 为了克服这一限制, 我们引入了一种将关系学习与数字推理相结合的直观逻辑编程方法。 我们称之为 NUMSYNTH 的方法, 使用讽刺性模调理论解答器, 高效地学习带有数值的程式。 我们的方法可以识别线性算术碎片中的数字值, 如实际差异逻辑, 以及来自无限域( 如实际数字或整数 ) 的数字值。 我们在四个不同域( 包括游戏和程序合成) 的实验显示, 我们的方法可以 (一) 学习从线性算术推理中得出的数字值方案, 以及 (二) 超越现有方法, 包括预测的准确度和学习时间 。