没有合适的资源?快使用搜索试试~ 我知道了~
可在www.sciencedirect.com在线获取理论计算机科学电子笔记296(2013)95-105www.elsevier.com/locate/entcsSpinS:扩展LTSmin通过SpinJaFreark van der Berg1 Alfons Laarman2形式方法与工具,荷兰摘要我们展示了如何P罗梅拉可以支持的高性能通用模型检查LTSm的中。Spin模型检验器的成功使PROMELA成为一种重要的建模语言。SpI nJa是作为SpI n的Java实现创建的,旨在使模型检查器易于扩展和重用,同时保持其某些效率。虽然这些目标都达到了,但SpI nJa的缺点仍然是它对Java的依赖性,使性能降低了5倍,并阻碍了支持用于在PRO mELA模型中嵌入C代码LTSmI n旨在通过定义通用分段Next-S状态来实现语言独立性接口(p I ns)。 该工具集已经表明,通用模型检查器在以下方面确实具有竞争力:通过支持来自不同范例的几种语言和实现许多与其他最先进的模型检查器竞争的我们扩展了SpI nJa以发出实现pI ns接口的C代码。我们的新版本SpI nJa,称为SpI nS(SpI n+pI ns),还改进了对PRO mELA的支持,大大扩展了对玩具和学术示例之外的模型的支持。在本文中,我们展示了LTSmI n跟踪、偏序约简(POR)、状态压缩、使用(多核)决策图的符号可达性和分布式可达性。我们的实验表明,这些方法的性能优于其他领先的模型检查器。关键词:模型检测,SpI n,LTSmI n,SpI nJa,PROMELA,多核,LTL,状态压缩,符号,决策图,分布式,偏序约简1一种新的用于LTSmin的Promela前端:SpinS历史上,Promela(过程语言)被创建用于指定软件制度SpIn模型检验器[7]。 通过生成优化的C代码,Promela模型,SpI n已经成为一个高效的模型检查器,甚至支持嵌入式C代码,以便将模型程序轻松转换为Promela。然而,由于许多优化,SpI n也难以扩展。 因此,在Spin之外支持Promela。例如,nI ps[19]定义了1电子邮件:f.i. student.utwente.nl2电子邮件:a.w. cs.utwente.nl1571-0661 © 2013由Elsevier B. V.出版,CC BY-NC-ND许可下开放获取。http://dx.doi.org/10.1016/j.entcs.2013.07.00796F. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)95| |编译Promela的虚拟机语言;SpI nJa[9]基本上是Java中SpI nLTSmI n[3,14]是一个独立于语言的模型检查工具集。通过其pI ns接口,它用状态向量格式和下一状态函数抽象出语言特定的功能同时,它通过依赖矩阵以局部信息的形式暴露内部结构:定义1.1p I ns [2]定义了状态向量格式S,S0,S1,...,s na固定数量的n个槽和固定的域si,初始状态和分区的下一状态函数:InI al():S和下一状态k(S):S,以及记录转换和槽之间的读/写依赖关系的依赖关系矩阵Dk×n在过去,我们已经表明,这种局部性信息可以产生大(秩序的幅度)性能增益,特别是对于LTSm in为了在我们的枚举可达性和LTL模型检查工具中额外启用POR,添加了其他几个矩阵:maybe-coenabled,必要的禁用和必要的启用集[16],后两个是可选的,以获得更好的约简。虽然对依赖矩阵的依赖性较低,但LTSm inLTSmI n已经通过nI ps连接支持Promela的一个子集。为了实现更广泛和高性能的Promela支持,我们创建了SpI nS;一个修改和扩展版本的SpI nJa,它生成实现pI ns接口。 Sp I nS包含在LTSm I n分布中。3Promela-专用属性,如断言违反,(在)有效的结束状态和从不声明被导出为pI ns状态和转换标签(不在定义1.1中),以支持LTSmI n。这使得所有的分析算法在LTSm中的全部权力,如下节所示。此外,Sp I nS扩展了Sp I nJa许多新功能:支持条件(#if,#ifdef等)的预处理器,参数定义(#define和inline)和包含(#include),通道操作(empty,full等),用户定义的结构(typedef),预定义的变量(_pid和_nr_pr),通道轮询和随机接收(?[]而?)、远程引用(@)和许多其他Promela结构。[4]因此,我们能够第一次处理以下章节中使用的模型。Promela是一种扩展和不断发展的语言,因此尚未完全支持。最重要但仍然缺乏的功能(在Promela案例研究中实际使用的功能)是:超时,通道缓冲器中的用户定义结构/通道和间接通道引用。3的 LTSmI n网址:http://fmt.cs.utwente.nl/tools/ltsmin4一般参见:http://spinroot.com/spin/Man/promela.htmlF. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)9597我2使用SpinSPromela模型M包含通道声明(C)、全局变量声明(V G)和至少一个包含要执行的语句和局部变量声明的proctype定义(P):PP,C,VG,v0),其中v0是VG的初始估值。Proctypes通过active[N]指令实例化N次,或者通过run语句动态实例化。此外:定义2.1[变量、通道和动作] V是具有有限域Dom(V)的(全局和局部)变量的有限集合,C是通道的有限集合,A是形式为' V = E '(赋值),' E '(保护),' c? “C!” (c通道同步),其中c∈ C,E是一个表达式。表达式包括布尔/算术运算符,但也包括运算,例如:运行.它们被解析为抽象语法树(AST),但在这里我们只是在单括号中编写代码,AST变量以斜体显示。动作a具有使能条件(en(A):E),例如:en(<定义2.2[过程自动机(PA)]过程自动机是一个五元组的P(LP, TP, VP, l0P, v0P),其中LP是有限的程序逻辑集,VP是局部变量集,TP<$LP×A<$×LP是变迁集,l0P∈LP是初始逻辑,v0P∈Dm(V)|VP|最初的可变值。对于一个动作序列A∈ A <$A <$A <$<$A0,.. . 因此,我们支持原子d_steps;如果a0是,则A被启用,因此:en(A)=en(a0)。下面的小节描述了我们的Promela语义的pI ns实现(参见4)。自动生成。首先,Promela代码被解析为M。每个过程类型都是一个PAP,动作是一个转换,条件(“if. . . fi' ∈ A)是一些分支和环('do.. . od’∈ Anever声明也被解析为PAN. 然后,Sp I nS通过复制P(及其局部变量)用于每个可能的实例化i.状态向量创建。 在这个阶段,可以创建状态向量。 在在Promela语义模型中,全局系统状态由以下值组成所有proctype实例的局部变量和进程计数器,全局变量系统状态可以很容易地映射到PINS状态向量S:V,LI1,V I1,...,通过将附加的程序计数器pc(Ii)添加到ac(I i),对所有I个实例自动机Ii进行Commodate L I i。b的实现方式为:bnv0,l0I1,v0I1, . ,l0II,v0I II。伊尼蒂阿尔实际上,V并不是一个可重写的结构,但可能包含用户定义的类型,Nel缓冲剂及其组合。我们的状态向量实现S反映了这个结构,并用于在最后一步生成C结构因此,在生成代码时可以符号化地引用变量,例如:print(s,x)=“s.init[0].x“,其中s:S是name(s)=“s“的状态向量,x∈VI0是一个局部变量,name(x)=While print(s,pc(I0))=“s.init[0].pc“;“pc“是pc(I 0)的保留名称。为了遵循pI ns接口,我们需要修复I。因此,SpI nS提示用户为每个动态系统提供固定数量的最大过程实例MP98F. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)95| |我不是T× A ×我我∈不∈∈L|不|cally启动了proctype。为了修复si,所有变量都使用编译器指令填充到整数的大小。 正如我们的性能和内存基准测试所显示的那样,引入的开销被p i ns减轻了(第2. 4)。秒图3显示了如何在模型中对MP进行编码。模型转换创建。all中的所有转换的集合表示由Promela模型实现的异步系统,模通道同步。 因此,接下来,我们将其转换为一组同步转换:j2L <$2L。为此,所有通道发送操作都被同步对所有可能的同步伙伴:TJ:={({l1,l3},nA,Bn,{l2,l4})|(l1,A,l2)∈T I1<$(l3,B,l4)∈TI2<$' c !' ∈A' c ? ' ∈B <$c∈ C<$I1/=I2} 。 5 不 同 步 。 复 制 操 作 : TJ :=TJ{({l1},A,{l2})|(l1,A,l2)∈T ∧∀c∈C:' c ?' /∈A' c!' /∈A}。如果存在一个never声明,则还计算TJ{(L1<${l3},A,B<$,L3<${l4})|(L1,A,L2)∈ T J<$(l3,B,l4)∈ T N}.我们用动作和位置保护来修饰T∈TJ,其中T∈(L1,A,L2):en(T) =en(A)<${' p == l I i' |lIi∈L1<$p=pc(Ii)}. 我们还为位置传递函数增加了分配作用:ac t(T) =A{'p=lIi'|lIi∈L2<$p=pc(Ii)}. 操作被替换为其他操作,例如::'run(p)' b e comes ' s.p _ i。pc=10Ii s. t. name(i)=“p“,并且i是要通过附加(先前)动作来确定的非活动实例。C代码生成T iJ成为我们的分区下一状态函数的蓝图,其中k =J。Alg. 1显示了下一状态i(S)函数的C代码。方括号包含代码生成模板。print函数生成表达式e en(Ti)和C语句的合取,用于actions aact(Ti)。同样,它由状态向量参数化为下一状态i的算法1C代码模板1 public int findDuplicate(){2if([print(in,en(Ti))]){3S out = in;//copy4[print(out,act(Ti))]5返回;第六章用于可变打印(in:S或out:S)。 由于Promela语句类似于C,因此print的实现很简单。依赖矩阵。 对于D k×n,我们遍历AST en(T)和act(T),T∈ TJ; POR依赖矩阵需要一些额外的分析。在这个简短的解释中,我们只考虑了会合通道,并脱离了原子态和接受状态标签。被缓冲的通道只需要一些处理缓冲器簿记的操作。接受状态通过添加N作为pI ns状态标签导出(不在定义1.1中)。最后,原子状态(包括原子性的丢失和转移)使用内部(生成的)可达性算法实现,该算法仅限于特定的流程实例。5P RO m ELA的 语 义 约 束 只 允 许每 个 转 换 有 一 个 通 道 动 作 : 第 一 个 。F. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)9599P¬⇒3在Promela模型spins命令调用SpI nS生成C代码,并将结果编译为.prom库实现了p I ns接口。 系统会提示用户为每个动态proctype提供固定数量的最大实例(上一节中的MP)。这些信息也可以通过宏定义在模型中编码:#defineinstances_[proctype] [num]。 在许多情况下,实例化进程的数量可以静态推断[2,Def.5],但我们还没有实现这一点。在本文中,我们从SpI n分布[17]和数据库 6 中编译了以下一组模型:BRP,GARP,Needham,I-protocol,Snoopy,SMCS,Chappe和x509是协议模型,DBM,Phils,Peterson,pXXX,Bakery.7,Lynch,Chain和Sort是学术示例,FGS,Zune,Elevator2.3和Relay是控制器模型。X509包含一个断言错误(Done 6<),Zune在LTL中从不声明表达Q(@SQ@E)。我们使用了GARP协议的两个模型:GARP 16和GARP 2,它们尚未公开[10]。我们证实,我们的工具确实正确地探索了所有这些模型(见第二节)。4)。为此,在某些情况下,我们不得不将控制流优化(-o3)转向,这是由于其在SpI nS中的有限实现。以下小节介绍了使用LTSmI n对这些模型的不同验证策略,并给出了所用算法的一些背景Prom E la-specific properties的模型检查。以下命令使用顺序工具来检测断言冲突(--action=assert):prom2lts-seq --action=assert --trace=trace.gcf X.509.prm.prom第一个错误跟踪被写入trace.gcf,其中包含原始Promela代码中的行号,并且可以使用命令ltsmin-printtrace打印出来。类似地,可以使用-d选项检测死锁。Never claim violations可以通过NDFS算法检测到[11]:prom2lts-mc --strategy=ndfs --trace=lasso.gcf zune.pml.prom使用以下命令可以最好地检查典型的套索形成的错误轨迹ltsmin-tracepp --table lasso.gcf|小于S。多核模型检测。 其中一个领域,LTSm IN n擅长的是并行模型检查。对于安全属性(死锁、不变量和断言违反),我们可以在多核工具中以随机(-prr)伪深度优先(dfs)顺序启用并行探索:prom2lts-mc --threads=48 --strategy=dfs -prr -d smcs.pml.prom虽然我们的并行探索算法倾向于为完全验证产生线性加速比[13,15],但在存在反例的情况下,随机dfs顺序可能会产生超线性加速比[12]。对于并行LTL模型检查,我们可以使用我们最新和最好的多核NDFS算法CNDFS [6]。虽然该算法本质上是启发式的,但我们发现,在大量(超过400个)示例中,它的扩展性相当好,即,10到48的加速6 PRO mELA数据库:http://www.albertolluch.com/research/promelamodels100F. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)9544··4··在48核的机器上它优于我们以前的最佳算法[12]。以下命令行使用此算法(在此设置中自动启用随机化):prom2lts-mc --threads=48 --strategy=cndfs zune.pml.prom由于CNDFS是实时的,我们也可以在存在错误的情况下获得超线性加速[12,Sec. 4]。记忆效率模型检验。通过 默认情况下,LTSmI n使用 的选项--state=tree以二叉树形式将状态存储在单个散列表中,该散列表包含32位引用的元组(有关详细信息,请参阅[15])。树压缩可以产生2个引用(8字节)的最佳压缩状态大小,同时保持未压缩哈希表存储的出色性能和可扩展性[13](--state=table)。最近,我们对树进行了一些优化。通过将表一分为二,一个用于根节点,一个用于内部节点,我们可以容纳超过232个状态(-s32),同时保持每个状态8字节的最佳压缩比!默认情况下,根表比inter-table表大4倍。nal节点表(--ratio=2),允许使用118B234 =160 GB。更高的比率允许我们存储更多的状态,例如:-s35 --ratio=3(注意内部节点表如何保持大小为235/23= 232,从而支持32位内部引用,因此支持8字节的最佳压缩大小)。通常,输入模型是表现出高局部性的异步系统,即, 所有转换仅读取/写入状态向量中的少数变量。所得到的状态向量的组合空间通常产生几乎每个状态8字节的接近最优的树压缩。但是,某些模型可能产生更差的压缩,则LTSmI n给出错误节点表满。在这种情况下,我们需要降低比率,例如,--ratio=1(ratio= 21= 2),将压缩大小增加到每个状态12字节到 进一步 改进压缩, 我们 组合 的 树 表 与COM-契约散列。紧凑哈希表只存储密钥对哈希位置取模。后者可以使用三个额外的会计重建位[18]。通过用我们的无锁Cleary表[18]替换树表的根,压缩后的大小接近每个状态4字节。例如,选项--state=cleary-tree -s34 --ratio=2允许我们仅在(18B +4 B)234 = 96 GB,条件是该模型表现出接近最佳的11的压缩比。超过一半的350个不同的模型[17]表现出这一点[15,图中的中位数7]。我们所有的压缩技术都与LTL和安全属性的算法兼容从广义上讲,偏序约简(POR)可以进一步减少状态空间(--por)。我们的POR方法使用了独立于语言的依赖概念关系表示为过渡警卫,并通过PINS基质,基质ces [16]。POR与我们的(多核)安全特性算法完全兼容(--strategy=[bfs,dfs,sbfs];伪bfs/dfs和[4]中描述的严格bfs顺序)。 然而,LTL模型检查需要:(1)使用循环但书[ 16][17][18][19][19][1 4.6.4-6]),(2)顺序工具(prom 2lts-seq),因为我们还没有找到一种方法将循环条件与我们的并行LTL算法相结合,以及(3)由LTSmI nF. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)95101(选项--ltl=[公式]),以便可以记录与不可见性但书相关的行动[16,第16节]。4.6.3]。符号模型检查。工具prom 2lts-sym实现了符号模型检查,在后台学习符号转换关系[2]。这种方法也适用于具有高局部性的模型。由于这些模型具有稀疏的pIns依赖矩阵,因此我们的重新排序算法(-rga)可以进一步优化它们以用于BDD。使用链启发式[3],我们可以在一秒钟内探索>1020个状态:prom 2lts-sym-rga --order=chain peterson5.promLTSmI n还实现了并行探测[5]和饱和探测(参见--saturation的文档)。此外,符号工具可以验证μ演算(参见--mu)和CTL(参见--ctl)中表示的属性。分布式模型检查。 工具prom 2lts-dist支持状态空间的分布式探索和存储[3]。状态空间是分布式存储的,可以使用ltsmin-reduce-dist进行模互模拟约简。4性能、可扩展性、内存和正确性到 比较 的 性能 的Promela模型 跳棋, 我们以在48核机器(一个四路AMD)上的SpI n6.2.1 [8]和LTSmI n2.03 [14]OpteronTM 6168)。每次我们都包括一个边界模型[17],以便与DI VI nE2.5.2[1]进行比较。我们在这里展示一个有代表性的选择。7性能和可扩展性。为 高 性能 在 SpI n, 我们来-具有并行BFS的堆叠模型[8]:- DNOBOUNDWARE-DSAFETY-DNOREDUCE-DBFS_PAR -DBFS_MAXPROCS=48。默认情况下,这会启用有损哈希压缩(hc)状态存储,因此我们也使用-DNOHC进行编译。DI VI nE的保密性如[13]中所述。在LTSmI n中,我们使用了哈希表,树表和cleary-tree(所有无损)。所有实验都使用固定的表大小228。为了容纳主线程,Sp_ in和Di_ V_IN_E被限制为47个线程。图1显示了获得的加速比。虽然LTSmI n中的加速效果不错,但我们在表1中还观察到,顺序运行时与SpI n中的运行时相当。48核运行时表明,LTSmI n此外,我们可以看到(Cleary-)树压缩引入很少或没有开销。7有关完整结果,请访问http://fmt.cs.utwente.nl/tools/ltsmin/pdmc-2012表1SpI n(hc/nohc)、DIVI nE和LTSmI n(表、树和清除树)中的运行时间(秒)国SpI n-hcSPI n-nohcDI VInELTSmI n-表LTSmI n-树LTSmI n-清除147147147148148148GARP 11.6e8458.043.4820.0295.0n/an/a187.95.3175.84.6196.95.1面包店72.7e766.06.3169.038.432.29.052.01.860.01.769.42.0彼得森49.5e623.12.656.918.3n/an/a29.61.222.30.826.90.9102F. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)95●●●●●ltsmin-cleary-treeltsmin−tableltsmin−treespin−hcspin-nohc●●●●●●●神桌ltsmin-cleary-treeltsmin-tableltsmin-tree spin-hcspin-nohc●●● ●●●●加速比加速比40 40 4030 30 3020 20 2010 10 1000 10 20 30 40 50线程00 10 20 30 40 50线程00 10 20 30 40 50线程图1.一、GARP 1、Bakery.7和Peterson 4在SpI n、DIVI nE和LTSmI n中的加速表2SpI n、Di VI nE和LTSmI n中的内存使用(MB)几乎与线程数无关SpI n-hcSPI n-nohccolDI VInELTSm I n-表 LTSmI n-treeLTSmI n-cleary1 47 1 47 1 1 47 1 48 1 48 1 48GARP 1 1.5e4 1.6e4 1.4e5 1.4e54.9e4不适用n/a8.7e3 8.8e3 1.1e3 1.3e39.0e2 1.1e3Bakery.7 1.3e4 1.5e4 9.0e4 6.0e4 6.4e3 4.8e3 4.9e3 2.8e3 2.9e3 4.0e2 4.2e22.5e2 2.8e2彼得森4 5.7e3 6.2e3 4.4e4 2.5e45.5e3不适用n/a1.3e3 1.3e3 1.5e2 1.6e21.0e2图图2显示了两个模型的加速比用DI VI nE的Back ( PB ) 算 法 [8] ( 具 有 散 列 压 缩 ) 和LTSm in CNDFS显示了最佳的加速比,并且比PB算法(60%)更快,后者在加速比方面排名第二。当比较这三种算法时,其他三个方面 是 感 兴 趣 的 : CNDFS/OWCTY 是 精 确 的LTL算法,而PB可能会错过反例[8],CNDFS是连续的,而PB在报告前探索整个状态空间。30201000 10 20 30 40 50线程图2:Peterson 4(QQp),El-evator 2.3 [8](加速)[10][11][12][13][14][15][16][17][18][19]4.2],并且发现CNDFS返回比基于并行BFS的算法更短的反例[6,Sec. 4.3]!另一方面,基于BFS的算法owcty和PB可以分布在集群上,如DI VI nE所示[1]。内存使用。 我们测量了具有和不具有树压缩的DI V I n E、LTSm I n以及具有和不具有折叠压缩(col)和散列压缩的Sp i n的存储器使用。表2显示了所有这些组合的内存使用情况。我们注意到的第一件事是,内存使用几乎独立于线程的数量,表明模型检查器为并行操作。SpI n大小以精确拟合状态计数,因此高估了最多50%。然而,我们可以得出结论,树压缩提供了很大的减少相比,全状态存储在一个哈希表,使有损哈希压缩冗余。和●ltsmin-cleary-treeltsmin−tableltsmin−treespin−hcspin-nohc●●●●●●●加速比●elevelev●●●●ndfsbson4−cson4−p彼得彼得ator2.3−owctyator2.3−pbelevator2.3−cndfs传奇加速比F. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)95103···表3LTSmI n和SpI n中的POR性能无PORLTSmI n PORSpI n POR模型国过渡国过渡国过渡GARP 148,363,145247,135,8691,742,5853,669,8908,718,20922,412,803i-protocol214,309,42748,024,0482,308,8984,585,5303,436,1667,778,563BRP3,280,2697,058,5563,280,2697,058,5561,906,6912,733,018排序659,6833,454,988123,583170,134182182史努比81,013273,7819,25111,63913,38018,550X.5099,02835,9995,56912,7876,09412,336SMCs5,06619,4701,4252,7841,2442,134沙佩1,2033,0173634661,2033,018cleary-tree在此基础上改进了几乎两倍。在[15]中,我们详细比较了压缩方法。我们在表3中看到,LTSm in然而,在这方面,特别是对于排序模型,Spin产生更好的约简。我们将此归因于它在模型中使用了额外的xs和xr注释象征性的结果。使用我们的符号工具,我们详尽地探索了GARP 2模型[10]。除了有损压缩技术之外,这个模型以前从未用SpI n进行过充分的研究。通过重新分组和链接,我们可以在3分钟内探索模型,仅使用250MB的内存。3 1011个州对于有30位哲学家就餐的菲尔斯模型,我们得到7。8 1020状态在0.18秒和39MB。 大约需要一分钟的时间来探索8。3 108个州的彼得森5只使用36 MB。然而,对于许多其他具有较少局部性的模型,运行时和内存使用量可能会急剧增加,因为许多小操作需要在大型BDD上执行。正确性。为了确保Promela语义实现的正确性,我们验证了本文讨论的所有模型的状态、转换和死锁计数与Sp in报告的计数完全相同。我们还检查了LTSmin报告相同的(LTL)反例。我们还发现并排除了一些在LTSmI n中产生不同状态计数的模型,然而这些模型仅与关于原子性丢失和从原子语句跳转到原子值得注意的例子包括蒸汽发生器控制器的模型,以及PLC和GIOP协议。65结论我们介绍了SpI nS:处理Promela的LTSmI n工具集的新前端模型我们演示了LTSmI n的许多功能如何可以被扩展,实验表明,该算法对Promela模型的模型检测性能有很大的提高:通过C代码生成,其性能与SpI n的性能相当,可达性的可扩展性优于Sp i n的最新并行BFS算法,树压缩比折叠压缩减少了5倍的内存使用,并保持了性能,POR可以与Sp i n的POR竞争,精确可104F. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)95并行LTL首次可用于Promela,我们能够完全验证一个以前无法由SpI n处理的模型。但是SpinS为更好的模型检查打开了更多的视角通过选择C语言作为目标,我们可以很容易地添加对Promela的嵌入式C代码的支持(由于缺乏示例模型,到目前为止我们还不能这样此外,通过在Java 8 中重新实现Promela例如,我们认为SpinS可以很容易地支持Holzmann提出的更灵活的流程创建方法。[9]然而,对于当前版本,我们的目标是实现尽可能接近Sp i n的Promela确认特别感谢Elwin Pater实现了LTSmI n埃尔文还致力于SpI n和LTSmI n之间的直接连接,他放弃了,只是因为支持pI ns矩阵无论如何都需要重新实现SpI n我们还感谢迈克尔·韦伯他的思想和努力奠定了LTSM的现状的基础。我们感谢StefanBlom为我们的分布式和符号后端所做的工作。最后,Jaco van de Pol为μCRL/mCRL 2前端做出了贡献,并与Jeroen Ketema一起为符号后端做出了重大贡献。雅科还评论了这篇论文的早期版本。引用[1] 巴纳特湖Brim,M.Češka,and P. Ročkai.并行分布式模型。并行/分布式方法在验证高性能计算系统生物学(HiBi/PDMC 2010),第4-7页。IEEE,2010年。[2] S.C.C.布卢姆,J.C. van de Pol和M.韦伯弥合枚举和符号模型标记之间的差距。技术报告TR-CTIT-09-30,特温特大学,2009年。[3] S.C.C. 布卢姆,J.C.van de Pol和M.韦伯LTSmin:分布式和符号可达性。在T.图伊利湾Cook和P. Jackson编辑,CAV斯普林格。[4] A.E. Dalsgaard,A.W. Laarman,K.G. Larsen,M.Chr. Olesen和J.C. Pol.时间自动机的多核可达性。In M. Jurdzienski和D. Ničković,editors,FORMATSSpringer,2012.[5] T. van Dijk,A.W. Laarman和J.C. van de Pol.符号可达性的多核BDD操作。在PDMCSpringer,2012.[6] S. Evangelista,A.W.拉尔曼湖Petrucci和J.C.改进的多核嵌套深度优先搜索。In S. Ramesh,编辑,ATVASpringer,2012.[7] G.J. Holzmann SPIN Model EQUIPMENT:Primer and Reference Manual(SPIN ModelEQUIPMENT:Primer and Reference Manual) Addison-Wesley,2011.[8] G.J. Holzmann优化自旋模型检查器。以. Donaldson和D. Parker,编辑,SPINSpringer,2012.8回想一下,SpI nS基于SpI nJa,但生成C代码而不是Java代码。9SP I n模型检查项目: http://spinroot.com/spin/projects.htmlF. vanderBerg,A.Laarman/Electronic Notes in Theoretical Computer Science 296(2013)95105[9] M. de Jonge和T.鲁伊斯SpinJa模型 在j.van de Pol和M.韦伯,编辑,SPINSpringer,2010.[10] I. 孔诺夫 和O.A. 小莱蒂切夫斯基使用Spin和VRS对GARP协议进行模型自动机,算法和信息技术国际研讨会,2010年5月[11] A.W.拉尔曼河Langerak,J.C. van de Pol,M. Weber和A. Wijs。多核嵌套深度优先搜索。于T. Bultan和P.A. Hsiung,编辑,ATVA斯普林格。[12] A.W. Laarman 和 J.C. van de Pol. Variations on Multi-Core Nested Depth-First Search. Barnat 和K.Heljanko,编辑,PDMC,EPTCS第72卷,第13-28页,2011年[13] A.W. Laarman,J.C. van de Pol和M.韦伯使用共享哈希表提升多核可达性性能。在N. Sharygina和R.Bloem,editors,Proceedings of the 10th International Conference on Formal Methods in Computer-AidedDesign,Lugano,Swiss,USA,October 2010. IEEE计算机协会。[14] A.W. Laarman,J.C. van de Pol和M.韦伯多核LTSmin:将模块化和可扩展性结合在一起。In M.博巴鲁湾Havelund,G. Holzmann和R. Joshi,编辑,NASA形式方法,LNCS第6617卷,第506-511页,柏林,2011年7月斯普林格。[15] A.W. Laarman,J.C. van de Pol和M. 韦伯并行递归状态压缩免费。 在A. Groce和M. Musuvathi,editors,SPIN施普林格,2011年。[16] E.父亲 PINS的部分阶约简,硕士论文,特温特大学,2011年。[17] R.佩拉内克BEEM:显式模型检查器的基准。在SPINSpringer,2007年。[18] S. van der Vegt和A.W.拉尔曼一种并行压缩哈希表。于T. Vojnar,编辑,MEMICS施普林格,2011年。[19] M. 韦伯一个 可嵌入 虚拟 机 为 状态空间 一代In D. 博什纳奇基和S. Edelkamp编辑,SPINSpringer,2007年。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 保险服务门店新年工作计划PPT.pptx
- 车辆安全工作计划PPT.pptx
- ipqc工作总结PPT.pptx
- 车间员工上半年工作总结PPT.pptx
- 保险公司员工的工作总结PPT.pptx
- 报价工作总结PPT.pptx
- 冲压车间实习工作总结PPT.pptx
- ktv周工作总结PPT.pptx
- 保育院总务工作计划PPT.pptx
- xx年度现代教育技术工作总结PPT.pptx
- 出纳的年终总结PPT.pptx
- 贝贝班班级工作计划PPT.pptx
- 变电值班员技术个人工作总结PPT.pptx
- 大学生读书活动策划书PPT.pptx
- 财务出纳月工作总结PPT.pptx
- 大学生“三支一扶”服务期满工作总结(2)PPT.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功