现代模型检查器的近似最大状态空间大小是什么,例如NuSMV。 我不需要一个确切的数字,但需要一些州的大小值,其中运行时间仍然可以接受(比如说几周)。
除了符号模型检查之外,还使用了哪些改进来提高该限制?
答案 0 :(得分:2)
答案差异很大,取决于以下因素:
我会注意到一些相关的因素(我在下面使用“规范”作为“模型”的同义词),而不是提及某些特定数量的州:
符号或枚举:符号算法的比例与枚举算法的比例不同。此外,对于同样的问题,已知的符号和枚举算法的计算复杂性通常存在差异。
枚举在行为上是相对可预测的,因为具有N
状态的状态空间很可能比具有1000000 * N
状态的状态空间花费更短的时间进行枚举。
基于binary-decision diagrams(BDD)的符号方法的行为方式(几乎)与基于规范可达到的状态数无关。主要因素是规范编码中出现了什么样的布尔函数。
例如,涉及乘数的规范将导致表示状态的BDDs that are exponentially large in the number of bits,因此状态数的大小是线性的(假设可达状态的指数大于用于表示的位数)那些国家)。在这种情况下,具有2^50
状态的状态空间可能会受到符号分析的限制。
换句话说,不仅是状态的数量,而是系统动作对应的布尔函数的种类(TLA +中的动作对应于过渡关系在其他形式中表示的内容)。此外,选择不同的编码(按位整数)会对BDD大小产生影响。
Symmetry(例如,部分订单减少)和抽象是对更复杂系统分析的一些改进。
可接受的运行时是一个相对的概念。无论模型检查方法如何,模型的保真度都可以达到可用时间。
另一种方法是编写一个具有未指定参数的规范,然后使用模型检查器在规范实例中查找与小参数值相对应的错误,并在纠正这些错误后,使用定理证明器来确保正确性。规格。 TLA+的工具支持此方法,即模型检查器TLC和定理证明器TLAPS。
关于术语(上述“规范”),请参阅Leslie Lamport撰写的"What good is temporal logic?"。
另外值得注意的是,根据方法,状态数和可达状态数可以是不同的概念。通常,这在类型形式中很重要:我们可以指定一个具有1个可达状态的系统,但是声明导致更多状态的变量类型,其中大多数状态是从初始条件无法访问的。在符号方法中,这会影响编码,从而影响BDD的大小。
与州空间大小相关的参考:
Bwolen Yang,Randal E. Bryant,David R. O'Hallaron,Armin Biere,Olivier Coudert,Geert Janssen,Rajeev K. Ranjan,Fabio Somenzi,A performance study of BDD-based model checking,FMCAD,1998,DOI: 10.1007/3-540-49519-3_18
RadekPelánek,Properties of state spaces and their applications,STTT,2008,DOI:10.1007/s10009-008-0070-5(及相关的website)
RadekPelánek,Typical structural properties of state spaces,SPIN,2004,DOI:10.1007/978-3-540-24732-6_2
Yunja Choi,从NuSMV到SPIN:模型检查飞行指导系统的经验,FMSD,2007,DOI:10.1007/s10703-006-0027-9
J.R。 Burch,E.M。Clarke,K.L。麦克米兰,D.L。 Dill,L.J。Hwang,Symbolic model checking: 10^20 states and beyond,LICS,1990,DOI:10.1109/LICS.1990.113767