We present a novel approach to the automatic synthesis of recursive programs from mixed-quantifier first-order logic properties. Our approach uses Skolemization to reduce the mixed-quantifier synthesis problem to a $\forall^*$-synthesis problem, synthesizing witness-generating functions for introduced Skolem symbols alongside the target program. We tackle $\forall^*$-synthesis using a sketching-based, enumerative, counterexample-guided approach. Our algorithm learns syntactic constraints from counterexamples to prune the candidate space and employs a prophylactic pruning technique to avoid enumerating invalid candidates altogether. We evaluate our technique on 42 benchmarks, demonstrating that both counterexample generalization and prophylactic pruning significantly improve performance.
翻译:我们提出了一种从混合量词一阶逻辑性质自动综合递归程序的新方法。该方法利用Skolem化将混合量词综合问题简化为$\forall^*$综合问题,在为引入的Skolem符号综合见证生成函数的同时,也综合目标程序。我们采用基于草图、枚举式、反例引导的方法处理$\forall^*$综合。我们的算法从反例中学习语法约束以剪枝候选空间,并采用预防性剪枝技术来完全避免枚举无效候选。我们在42个基准测试上评估了该技术,结果表明反例泛化和预防性剪枝均能显著提升性能。