paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Counterexample Guided Inductive Repair of Reactive Contracts

反应式契约的反例引导归纳修复
ASE 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE)2021匹配度 3/10 · 该论文属于形式化验证与契约自动修复,虽与程序验证相关,但未涉及用户核心关注的 LLM/Agent 改进静态分析或形式化验证,也不涉及浮点程序分析、贝叶斯程序分析或 Agentic 程序静态分析。引用 0 inbox
Soha Hussein, Vaibhav Sharma, Stephen McCamant, Sanjai Rayadurgam, Mats Heimdahl
crossref: 2026-09-12

AI 速览

一句话:提出反例引导的归纳修复方法,用于自动修复第三方反应式组件的契约。

在用第三方可执行组件构建控制系统时,组件附带的非形式行为描述往往不够严格,难以支撑系统级验证。本文要求分析者先假设一个组件契约,再检查组件是否满足该契约;若不满足,则通过反例引导的归纳修复技术自动修改契约,使其既强到足以证明系统性质,又弱到能覆盖系统上下文中的潜在行为。初步评估显示:修复后的契约在超过32%的案例中与开发者手工编写的契约逻辑等价;在另外63%的案例中,它是组件的一条不同、有效且非平凡的性质。

问题
第三方可执行组件的非形式行为描述不够严格,难以形式化出既足够强以建立系统属性、又足够弱以涵盖系统上下文中所有可能行为的组件契约。
方法
分析者假设一个组件契约,工具探索组件是否满足该契约;若不满足,则利用反例引导的归纳修复自动调整或修复契约。
评估
在多个组件案例上评估修复后的契约,统计其与开发者手写契约逻辑等价的比例,以及在其余情况下作为有效非平凡性质的比例。
原文摘要(Abstract)

Using third-party executable components to build control systems poses challenges for verification. This is because the informal behavior descriptions that typically accompany the components often fall short of the needed rigor. Consequently, there is a need to formalize a component contract that is strong enough to help establish system properties and also weak enough to account for all potential component behaviors in the system’s context. In this paper, we present a novel approach that allows an analyst to hypothesize a component contract, explore if the component meets the contract, and, if not, have automated support to help repair the contract. Preliminary results show that, in more than 32% of the cases, the repaired contract is logically equivalent to a developer-written one; in a further 63% of cases, it is a distinct, valid, and non-trivial property of the component.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot6536,
  title = {Counterexample Guided Inductive Repair of Reactive Contracts},
  author = {Soha Hussein and Vaibhav Sharma and Stephen McCamant and Sanjai Rayadurgam and Mats Heimdahl},
  booktitle = {ASE},
  year = {2021},
  doi = {10.1109/ase51524.2021.9678548}
}