In model checking, when a given model fails to satisfy the desired specification, a typical model checker provides a counterexample that illustrates how the violation occurs. In general, there exist many diverse counterexamples that exhibit distinct violating behaviors, which the user may wish to examine before deciding how to repair the model. Unfortunately, obtaining this information is challenging in existing model checkers since (1) the number of counterexamples may be too large to enumerate one by one, and (2) many of these counterexamples are redundant, in that they describe the same type of violating behavior. In this paper, we propose a technique called counterexample classification. The goal of classification is to partition the space of all counterexamples into a finite set of counterexample classes, each of which describes a distinct type of violating behavior for the given specification. These classes are then presented as a summary of possible violating behaviors in the system, freeing the user from manually having to inspect or analyze numerous counterexamples to extract the same information. We have implemented a prototype of our technique on top of an existing formal modeling and verification tool, the Alloy Analyzer, and evaluated the effectiveness of the technique on case studies involving the well-known Needham-Schroeder protocol with promising results.
翻译:在模型检查中,当一个特定模型未能满足要求的规格时,典型的模型检查器提供了一个反示例,说明违规行为是如何发生的。一般来说,存在许多显示不同违规行为的反示例,用户在决定如何修复模型之前可能希望加以检查。不幸的是,在现有的模型检查器中,获得这一信息具有挑战性,因为(1) 反示例的数量可能太大,无法逐个地列出,(2) 其中许多反示例是多余的,因为它们描述的是同一类型的违规行为。在本文中,我们提出了一个称为反示例分类的技术。分类的目的是将所有对应示例的空间分成一组有限的反示例类别,其中每种类别都说明不同的违反特定规范的行为类型。这些类别随后作为系统中可能发生的违规行为的概要提出,使用户不必手动检查或分析许多反示例以提取同一信息。我们在现有的正式建模和核查工具Alloy Analyzer(All-Anarozer)上应用了我们技术的原型模型。