[论文解读] The SyGuS Language Standard Version 2.1
本论文介绍了 SyGuS 语言标准 2.1 版,这是对语法引导合成(SyGuS)问题的正式规范,提升了表达能力与互操作性。它基于 SMT-LIB 基础,标准化了输入/输出格式,引入了 'assume' 和 'oracle-constraint' 等新命令,并对语法、逻辑和求解器交互语义进行了改进,以增强程序合成系统在正确性和可扩展性方面的表现。
The classical formulation of the program-synthesis problem is to find a program that meets a correctness specification given as a logical formula. Syntax-guided synthesis (SyGuS) is a standardized format for specifying the correctness specification with a syntactic template that constrains the space of allowed implementations. The input to SyGuS consists of a background theory, a semantic correctness specification for the desired program given by a logical formula, and a syntactic set of candidate implementations given by a grammar. The computational problem then is to find an implementation from the set of candidate expressions that satisfies the specification in the given theory. The formulation of the problem builds on SMT-LIB. This document defines the SyGuS 2.1 standard, which is intended to be used as the standard input and output language for solvers targeting the syntax-guided synthesis problem. It borrows many concepts and language constructs from the standard format for Satisfiability Modulo Theories (SMT) solvers, the SMT-LIB 2.6 standard.
研究动机与目标
- 定义用于语法引导合成(SyGuS)求解器的标准化、可互操作的输入和输出格式。
- 通过改进语法、逻辑和约束处理,提升合成规格的表达能力和正确性。
- 通过新增的 'oracle-constraint' 和 'oracle-assume' 等命令,实现基于 oracle 的推理,以支持外部验证和基于示例的程序合成(PBE)风格的合成。
- 使 SyGuS 格式与 SMT-LIB 2.6 标准在语法、类型和项方面保持一致,确保一致性与工具兼容性。
- 正式定义输入和输出语义,包括求解器响应如 'fail' 和 'infeasible',以提升求解器的互操作性和正确性。
提出的方法
- 采用 SMT-LIB 2.6 的语法表示项、类型和排序,要求负常量使用一元减号表示,并显式使用位向量语法( _ BitVec n )。
- 引入新的 'assume' 命令,用于在合成猜想中表达背景假设 α,将问题泛化为 ∃f₁,…,fₙ.∀v₁,…,vₘ.α⇒φ。
- 用标准化的 SMT-LIB 等价形式替代已弃用的构造,如 'Start'、'InputVariable'、'LocalVariable' 和 'Enum'。
- 引入 'oracle-constraint' 和 'oracle-assume',允许外部 oracle 动态约束合成空间或提供正确性检查。
- 定义 'set-feature' 命令,用于启用或禁用如 oracle 等功能,实现对逻辑和命令限制的细粒度控制。
- 将语法限制为无绑定项,并强制要求非终结符在使用前必须预先声明,从而提升形式上的良定义性与解析清晰度。
实验结果
研究问题
- RQ1如何设计一种标准化、可互操作的语法引导合成语言格式,以支持多种理论和语法?
- RQ2SyGuS 格式需要进行哪些修改,以提升表达能力、正确性,并与 SMT-LIB 标准保持一致?
- RQ3如何正式将外部 oracle 集成到合成规格中,以支持基于示例的程序合成(PBE)和不变量合成?
- RQ4为确保在不同逻辑中合成实例的良定义性和有效性,需要哪些语义和语法约束?
- RQ5求解器响应应如何标准化,以支持对失败、不可行性和正确解的一致解释?
主要发现
- SyGuS 2.1 标准引入了 'assume' 命令,使背景假设 α 可以显式声明,将合成问题泛化为 ∃f₁,…,fₙ.∀v₁,…,vₘ.α⇒φ。
- 正式引入了 oracle 约束和 oracle 函数符号,使求解器能够在合成过程中与外部 oracle 交互,支持使用黑盒 oracle 的 PBE 和不变量合成。
- 移除了 'Start'、'InputVariable' 和 'LocalVariable',简化了语法结构,现在语法中第一个非终结符被隐式视为起始符号。
- 所有语法右部现在必须为无绑定项,消除了 let-项,并强制项语法符合 SMT-LIB 标准。
- 'set-option' 命令更名为 'set-option' 以与 SMT-LIB 2.6 保持一致,且 'fail' 响应现在以无括号格式呈现。
- 该标准通过 'set-feature' 正式定义了输入逻辑、输出逻辑和功能,使用户能够对合成实例中支持的命令和约束实现精确控制。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。