在我的社区中,最近我们积极使用正式规范中的“伪造”一词。该术语出现在例如: https://www.cs.huji.ac.il/~ornak/publications/cav05.pdf
我想知道合金分析仪是否会伪造。对我来说似乎是对的,但我不确定。这是对的吗?如果没有,有什么区别?
答案 0 :(得分:2)
是的,Alloy是伪造者。 Alloy于20年前问世时的主要新颖之处在于,证伪通常比验证更重要,因为大多数设计都不正确,因此分析仪的作用应该是发现错误,而不是表明它们不存在。 。有关此问题的讨论,请参见Software analysis: A roadmap中的第1.4节“验证与反驳”(Jackson和Rinard,2000年)。 Software Abstractions中的第5.1.1节“实例查找和不确定性受损”(Jackson,2006年)。
在Alloy的情况下,还有另一个方面,即从验证的角度来看,范围完整分析实际上非常有效。这种说法就是我们所说的“小范围假设”-大多数错误都可以在小范围内找到(即,每种基本类型中的固定数量的元素所限制的分析)。
BTW,Alloy是最早建议使用SAT进行边界验证的工具之一。例如,参见Boolean Compilation of Relational Specifications(Daniel Jackson,1998年),这是第一份有界模型检验论文的作者所知的技术报告,该论文以下列术语讨论了Alloy的前身Nitpick:
Nitpick的假设是一个有争议的假设。就是它, 实际上,小范围就足够了。换句话说,大多数错误可以是 通过反例在较小范围内进行演示。这纯粹是 经验假设,因为错误的相关分布不能 用数学描述:由规格决定 人们写。
我们希望成功使用Nitpick工具可以证明 假设。已经有一些证据表明其合理性。在 到目前为止,我们在Nitpick的经验,我们还没有进一步 通过将范围扩大到6以上来提供信息。
在模型检查的上下文中隐含了类似的范围概念 硬件。尽管各个状态机通常是 有限的,设计经常通过 机器并行执行。该指标类似于范围;如 机器数量增加,状态空间增加 以指数形式,几乎不可能分析涉及 不只是少数机器。幸运的是,似乎 仅需很小的配置即可发现错误。着名的 对Futurebus +缓存协议[C + 95]的分析,该协议可能标记为 模型检查的行业声誉的转折点是 最多可以执行8个处理器和3个总线。报告的缺陷, 但是,可以用最多涉及 3个处理器和2个总线。
答案 1 :(得分:1)
From my understanding of what is meant by falsification, yes, Alloy does it.
It becomes quite apparent when you look at the motivation behind the creation of Alloy, as forumalted in the Software Abstraction book:
This book is the result of a 10-year effort to bridge this gap, to develop a language (Alloy) that captures the essence of software abstractions simply and succinctly, with an analysis that is fully automatic, and can expose the subtlest of flaws.