Verification of Imperative Programs by Constraint Logic Program Transformation
本文提出了一种基于约束逻辑程序变换(CLP)的方法来验证操作整数和数组的命令式程序的部分正确性。我们使用CLP作为一种元语言来表示命令式程序,它们的执行和它们的属性。首先,我们将命令式程序的正确性编码为CLP程序T定义的谓词“不正确”的否定。通过构造,“不正确”在T的最小模型中成立,当且仅当从初始配置执行prog最终在错误配置中停止。然后,我们对程序T应用一系列保持其最小模型语义的变换。这些转换是基于众所周知的转换规则,如展开和折叠,由适当的转换策略,如专业化和泛化。转换的目的是导出一个新的CLP程序TransfT,其中谓词“不正确”由以下定义:(i)事实“不正确”。'(在这种情况下prog是不正确的),或者由(ii)空子句集(在这种情况下prog是正确的)。在我们导出CLP程序使得(i)和(ii)都不成立的情况下,我们对变换进行了简化。由于问题是不可判定的,这个过程可能不会终止。我们通过例子表明,我们的方法可以应用在一个相当系统的方式,是适合自动化的程序验证领域的许多技术开发的程序转换。
2013-09-20 cs.LO cs.PL
Synthesizing Specifications
本文提出了一种自动综合程序规格的方法,通过用户提供的查询和领域特定语言L,生成最佳且穷尽的L-属性集合,并在工具Spyro中实现,适用于规格挖掘、抽象域操作和代数属性综合。
2024-02-05 cs.PL
An Evolutionary Framework for Automatic and Guided Discovery of Algorithms
Intel Corporation(英特尔公司)
本文介绍了自动算法发现器(AAD),一个进化的框架,综合程序的高复杂性。为了指导进化,以前的进化算法依赖于适应度(目标)函数,这是具有挑战性的设计。相反,为了取得进化的进展,AAD采用了问题导向进化(PGE),这需要同时引入一组问题。使用PGE,为简单问题发现的解决方案用于解决同一组中更复杂的问题。PGE还支持几种新的进化策略,并自然地屈服于高性能计算(HPC)技术。我们发现,PGE和相关的进化策略,使AAD发现类似或更高的复杂性相对于国家的最先进的算法。具体来说,AAD产生Python代码的29数组/向量的问题,从最小,最大,反向,更具有挑战性的问题,如排序和矩阵向量乘法。此外,我们发现,AAD显示出适应性约束的环境/输入,并展示了开箱即用的解决问题的能力。
2019-04-05 cs.AI cs.NE cs.PL
HMC: Verifying Functional Programs Using Abstract Interpreters
我们提出了Hindley-Milner-Cousots(HMC),一个算法,允许任何一阶命令式程序的过程间分析被用来验证类型化高阶函数程序的安全属性。HMC工作如下。首先,它利用函数程序的类型结构来生成一组逻辑精化约束,这些约束的满足意味着源程序的安全性。其次,它将逻辑精化约束转换成一个简单的一阶命令式程序,该程序是安全的,当且仅当约束是可满足的。因此,HMC一举使工具的不变生成,例如,基于抽象域、谓词抽象、反例引导的精化和Craig插值可以直接应用于以全自动的方式验证现代函数式语言的安全属性。我们已经实现了HMC,并描述了初步的实验结果,使用两个命令式检查器- ARMC和InterProc -来验证OCaml程序。因此,通过组成基于类型的推理在程序语法和基于状态的推理在抽象解释的基础上,HMC打开了大门,以现代程序设计语言编写的程序的自动验证。
2010-12-30 cs.LO cs.PL
Doc2Spec: Synthesizing Formal Programming Specifications from Natural Language via Grammar Induction
The Pennsylvania State University(宾夕法尼亚州立大学);University of the Chinese Academy of Sciences(中国科学院大学);Institute of Computing Technology, Chinese Academy of Sciences(中国科学院计算技术研究所)
Doc2Spec通过语法归纳自动从自然语言生成形式化编程规范,提升了规范生成的可靠性和质量。
2026-10-08 cs.AI cs.PL cs.SE
Synthesizing Optimal Parallelism Placement and Reduction Strategies on Hierarchical Systems for Deep Learning
University of Cambridge(剑桥大学);DeepMind
我们提出了一种新的表征的映射到分层加速器系统的多个并行形式(例如,数据和模型并行)是层次意识,大大减少了空间的软件到硬件的映射。我们通过实验验证了这些映射对全归约性能的实质性影响(高达448倍)。我们提供了一个新的语法指导的程序合成框架,能够分解减少一个或多个并行轴的集体序列的层次结构和映射感知的方式。对于69%的并行放置和用户请求的减少,我们的框架合成的程序在不同的GPU层次结构上进行评估时,性能优于默认的所有减少实现(最大2.04倍,平均1.27倍)。我们补充了我们的合成工具,模拟器超过90%的前10名的准确性,因此减少了对合成结果进行大量评估以确定一小部分最佳程序和映射的需要。
2021-11-16 cs.DC cs.LG cs.PL
Using SyGuS to Synthesize Reactive Motion Plans
UC Berkeley(加州大学伯克利分校);University of Washington(华盛顿大学)
我们提出了一种方法合成反应机器人运动计划,编译语法指导合成(SyGuS)规范的基础上。我们的方法减少了运动规划的问题,合成的功能,可以选择下一个机器人的行动,以响应系统的当前状态的问题。这种技术不是通过在整个部署过程中生成新的运动计划来提供反应性,而是通过合成单个程序来使机器人从与系统模型一致的任何系统状态到达其目标。这种方法允许我们的工具处理具有对抗性障碍的环境。这项工作是第一次使用SyGuS形式主义来解决机器人运动规划问题。我们调查是否使用SyGuS的有界的两个玩家的可达性游戏是实际的,在这个时间点。
2016-11-23 cs.PL cs.RO
Resource-Guided Program Synthesis
本文介绍了资源引导合成,一种用于合成既满足功能规范又满足符号资源约束的递归程序的技术。该技术是类型导向的,并依赖于一个新的类型系统,结合多态细化类型与自动摊销资源分析的潜在注释。类型系统支持有效的基于约束的类型检查,并可以表达精确的基于细化的资源边界。类型可靠性证明表明,合成程序是正确的。通过紧密集成程序探索和类型检查,合成器可以利用用户提供的资源绑定来指导搜索,急切地拒绝消耗太多资源的不完整程序。在资源引导合成器ReSyn的实现是用来评估递归数据结构操作的范围内的技术。实验表明,ReSyn合成的程序比由资源不可知的合成器生成的程序更有效。此外,使用ReSyn的合成比合成和资源分析的简单组合更快。ReSyn还能够生成对于固定输入大小具有恒定资源消耗的实现,这可用于减轻侧信道攻击。
2019-04-18 cs.LO cs.PL
Program Synthesis Through Reinforcement Learning Guided Tree Search
Princeton University(普林斯顿大学)
程序合成是根据提供的规范生成程序的任务。传统上,这被程序设计语言(PL)社区视为搜索问题,最近被机器学习社区视为监督学习问题。在这里,我们提出了第三种方法,将给定程序的合成任务表示为可通过强化学习(RL)求解的马尔可夫决策过程。从部分程序的状态的观察,我们试图找到一个程序,是最佳的奖励度量对程序和状态。我们在RISC-V汇编语言的一个子集上实例化了这种方法,该语言操作于浮点数,作为PL社区基于搜索的技术的优化,我们将RL与优先级搜索树相结合。我们评估这种实例化,并证明了我们的组合方法的有效性相比,各种基线,包括纯RL消融和最先进的马尔可夫链蒙特卡罗搜索方法在这项任务上。
2018-06-08 cs.AI cs.LG cs.NE
Synthesizing Formal Semantics from Executable Interpreters
本文提出利用文法和黑盒解释器,通过 CEGIS 将 CHC 语义综合分解为 SyGuS 表达式问题,并在 14 个解释器上验证,还发现并修复了正则表达式语义不一致。
2024-09-06 cs.PL
Mason: Type- and Name-Guided Program Synthesis
University of British Columbia(不列颠哥伦比亚大学);Tufts University(塔夫茨大学)
Mason通过类型和名称引导合成技术,自动将设计模式插入到面向对象程序中,提升了多类程序合成的效率和准确性。
2026-02-19 cs.PL
Modeling Black-Box Components with Probabilistic Synthesis
本文关注的是黑盒预言的基础上合成程序:我们感兴趣的情况下,存在一个可执行的组件或库的实现,但其内部结构是未知的。我们只提供了一个API或函数签名,目的是合成一个具有等效行为的程序。为了解决这个问题,我们详细介绍了Presyn:一个程序合成器,设计用于与现有程序和编译器工具链进行灵活的互操作。Presyn使用高级命令式控制流结构和一对协作预测模型来有效地缩小潜在程序的空间。这些模型可以有效地训练小语料库的合成的例子。我们评估Presyn对五个领先的程序合成器收集的112个合成基准整理从以前的研究和现实世界的软件库。我们表明,Presyn能够合成更广泛的程序比他们每个人少的人力投入。我们展示了我们的方法的应用程序,以现实世界的代码和软件工程问题的两个案例研究:加速器库移植和检测重复的库重新实现。
2020-10-09 cs.PL
RbSyn: Type- and Effect-Guided Program Synthesis
近年来,研究人员已经探索了基于组件的合成,其目的是通过组合对现有API的调用来自动构建程序。然而,先前的工作没有考虑具有副作用的方法的有效合成,例如,更新数据库的Web应用程序方法。在本文中,我们介绍了RbSyn,一种新的类型和效果指导的Ruby合成工具。RbSyn合成目标被指定为目标方法的类型和它必须通过的一系列测试用例。RbSyn的工作原理是递归地生成良好类型的候选方法体,其写效果与测试用例断言的读效果相匹配。在找到一组分别满足每个测试的候选代码后,RbSyn合成一个解决方案,该解决方案在适当的条件下分支执行正确的候选代码。我们正式的核心,面向对象的语言$λ_{syn}$的RbSyn和描述如何在我们的Ruby实现的模型的关键思想是按比例放大。我们在19个基准测试中评估了RbSyn,其中12个来自流行的开源Ruby应用程序。我们发现RbSyn为所有基准测试合成正确的解决方案,其中15个基准测试在9秒内合成,而最慢的基准测试需要83秒。使用观察到的读取来指导合成是有效的:单独使用类型指导在12个应用程序基准测试中有10个超时。我们还发现,使用不太精确的效果注释会导致合成性能变差。总之,我们相信类型和效果引导的合成是从测试用例合成有效方法的重要一步。
2021-04-08 cs.PL
Intent-Level Quantum Programming with Assertion-Guided Execution and Inspectable Intermediate Representation
Institute of Applied Artificial Intelligence and Robotics (IAAIR)(应用人工智能与机器人研究所);Stanford University(斯坦福大学);Rutgers University(罗格斯大学)
提出量子领域特定语言(QDSL),通过意图-执行分离、一等IR内省、断言引导模式推断解决量子程序验证与跨后端移植难题,原型在基准电路及故障注入、差分测试中表现良好,IR生成成本低。
2026-08-05 cs.PL cs.SE quant-ph