CN110489335B - 应用于自动售卖机系统的基于模型检测的反例精化系统 - Google Patents

应用于自动售卖机系统的基于模型检测的反例精化系统 Download PDF

Info

Publication number
CN110489335B
CN110489335B CN201910676758.XA CN201910676758A CN110489335B CN 110489335 B CN110489335 B CN 110489335B CN 201910676758 A CN201910676758 A CN 201910676758A CN 110489335 B CN110489335 B CN 110489335B
Authority
CN
China
Prior art keywords
path
event
events
paths
shortest
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910676758.XA
Other languages
English (en)
Other versions
CN110489335A (zh
Inventor
郭婧
刘尉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinling Institute of Technology
Original Assignee
Jinling Institute of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jinling Institute of Technology filed Critical Jinling Institute of Technology
Priority to CN201910676758.XA priority Critical patent/CN110489335B/zh
Publication of CN110489335A publication Critical patent/CN110489335A/zh
Application granted granted Critical
Publication of CN110489335B publication Critical patent/CN110489335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F9/00Details other than those peculiar to special kinds or types of apparatus
    • G07F9/006Details of the software used for the vending machines

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Control Of Vending Devices And Auxiliary Devices For Vending Devices (AREA)

Abstract

本发明公开了应用于自动售卖机系统的基于模型检测的反例精化系统,包含最短路径构建模块、最短路径事件处理模块、事件顺序检测模块、非最短路径事件处理模块,通过几个模块对反例集合的分类以及处理,使反例能够被分析事件本身以及事件之间顺序是否是待检测的性质在系统不成立的原因,并且需要精简反例集合,找出最短反例路径,并标注非最短反例路径与最短反例路径的不同,本发明提供的系统用于需要进行性质验证的系统,该系统经过模型检测产生不满足性质的反例路径集合,通过对反例路径集合的进一步处理能够将反例路径集合进一步精化,有助于后期分析系统不满足性质的原因,对现实中模型检测的系统有着很大的应用意义。

Description

应用于自动售卖机系统的基于模型检测的反例精化系统
技术领域
本发明涉及模型检验领域,涉及应用于自动售卖机系统的基于模型检测的反例精化系统。
背景技术
在模型检测过程中,经过验证会产生反例,反例往往反映了不满足规格(属性、待验证的性质)的路径,不仅仅说明了不满足该规格,还需要对反例进行分析,对反例进行分析可以分析不满足规格的原因,对系统进行改进,但是现实中产生的反例很繁琐,直接从该反例进行分析很难,因此,需要对反例进行进一步的处理,精化反例,缩小反例的范围,并对反例中包含的元素进行进一步的处理。
发明内容
本发明设计了应用于自动售卖机系统的基于模型检测的反例精化系统,包括最短路径构建模块、最短路径事件处理模块、事件顺序检测模块和非最短路径事件处理模块;
其中,所述最短路径构建模块负责从模型检测产生的反例集合中提取并构建自动售卖机系统模型的最短路径集合和非最短路径集合;
所述最短路径事件处理模块负责处理最短路径集合以及非最短路径集合,包括:检测最短路径集合中包含的每一条路径是否为非最短路径集合中任意一条路径的真子集,并且最短路径集合中包含的每一条路径中事件是否与非最短路径集合中任意一条路径中事件顺序一致;
所述事件顺序检测模块包括一个输入端口和一个输出端口,通过输入端口输入需要检测的路径集合,输出端口输出已标记过顺序相关的需要检测的路径集合,以对需要检测的路径集合中包含的事件标注其是否顺序相关;
所述非最短路径事件处理模块负责对非最短路径集合进行处理,包括:将非最短路径集合与最短路径集合中路径进行比较,并标记是否顺序相关,将符合条件的非最短路径加入到最短路径集合中,并对最短路径集合以及非最短路径集合进行更新。
系统执行如下步骤:
步骤1,所述最短路径构建模块对自动售卖机系统系统模型,得到最短路径集合Pd和非最短路径集合P′d
步骤2,所述最短路径事件处理模块对最短路径集合Pd和非最短路径集合P′d分别进行处理:所述最短路径事件处理模块依次从最短路径集合Pd取出其中包含的每条路径用于比较,设定取出的第k条路径表示为
Figure GDA0003937360160000021
依次为最短路径集合Pd中的路径顺序编号,k表示取出的路径在最短路径集合Pd中的编号,为正整数,取出时从编号k=1的最短路径开始,顺序递增取出,当取出一条路径时,同时将非最短路径集合P′d的所有路径依次取出与其进行比较,设从非最短路径集合P′d中取出比较的第n条路径为L′n,依次为最短路径集合Pd中的路径顺序编号,设n为从非最短路径集合P′d取出比较的路径的编号,取出时从编号n=1的最短路径开始,顺序递增取出;比较路径
Figure GDA0003937360160000022
与路径L'n,判断路径
Figure GDA0003937360160000023
是否为路径L'n的子集,并且路径L'n中事件是否与路径
Figure GDA0003937360160000024
中事件顺序一致;其中,k的值最大为最短路径集合Pd中包含的路径条数,n的值最大为非最短路径集合P′d中包含的路径条数;
步骤3,所述事件顺序检测模块通过输入端口输入需要检测的路径集合,需要检测的路径集合为最短路径集合Pd,将需要检测的路径集合中所有路径依次一一提取,设需要检测的路径集合中当前提取的路径为路径L1,先设定路径L1中包含的所有事件两两之间为顺序相关的,随后,将最短路径集合Pd中除了路径L1之外的路径分别一一提取,一一与路径L1进行比较,以判断路径L1中包含的事件之间是否顺序相关;
步骤4,所述非最短路径事件处理模块对非最短路径集合P′d进行检测,检测是否都满足下述两个条件:
条件1、检测非最短路径集合P′d中包含的每一条路径是否真包含最短路径集合Pd中任意两条以及两条以上路径,即最短路径集合Pd中任意一条路径中包含的事件都能在非最短路径集合P′d中的一条路径包含的事件中找到相同的事件,并且满足这个条件的两条路径中包含的事件不完全相同;
条件2、满足条件1的非最短路径集合P′d中的路径不包含除了本身以外的非最短路径集合P′d的其他路径,接着检测满足这两个条件的路径是否顺序相关,再进一步处理后,加入最短路径集合Pd
步骤1包括:
步骤1-1,最短路径构建模块对自动售卖机系统建立系统模型,将系统模型中所有路径提取出来,得到路径集合P;
步骤1-2,最短路径构建模块在系统模型之上进行模型检测,将路径集合P分为两类:反例集合P1和非反例集合P2,即P=P1∪P2;其中反例集合P1包含所有经由模型检测产生的反例路径,非反例集合P2则包含路径集合P中除了反例路径之外的所有其他路径;
步骤1-3,最短路径构建模块对反例集合P1中所有路径进行一一检测,检测其是否为最短路径,并且将反例集合P1中包含的所有最短路径加入到最短路径集合Pd中,将反例集合P1中除了最短路径之外的所有其他路径加入到非最短路径集合P′d中,即P1=Pd∪P′d
步骤1-3包括如下步骤:
步骤1-3-1,初始时最短路径集合Pd为空集,一一检测反例集合P1中的路径,设反例集合P1中正在检测的路径为当前检测路径,将反例集合P1中所述当前检测路径都与反例集合P1中除了当前检测路径之外的其他路径一一比较,检测当前检测路径是否包含反例集合P1中除了当前检测路径之外的任意一条路径,或者当前检测路径是否与反例集合P1中除了当前检测路径之外的任意一条路径完全一样,如果满足任一个条件,则当前检测路径不为最短路径,否则将当前检测路径加入到最短路径集合Pd中,将最短路径集合Pd中的路径一一设为当前检测路径进行检测,直到最短路径集合Pd中所有路径都经过检测。
步骤1-3-1中,检测当前检测路径是否包含反例集合P1中除了当前检测路径之外的任意一条路径,或者当前检测路径是否与反例集合P1中除了当前检测路径之外的任意一条路径完全一样的过程为:
步骤1-3-1-1,最短路径构建模块将反例集合P1中除了当前检测路径之外的每一条路径中包含的事件提取,提取到一个事件集合中,将提取的事件集合表示为Event_P(i),i为提取的路径在反例集合P1中的编号,反例集合P1中所有路径都从1开始顺序编号,编号为正整数,且大于等于1,将当前检测路径中包含的事件提取,提取的事件集合表示为Event_P(j),j为当前检测路径在反例集合P1中路径的编号,为正整数,并且j≠i;反例集合P1中路径的编号由用户按顺序编号,其中,Event_P表示事件集合,i,j为变量,i和j的值不断变化,由步骤1-3-1-2检测的过程决定,比较的是路径编号;
步骤1-3-1-2,对当前检测路径都进行判断过程,从i=1开始,j≠i,依次进行如下判断:
如果
Figure GDA0003937360160000041
表示事件集合Event_P(i)中的事件都在事件集合Event_P(j)中,并且Event_P(i)包含的事件个数小于Event_P(j)包含的事件个数,则判断当前检测路径包含了反例集合P1中除了当前检测路径之外的任意一条路径;
如果Event_P(i)=Event_P(j),表示事件集合Event_P(j)与事件集合Event_P(i)为同一个事件集合,这两个事件集合相等,并且Event_P(i)包含的事件个数等于Event_P(j)包含的事件个数,则判断当前检测路径等于反例集合P1中除了当前检测路径之外的任意一条路径;
如果当前检测路径包含了反例集合P1中除了当前检测路径之外的任意一条路径,或当前检测路径又等于反例集合P1中除了当前检测路径之外的任意一条路径,将当前检测路径作为非最短路径加入非最短路径集合P′d中;
步骤1-3-1-3,在步骤1-3-1-2中的判断完毕后,如果当前检测路径已作为非最短路径加入到非最短路径集合P′d中,则进行反例集合P1中的下一条路径判断,将i更新为i+1,当前检测路径为反例集合P1中编号为i的路径,如果i小于等于反例集合P1中路径的个数,继续进行步骤1-3-1-2判断过程;
当i大于反例集合P1中路径的个数,停止步骤1-3-1-2的判断过程,若此时停止判断过程时,当前检测路径不为非最短路径,则当前检测路径再作为最短路径加入到最短路径集合Pd中;取反例集合P1中下一条路径作为当前检测路径,重复步骤1-3-1-1,直到反例集合P1中所有路径都经过判断,得到最短路径集合Pd和非最短路径集合P′d
步骤2具体包括如下步骤:
步骤2-1,所述最短路径事件处理模块判断路径
Figure GDA0003937360160000042
中包含事件的数量是否小于等于路径L′n中包含的事件数量,判断的方法为:分别对路径
Figure GDA0003937360160000043
路径L'n中包含的事件进行计数,比较两者的数量大小,当路径
Figure GDA0003937360160000044
中包含事件的数量小于等于路径L'n中包含的事件数量,再执行步骤2-2,并且分别对路径
Figure GDA0003937360160000045
路径L'n中包含的事件进行编号,对路径
Figure GDA0003937360160000051
中事件编号的顺序为按照路径
Figure GDA0003937360160000052
中事件有序序列中事件先后顺序发生的顺序分别编号,则路径
Figure GDA0003937360160000053
中m个事件按时间发生先后顺序依次记为
Figure GDA0003937360160000054
m为路径
Figure GDA0003937360160000055
中包含的事件个数;对路径L'n中事件编号的顺序为按照路径L'n中事件有序序列中事件先后顺序发生的顺序分别编号,则路径L'n中l个事件按时间发生先后顺序依次记为
Figure GDA0003937360160000056
l为路径L'n中包含的事件个数;其中,m≤l;
步骤2-2,最短路径事件处理模块从路径
Figure GDA0003937360160000057
中的事件有序序列中先后顺序提取其中的事件,即按顺序提取
Figure GDA0003937360160000058
表示的事件,依次在路径L'n中寻找与路径
Figure GDA0003937360160000059
中包含的事件相同的事件,如果能在路径L'n中寻找到所有与路径
Figure GDA00039373601600000510
中包含的事件相同的事件,再进行提取,提取的顺序为按照事件
Figure GDA00039373601600000511
的顺序提取相应的事件,提取其代表的事件在路径L'n中的编号,按照提取的顺序组成编号序列,把编号序列的下标提取,组成下标序列,下标序列中所有下标必须满足升序排列的条件,则路径
Figure GDA00039373601600000512
为路径L'n的子集,并且路径L'n中事件与路径
Figure GDA00039373601600000513
中事件顺序一致,继续步骤2-3,如果不能在路径L'n中寻找到所有与路径
Figure GDA00039373601600000514
中包含的事件相同的事件,则直接执行步骤3;
步骤2-3,如果路径
Figure GDA00039373601600000515
为路径L'n的子集,并且路径L'n中事件与路径
Figure GDA00039373601600000516
中事件顺序一致,所述最短路径事件处理模块将路径
Figure GDA00039373601600000517
中包含的事件提取到事件有序集合OE1中,同时将路径L'n中包含事件提取到事件有序集合OE2中,将事件有序集合OE2与一个布尔事件集合Bn对应,布尔事件集合Bn包含l个布尔事件,第一个至第l个布尔事件依次记为
Figure GDA00039373601600000518
布尔事件
Figure GDA00039373601600000519
只有true、false两个值,用以表示路径L'n中包含的对应事件是否被包含在路径
Figure GDA00039373601600000520
中;布尔事件
Figure GDA00039373601600000521
的所有值初始被设置为真值true,布尔事件
Figure GDA00039373601600000522
分别与路径L'n中的事件
Figure GDA00039373601600000523
一一对应,即第一个布尔事件
Figure GDA00039373601600000524
与第一个事件
Figure GDA00039373601600000525
相对应,当布尔事件
Figure GDA00039373601600000526
的值为true,表示路径L'n中包含的第一个事件
Figure GDA00039373601600000527
被包含在路径
Figure GDA00039373601600000528
中,当布尔事件
Figure GDA00039373601600000529
的值为false,表示路径L'n中包含的第一个事件
Figure GDA00039373601600000530
不被包含在路径
Figure GDA00039373601600000531
中;依次类推,第l个布尔事件
Figure GDA00039373601600000532
与第l个事件
Figure GDA00039373601600000533
相对应,当布尔事件
Figure GDA00039373601600000534
的值为true,表示路径L'n中包含的第l个事件
Figure GDA00039373601600000535
被包含在路径
Figure GDA00039373601600000536
中,当布尔事件
Figure GDA00039373601600000537
的值为false,表示路径L'n中包含的第l个事件
Figure GDA00039373601600000538
不被包含在路径
Figure GDA00039373601600000539
中,即布尔事件与路径L'n中被编号的事件的下标相等,则两者存在对应关系;为将在事件有序集合OE2而不在事件有序集合OE1中的事件对应的布尔事件的值设置为假值false,与被设置为false的布尔事件下标相同的在路径L'n中的事件取反,路径L'n中包含的事件在事件有序集合OE2中而不在事件有序集合OE1中的事件取反,得到的路径命名为
Figure GDA0003937360160000061
并建立路径对
Figure GDA0003937360160000062
其中,事件有序集合为事件按其发生时间先后顺序排列的事件集合,B表示事件集合,b表示布尔事件。
步骤3包括如下步骤:
步骤3-1,所述事件顺序检测模块从需要检测的路径集合即所述最短路径集合Pd中一一提取路径进行比较,设当前提取的路径为L1,接着,从所述最短路径集合Pd中一一提取除了路径L1以外的路径以进行比较,设所述最短路径集合Pd中提取的与路径L1进行比较的路径为L2,根据每次提取比较的路径不同,L2代表的路径也不同,将路径L1中包含的事件提取到事件有序集合OE3,同时将路径L2中包含的事件提取到事件有序集合OE4,在事件有序集合OE3、事件有序集合OE4中的事件按照事件发生的时间先后顺序排列,对比事件有序集合OE3、事件有序集合OE4中的事件是否完全相等并且排列的顺序也完全一致,如果是,则路径L1、路径L2为同一条路径,将路径L2从最短路径集合Pd中去除;
步骤3-2,比较事件有序集合OE3与事件有序集合OE4中包含的事件,把相同的事件分别提取到事件有序集合OE8以及事件有序集合OE9中,其中,事件有序集合OE8中事件排列的顺序与事件有序集合OE3中相同事件排列的顺序一致,事件有序集合OE9中事件排列的顺序与事件有序集合OE4中相同事件排列的顺序一致;从事件有序集合OE8提取所有事件有序对,为每一个事件有序对配对一个顺序标签,顺序标签为一个布尔变量,当顺序标签的值为真值true,表示其配对的事件有序对为顺序相关的,当顺序标签的值为假值false,表示其配对的事件有序对不是顺序相关的;初始时,置所有的顺序标签为真值true,具体过程如下:
所述事件有序对包含事件一、事件二,事件有序对被表示为<Event1,Event2>,表示事件一发生在事件二之前,其中事件一被表示为Event1,事件二被表示为Event2;Event1、Event2同时表示事件变量,用于代表不同的事件;从事件有序集合OE8中按照其中排列的先后顺序依次提取一个事件到Event1,提取后再从事件有序集合OE8中排列在事件Event1后的事件中依次提取一个事件到Event2,完成一个事件有序对<Event1,Event2>后,从事件有序集合OE9按照事件排列先后的顺序寻找与Event2代表的事件相同的事件,其后,在事件有序集合OE9中寻找排列Event2代表事件相同的事件,如果找到后,并且Event1代表相同的事件在事件有序集合OE9中排列在与Event2代表事件相同的事件之后,如果相等,置事件有序对<Event1,Event2>配对的顺序标签的值为假值false;
步骤3-3,对需要检测的路径集合中所有路径都进行步骤3-1~步骤3-2,直到所有路径都被检测是否顺序相关。
步骤4包括如下步骤:
步骤4-1,非最短路径事件处理模块从非最短路径集合P′d中一一提取路径,设置当前从非最短路径集合P′d中提取的路径为L3,L3代表当前提取的路径,其代表的路径是不断变化的,并设置计数器C,计数器C的初始值为0,将计数器C的值设置为初始值,将提取的路径与最短路径集合Pd中所有路径一一比较,比较是否包含最短路径集合Pd中任一条路径,设定从最短路径集合Pd提取的用于当前比较的路径为L4,L4代表比较的路径,其代表的路径是不断变化的,检测路径L3中包含的事件个数是否多于路径L4中包含的事件个数,如果是,将路径L4中包含的事件提取到事件有序集合OE5中,将路径L3中包含的事件提取到事件有序集合OE6,从事件有序集合OE5中一一提取出来单个事件,分别一一检测提取出的单个事件是否被包含在事件有序集合OE6中,如果事件有序集合OE5中所有事件都被包含在事件有序集合OE6中,使用计数器C加一,继续重复与最短路径集合Pd中下一条路径进行比较,比较是否包含最短路径集合Pd中下一条路径,直到最短路径集合Pd中所有路径都经过比较;当下一轮比较时,L3、L4分别代表下一条从非最短路径集合P′d中取出的路径、从最短路径集合Pd中取出的路径;
步骤4-2,当计数器C的值小于二时,直接从非最短路径集合P′d提取下一条路径,作为路径L3,重新开始步骤4-1;当计数器C的值大于等于二时,再一一从非最短路径集合P′d中提取路径,一一检测非最短路径集合P′d中除了路径L3的其他任意一条路径是否为路径L3的子集,设置从非最短路径集合P′d中提取除了路径L3的其他一条路径为L5,检测路径L3中包含的事件个数是否多于或者等于路径L5中包含的事件个数,如果是,将路径L5中包含的事件提取到事件有序集合OE7中,将路径L3中包含的事件提取到事件有序集合OE6,从事件有序集合OE7中一一提取出来事件,分别一一检测从事件有序集合OE7中提取出的事件是否被包含在事件有序集合OE6中,如果事件有序集合OE7中所有事件都被包含在事件有序集合OE6中,中断执行步骤4-3、步骤4-4,当所有的非最短路径集合P′d中的路径都已经被提取出来与路径L3比较过,并且步骤4-3、步骤4-4没有被中断,即路径L3不包含除了本身以外其他非最短路径,继续执行步骤4-3;路径L5是从非最短路径集合P′d中提取的一一进行比较的路径;
步骤4-3,非最短路径事件处理模块将路径L3输入到事件顺序检测模块的输入端口,此时需要检测的路径集合为仅包含路径L3一条路径的集合,即需要检测的路径集合只包含一条路径L3,重复步骤3的过程,将需要检测的路径集合中所有路径依次一一提取,设当前提取的路径为路径L1,此时路径L1等于路径L3,设定路径L3中包含的所有事件两两之间为顺序相关的,将最短路径集合Pd中的路径一一提取,一一与路径L3进行比较,以判断路径L3中包含的事件之间是否顺序相关,并对路径L3中所有事件的顺序相关性进行标号,判断路径L3中包含的事件之间是否顺序相关的过程与步骤3相同;
当非最短路径事件处理模块将路径L3经过步骤3的步骤处理完毕后,再查看路径L3是否经过步骤2的处理,即是否被建立路径对,如果路径L3被建立了路径对,撤销路径对,将路径L3从非最短路径集合P′d取出,加入到最短路径集合Pd中;
步骤4-4,非最短路径事件处理模块依次从非最短路径集合P′d一一提取路径,作为路径L3,重复步骤4-3,直到非最短路径集合P′d中所有路径都被提取处理完毕。
本发明的有益成果在于:具有以下几个优点:本发明的基于模型检测的反例精化系统,通过对反例进行精化,首先分为反例集合以及非反例集合,对反例集合进一步分类,分为最短路径集合、非最短路径集合,最短路径集合是反例集合的关键集合,里面包含事件最少的反例路径集合,接着,对非最短路径集合以及最短路径集合进行分别处理,非最短路径集合中的路径与最短路径集合中路径的区别即不相同的事件进行标注,以示区别,对最短路径集合的顺序相关性进行标注,检测其中包含的事件之间的顺序是否为关键的,最后,对非最短路径集合中的路径进行处理,检测其是否包含多于一条的最短路径集合中的路径,并且不包含其他的非最短路径,为非最短路径集合中的精简路径,并且能够代表最短路径集合中的路径,对其的顺序相关性进行标注,并且将原来标注在上的区别的撤销,将满足条件的路径加入到最短路径集合中,以更新最短路径集合,经过上述处理的最短路径集合以及非最短路径集合,方便后面对待验证的性质不成立的原因进行分析,最短路径集合方便分析最精简的原因,非最短路径集合则通过其与最短路径集合的区别以分辨原因。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述或其他方面的优点将会变得更加清楚。
图1是模型检测的运行结果示意图。
图2是本发明应用于购买咖啡和啤酒的自动售卖机时的系统示意图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
实施例:模型检测过程概述:
模型检验的工业应用离不开模型检验器的支持,优秀的模型检测器可以极大的扩展模型检测空间。目前,学术和工业界已开发出了大量的模型检验器,根据所检验规格的特点可分为时态逻辑模型检验器、行为一致检验器和复合检验器。知名的模型检测器如SMV、Spin等,以模型和属性公式为参数,通过执行验证算法自动搜索整个状态空间,以验证模型是否满足属性。例如任意CTL公式均可通过算子
Figure GDA0003937360160000091
V,EX,EU,EG来描述,构造计算
Figure GDA0003937360160000092
EX f1,EG f1,E(f1Uf2)等公式算法,通过复合就可实现任意CTL公式的识别。算法的实现思想是通过穷举状态空间以计算出令公式为真的所有状态,如E(f1Uf2)结果的获得就是通过先纳入所有让f2为真的状态,然后依次排除不能计E(f1Uf2)为真的状态。
模型检测作为形式化方法验证技术中的成熟的方法,其一般包含规格、建模、验证三步骤。
1.规格
规格就是用形式化语言刻画待测属性,对系统或者对象及其期望的特性或者行为进行的描述。规格必须用有清晰数学意义的形式语言表达。规格所要描述的内容包括:功能特性、行为特性、结构特性、时间特性。功能特性侧重于系统的功能方面,即做什么;行为特性侧重于系统的具体行为演化,即如何做;结构特性侧重于系统的组成,各个组成部分或者子系统间的联系和复合;时间特性则是时间相关的系统特性。
CTL逻辑是首个用于模型检测过程的时序逻辑语言。以Kripke结构的初始状态为树根,状态为结点,按各结点后继不同将Kripke结构展开。构成一棵计算树,树中任一条路径刻画系统的一次运行。CTL是基于计算树的分支时序逻辑,在一阶逻辑基础上引入路径量词和分支操作符构成,可描述状态的前后关系和分支情况。路径量词用于刻画路径的分支结构,包括E(Exists)和A(Always),描述某一分支或所有分支情况;分支操作符刻画状态的先后关系,包括一元操作符X(neXt),F(Future),G(Global),(表示下一个、将来某一状态、所有状态),和二元操作符U(Until).aUb表示从某一状态开始保持a为真直至出现b为真。在CTL中,一个分支量词后面必须有一个描述状态前后关系的算子。CTL公式分为状态公式(刻画某状态为真)和路径公式(刻画某条(或所有)路径上属性为真。在模型检测中,属性刻画时应重点考虑系统执行时从初始状态出发的状态变迁序列。另外,时态公式的长度与检测的复杂度成正比,要尽量降低公式的长度和复杂度。
2.建模
建模就是描述系统如何工作。基于待测属性从系统设计模型中抽象出模型,作为分析和检测的基础。模型一般用有限状态迁移系统表示,并使用状态变迁序列刻画系统的执行。合理的模型应完整无误地反映实际系统中待测属性的所有变化,同时模型规模适中。
3.验证
验证就是在数学上证明系统实现满足一定规格。证明是很复杂的,需要软件工具。在硬件验证方面,例如AMD使用形式化方法证明浮点运算硬件的正确性。
模型验证有两种主要方法。其一是时态模型检验,该方法中规格以时态逻辑形式表述,系统模拟为有限状态迁移系统。有效的搜索过程用来检验给定的有限状态迁移系统是否是规格的一个模型。
另一种方法中,规格以自动机方式给出,系统也模拟为一个自动机。系统的自动机模型和规格比较,以确定其行为是否与规格的自动机模型一致。一致性概念已进行了广泛的研究,包括:语言包含、细化有序、观测等价等。
模型检测通常将系统模型用有限状态机表示,同时将要验证的性质用时序逻辑表示,接着用算法来验证系统是否满足时序逻辑,如不满足则给出反例。应用工具可以实现此过程的自动化,无需人工的干预。模型检测是E.M.Clarke于80年代提出的,主要思想为用CTL公式表示程序或电路的时序性质,有限状态机表示程序或电路的转移的结构,最后通过遍历状态来检验公式的正确性。1987年R.Kurshan提出了同态化简的概念,实质是保证验证的信息的基础上,将复杂的控制序列与数据结构同态映射成相对简单的形式。
下面具体说明模型检测常规的过程:
1、建模阶段
需要完成两项工作,第一项工作是将系统行为建模成有限状态机,第二项工作是将系统性质用逻辑式精确地、无二义地表示出来,两者皆为模型检测工具的输入。
2、运行模型检测阶段
根据算法在模型检测工具中检测性质是否满足,一般采取穷尽搜索的方法,很难保持覆盖度。
3、结果分析阶段
给出模型检测的运行结果,基本上被分为三种情况:
第一种,性质在系统上满足,继续下面的检测。
第二种,性质在系统上不满足,给出反例。
第三种,内存不足无法检测,系统的状态空间过大,超出内存,无法检测。具体如图1所示:
模型检测待检验的问题被分为两大类:
(1)全局模型检测
在系统模型M上找出所有满足时序逻辑公式的状态集合,需要对系统所有状态进行检测。
(2)局部模型检测
在系统模型M上测试状态s是否满足时序逻辑公式。若初始状态s0满足公式f,那么模型满足公式f。公式f为描述性质的形式化形式,f可以为时序逻辑公式、进程代数类型公式等,时序逻辑公式通常被分为线性时态逻辑、分支时态逻辑以及分区时态逻辑,例如f为线性时态逻辑公式,为
Figure GDA0003937360160000112
代表的意思为公式φ最终会为真,当公式φ初次为真时,公式
Figure GDA0003937360160000111
也会为真。
本发明中的路径被表示为一个事件有序序列,被表示为<Event_p1,Event_p2,Event_p3,...,Event_pm>,m为路径中包含的事件个数,事件有序序列中相邻的事件之间必然有曲线直接相连,并且遵守严格的时间发生先后顺序,如Event_p1为路径的第一个事件,Event_pm为路径的最后发生的事件,下标为事件在事件有序序列中的编号,为按顺序升序的编号;在本发明中,采用传统的模型检测技术,系统模型被表示为<s0,S,Σ,δ,SF>,其中s0为系统模型的初始状态,为系统开始运行时的状态,S为系统模型的所有状态集合,SF为系统模型的最终状态集合,为系统结束运行时的状态,Σ为有限字母集合,用于表示所有事件的命名集合,
Figure GDA0003937360160000121
表示状态的变迁关系,例如
Figure GDA0003937360160000122
表示系统模型在状态s0由于发生事件Event_p1而发生变迁到状态s1;事件有序序列<Event_p1,Event_p2,Event_p3,...,Event_pm>发生的变迁关系为
Figure GDA0003937360160000123
并且构成了系统模型中从状态s0到状态sF的路径,因为状态s0为初始状态,状态sF为最终状态;事件为系统模型中使状态发生变迁发生的动作,往往一个简单语句就能描述一个动作,例如“系统启动了”=event,event就能作为一个事件;系统模型中所有路径产生为从系统的初始状态开始,经由状态变迁,最终到达最终状态,而发生状态变迁时发生的事件按照时间发生的先后顺序排列,组成了路径;因此,构建路径集合P为从所有路径构成的集合。本发明中使用P代表路径集合,L代表路径。
对系统模型进行模型检测,检测系统模型是否满足需要满足的性质,需要满足的性质一般由时序逻辑来表示,如果不满足某条性质,输出反例,反例由反例集合构成,反例集合由多条反例路径构成,反例路径为系统模型中从初始状态开始到最终状态结束的、不满足某条性质的路径,该路径为系统模型中的可行路径,代表系统从开始运行到结束运行的经过的状态、事件,本发明仅将经过的事件表示为事件有序路径,在本发明中,待检测的性质与规格等价;在反例集合P1中划分最短路径集合Pd以及非最短路径P′d,如果反例集合P1中的一条路径与反例集合P1中的其他路径相比,包含了反例集合中的其他路径,或与反例集合中的其他路径完全一样,那么反例集合P1中的这条路径不为最短路径,加入非最短路径集合P′d,否则作为最短路径加入最短路径集合Pd
在本发明的第二步中,最短路径事件处理模块从路径
Figure GDA0003937360160000131
代表的事件有序序列中先后顺序提取其中的事件,即按顺序提取事件编号
Figure GDA0003937360160000132
表示的事件,依次在路径L′n中寻找与路径
Figure GDA0003937360160000133
中包含的事件相同的事件,如果都能在路径L'n中寻找到所有与路径
Figure GDA0003937360160000134
中包含的事件相同的事件,再进行提取,提取的顺序为按照事件编号
Figure GDA0003937360160000135
的顺序提取相应的事件,提取其代表的事件在路径L'n中的编号,按照提取的顺序组成编号序列,把编号序列的下标提取,组成下标序列,下标序列中所有下标必须满足升序排列,那么路径
Figure GDA0003937360160000136
为路径L'n的子集,并且路径L'n中事件与路径
Figure GDA0003937360160000137
中事件顺序一致,例如路径L'n中包含的事件为<Event_p1,Event_p2,Event_p3,...,Event_pl>,给它们依次编号为
Figure GDA0003937360160000138
在路径
Figure GDA0003937360160000139
中找寻<Event_p1,Event_p2,Event_p3,...,Event_pm>的相同的事件编号,如果在路径
Figure GDA00039373601600001310
中事件编号为
Figure GDA00039373601600001311
取出下标5<7<···<20,满足升序的条件,如果事件编号的下标为5<7<···30>20,则不满足条件;步骤2-1中,N_d表示最短路径的事件编号,例如
Figure GDA00039373601600001312
表示路径
Figure GDA00039373601600001313
中第一个事件的编号,
Figure GDA00039373601600001314
表示路径
Figure GDA00039373601600001315
中第2个事件的编号,...,
Figure GDA00039373601600001316
表示路径
Figure GDA00039373601600001317
中第m个事件的编号;N表示非最短路径的事件编号,例如
Figure GDA00039373601600001318
表示路径L'n中第一个事件的编号,
Figure GDA00039373601600001319
表示路径L'n中第2个事件的编号,,...,
Figure GDA00039373601600001320
表示路径L'n中第l个事件的编号;
第二步(步骤2)的最后一步中,如果路径
Figure GDA00039373601600001321
为路径L'n的子集,并且路径L'n中事件与路径
Figure GDA00039373601600001322
中事件顺序一致,最短路径事件处理模块将路径
Figure GDA00039373601600001323
中包含的事件提取到事件有序集合OE1中,同时将路径L'n中包含事件提取到事件有序集合OE2中,将事件有序集合OE2与一个布尔事件集合Bn对应,布尔事件集合Bn包含布尔事件
Figure GDA00039373601600001324
布尔事件
Figure GDA00039373601600001325
的所有值初始被设置为true,布尔事件
Figure GDA00039373601600001326
分别与路径L'n中事件编号
Figure GDA00039373601600001327
的事件一一对应,将在事件有序集合OE2而不在事件有序集合OE1中的事件对应的布尔事件的值设置为false,并且将路径L'n中包含的事件在事件有序集合OE2中而不在事件有序集合OE1中的事件取反,得到的路径命名为
Figure GDA0003937360160000141
并建立路径对
Figure GDA0003937360160000142
其中,事件有序集合为事件按时间先后顺序排列的事件集合;路径对表示最短路径与非最短路径相似路径的不同,非最短路径将最短路径全部包含在内,具有路径对关系的最短路径与非最短路径,找寻性质不成立的原因,优先找最短路径中的事件,而
Figure GDA0003937360160000143
Figure GDA0003937360160000144
的差别中取反,在于找寻非最短路径与最短路径之间的区别,虽然都导致性质不成立,但是最短路径最有可能是性质不成立的原因;
例如,路径L'n包含的事件提取到事件有序集合OE2中,被表示为<Event_p1,Event_p2,Event_p3,...,Event_pl>,将事件有序集合OE2与一个布尔事件集合Bn一一对应,其中包含布尔事件
Figure GDA0003937360160000145
的所有值初始被设置为true,并且Event_p1,Event_p2,Event_p3,...,Event_pl之间按照事件时间发生的先后顺序排列,与布尔事件
Figure GDA0003937360160000146
一一对应;如果路径
Figure GDA0003937360160000147
包含的事件提取到事件有序集合OE1中,被表示为Event_p2,Event_p3,...,Event_pl,那么修改路径
Figure GDA0003937360160000148
Figure GDA0003937360160000149
可以看出,非最短路径集合中一条路径包含最短路径中的一条路径,并且两条路径相同的事件顺序一致,非反例集合中一条路径中除了相同的事件必须杜绝其发生,以区别非最短路径集合中路径与最短路径集合Pd中路径;
在本发明中,还可以同时整理事件有序集合OE1、事件有序集合OE2中排列的顺序为事件发生的时间先后顺序,将路径L'n中包含的在事件有序集合OE2而不在事件有序集合OE1中的事件相应的编号记录在集合R中;其中,OE为事件集合,B为布尔事件集合,集合R中存放正整数的集合;其中,事件有序集合为事件按时间先后顺序排列的事件集合,被表示为<Event1,Event2,Event3,...,EventI>,且满足Event1<Event2<Event3<...<EventI,Event1<Event2表示事件Event1发生在事件Event2之前,I表示事件有序集合中的事件个数;当两个事件同时发生时,认为两个事件合并表示为一个事件,用一个事件进行命名,表示这两个事件共同激发了状态的变迁;
在本发明第三步(步骤3)中,实际为比较路径L1的事件有序对与路径L2的事件有序对,当<Event1,Event2>同时为路径L1、路径L2的事件有序对,那么继续比较,当<Event1,Event2>为路径L1的事件有序对,而<Event2,Event1>为路径L2的事件有序对,那么<Event1,Event2>这个事件有序对配对的顺序标签的值被置为false;
其中,事件有序集合包含一系列事件,并且事件之间的排列是有序的;例如,事件有序对为<Event_p3,Event_p7>,事件Event_p3发生在事件Event_p7之前,并且属于同一路径;本发明中的事件一、事件二为泛称,可以指代任何事件,即事件有序对中表示的<Event1,Event2>、事件有序对<Event2,Event1>中事件一、事件二指代两个不同的事件,为表示事件的变量,可以从事件有序集合中提取任何事件到事件的变量,使用事件的变量表示提取到该变量的事件;
本发明第四步中即步骤4中,判断路径L1中包含的事件之间是否顺序相关的过程为,将相同的路径去除,设定从需要检测的路径集合中,即最短路径集合Pd中提取的与路径L1进行比较的路径为L2,将路径L1中包含的事件提取到事件有序集合OE3,同时将路径L2中包含的事件提取到事件有序集合OE4,在事件有序集合OE3、事件有序集合OE4中的事件按照事件发生的时间先后顺序排列,对比事件有序集合OE3、事件有序集合OE4中的事件是否完全相等并且排列的顺序也完全一致,如果答案是肯定的,那么路径L1、路径L2为同一条路径,将路径L2从最短路径集合Pd中去除;从路径L1包含的事件中提取所有事件有序对,为每一个事件有序对配对一个顺序标签,顺序标签为一个布尔变量,当顺序标签的值为true,表示其配对的事件有序对为顺序相关的,当顺序标签的值为false,表示其配对的事件有序对为顺序相关的;初始时,置所有的顺序标签为true;OE为事件有序集合;顺序相关为两个事件发生的顺序为关键的,不能随意调换事件之间的顺序;如果非最短路径包含两条以及两条以上的最短路径,并且不包含其他非最短路径,加入到最短路径集合中,代表了最短路径分析事件发生的原因有重大意义,非最短路径包含了不同的最短路径,并且没有比其更短的非最短路径,将其加入到最短路径集合中以分析性质不成立的原因;
事件有序对包含事件一、事件二,被表示为<Event1,Event2>,表示事件一发生在事件二之前,其中事件一被表示为Event1,事件二被表示为Event2;同时从路径L1提取事件有序对,比较时提取的方法为从事件有序集合OE3中依次提取一个事件到Event1,即用事件一Event1表示从事件有序集合OE3中提取的事件,提取的顺序为按照事件有序集合OE3中事件排列的先后顺序进行提取,提取完一个事件到Event1后再从事件有序集合OE3中依次提取另一个事件到Event2,即用事件二Event2表示从事件有序集合OE3中提取的另一个事件,提取的顺序为按照事件有序集合OE3中事件排列的先后顺序进行提取,提取Event2时刨除除了提取到Event1的事件以外的其他事件,当提取了一个事件到Event1以及提取一个事件到Event2后,完成一个事件有序对<Event1,Event2>后,依次从事件有序集合OE4提取事件进行比较,先从事件有序集合OE4中按照其中的事件排列的先后顺序依次提取一个事件,与Event2代表的事件依次进行比较,如果两者相同,再从事件有序集合OE4提取另一个事件,提取的顺序仍然按照事件有序集合OE4中排列的先后顺序,提取除了先从事件有序集合OE4中提取的事件,从事件有序集合OE4提取的另一个事件与Event1代表的事件依次进行比较,如果相等,置事件有序对<Event1,Event2>配对的顺序标签的值为false;
当非最短路径事件处理模块将路径L1经过第三步判断路径L1中包含的事件之间是否顺序相关的过程相同的处理,查看路径L1是否经过第二步的步骤,是否被建立路径对,如果路径L1被建立了路径对,同时路径L1真包含了最短路径集合Pd中的一条路径,与最短路径集合Pd中的一条路径不同的事件在路径对中前面被加了
Figure GDA0003937360160000161
符号,撤销路径对,将路径L1从非最短路径集合P′d取出,加入到最短路径集合Pd中;本发明中真包含表示一条路径被完全包含在另一条路径中,即一条路径中包含的所有事件都被包含在另一条路径包含的事件集合中,但是两条路径不为同一条路径,例如路径L6真包含路径L7,路径L6中包含的所有事件都被包含在路径L7包含的事件中,但路径L6不等于路径L7,即路径L6中包含的所有事件都等于路径L7中包含的所有事件,还有一种检测真包含的方法为如果一条路径L6的包含的事件都提取到一个事件集合E1,另一条路径L7中包含的事件都提取到事件集合E2
Figure GDA0003937360160000171
那么路径L7真包含路径L6
路径中的包含表示一条路径被包含在另一条路径中,即一条路径中包含的所有事件都被包含在另一条路径包含的事件中,例如路径L8真包含路径L9,路径L8中包含的所有事件都被包含在路径L9包含的事件中;
反例能够被分析事件本身以及事件之间顺序是否是待检测的性质在系统不成立的原因,并且需要精简反例集合,找出最短反例路径,并标注非最短反例路径与最短反例路径的不同。
本发明可以应用于到各种复杂模型中,在本实施例中,将本发明应用于购买咖啡和啤酒的自动售卖机。购买咖啡和啤酒的自动售卖机在使用时,当投币后,可以选择购买咖啡或者啤酒,只有向自动售卖机内投入两枚硬币才能进行选择,如果硬币数量少会等待下一步的动作,如果没有动作退币并返回初始状态,如果继续投币则可进行选择购买咖啡或啤酒。对于这一过程描述的系统模型被表示为图2;建立系统模型的过程为,将系统执行的完整正确路线都列出来,即系统开始运行到终止的所有的正确执行路线,并将其使用事件有序序列进行表示,即正确执行路线中所有执行所发生的动作表示成事件,所有的正确执行路线的事件有序序列组合成了系统模型,其中使用特殊符号约定系统模型的初始状态与最终状态。系统模型的建立见Clarke,E.M.,Henzinger,Th.A.,Veith,H.,Bloem,R的《Handbook of Model Checking》或E.M.Clarke,O.Grumberg,and D.Peled.的《ModelChecking》MIT Press,1999中详细叙述了各种系统模型的建立。
例如本发明中用于购买咖啡和啤酒的自动售卖机中,在售卖机中的说明书中详细规格说明该自动售卖机正确的工作模式,投入硬币后,需要投入两枚硬币才能选择是咖啡还是啤酒,两枚硬币可以一起投入,也可以投入一枚后根据提示再进行投入,选择完毕后得到选择的咖啡或啤酒,最后系统重置回到最初状态;如果只投入一枚硬币,等待再投入一枚,如果再投入一枚可以进入上述一样的选择状态,选择咖啡还是啤酒,否则返回硬币,系统重置回到最初状态。接着,需要根据上述描述将经过的动作、由动作经过的状态都描述出来,并且根据正确执行路线构建系统模型;
其中,pay表示既是初始状态也是最终状态的状态,在此状态等待投入硬币,insert_one_coin表示投入一枚硬币的动作,coin not_enough表示硬币没有投入足够的状态,insert_two_coin表示投入两枚硬币的动作,select表示可以选择咖啡或啤酒的状态,select coffee表示选择咖啡的动作,select beer表示选择啤酒的动作,coffee表示选择了咖啡的状态,beer表示选择了啤酒的状态,get_coffee表示得到咖啡的动作,get_beer表示得到啤酒的动作,get coffee表示得到咖啡成功后转入的状态,get_beer表示得到啤酒成功后转入的状态,resetting表示对购买咖啡和啤酒的自动售卖机进行重置,not action表示在投了一枚硬币后没有进一步的动作,return_coin表示将硬币进行返回的动作,return coin表示将要将硬币返回而进入的状态;上述使用字母组合以及下划线组合表示了系统的动作以及状态,系统的动作代表事件,例如根据规格中正确执行路线,在等待投入硬币pay状态后,能够进行选择投入一枚硬币insert_one_coin的动作后进入coin notenough状态,再选择投入一枚硬币insert_one_coin的动作,也能够选择直接insert_two_coin投入两枚硬币的动作,两种都进入select状态,select状态中能够选择selectcoffee的动作即选择咖啡,也能够选择selectbeer的动作即选择啤酒,选择完毕后得到用getbeer、get coffee两个动作分别描述得到啤酒、得到咖啡的动作,各自分别进入get beer、get coffee这两个状态,能够选择resetting动作对系统进入重置再进入pay状态,同时,如果只投入一枚硬币,insert_one_coin的动作后进入coin not enough状态后,如果没有动作即not action的动作发生,则进行返回硬币return coin的动作后再对系统进入重置resetting的动作再进入pay状态,将上述路线使用椭圆圈内字母描述状态,箭头表示状态转换的方向即路线的方向,在箭头上使用字母描述动作,发生该动作后进入下一个状态,直到到达最终状态,对系统模型进行检查,直到所有正确执行路线都被描述在系统模型中;具体系统模型如图2所示:
本发明中系统路径为从初始状态pay到最终状态pay状态的路径,路径中记录了经过的状态以及动作,路径被罗列如下:
Figure GDA0003937360160000181
Figure GDA0003937360160000182
Figure GDA0003937360160000191
Figure GDA0003937360160000192
Figure GDA0003937360160000193
设定需要检测两条性质F(get beer)、EF(get beer),表示最终能买到啤酒,前一条性质F(get beer)表示能够到达买到啤酒的状态,后一条性质EF(get beer)表示存在一条能够到达买到啤酒的状态,这两条性质相对简单,在所有路径中寻找是否能够到达getbeer这个状态。本系统相对简单,直接对所有路径进行分析的复杂度不够,如果是较为复杂的系统,往往需要使用形式化工具进行模型检测以输出反例,常用的模型检测工具有SMART、NuSMT等。
本系统一共五条路径,为路径集合P,一共(1)到(5)五条路径,其中编号(1)(3)(4)的路径被包含在反例集合P1中,编号(2)(5)的路径被包含在非反例集合P2中;下面开始分析本发明的反例精化系统在购买咖啡和啤酒的自动售卖机的步骤:
步骤1:反例集合P1编号(1)(3)(4)的路径在反例集合P1中分别被编号为1、2、3,即在反例集合P1中编号(1)(3)(4)的路径分别编号为1、2、3;分别将路径编号1、2、3路径中事件提取到事件集合Event_P(1)、Event_P(2)、Event_P(3)中:
Event_P(1)={insert_one_coin、insert_one_coin、select coffee、get_coffee、resetting};
Event_P(2)={insert_one_coin、not action、resetting};
Event_P(3)={insert_two_coin、select coffee、get_coffee、resetting};
可以看出,事件集合Event_P(1)、Event_P(2)、Event_P(3)不存在包含与被包含关系,因此,将反例集合P1中编号(1)(3)(4)的路径加入到最短路径集合Pd中,非最短路径集合P′d为空集;
步骤2:由于步骤2考虑的是最短路径集合Pd与非最短路径集合P′d中路径的关系、事件包含关系、事件顺序是否一致,但本系统中非最短路径集合P′d为空集,所以步骤2省略;
步骤3:检测最短路径集合Pd,先提取路径L1,路径L1取在反例集合P1中路径编号为1的路径,路径L2取在反例集合P1中路径编号为2的路径,分别将其中包含的事件提取到事件有序集合OE3、事件有序集合OE4中:
OE3=<insert_one_coin、insert_one_coin、select coffee、get_coffee、resetting>
OE4=<insert_one_coin、not action、resetting>
与事件集合Event_P(1)、Event_P(2)的区别在于事件有序集合中事件是顺序相关的,将其中包含的相同的事件提取到事件有序集合OE8,OE8=<insert_one_coin、resetting>,事件顺序与事件有序集合OE3中事件的顺序保持一致,另外将其中包含的相同的事件提取到事件有序集合OE9中,顺序与事件有序集合OE4中事件的顺序保持一致,OE9=<insert_one_coin、resetting>,两个事件有序集合OE3、事件有序集合OE9都只有两个事件,依次提取两个事件到事件有序对<Event1,Event2>中,<Event1,Event2>=<insert_one_coin、resetting>,即Event1=insert_one_coin,Event2=resetting,在事件有序集合OE9中与事件有序集合OE3事件顺序一致,在事件有序集合OE9与Event2相同的事件resetting排列在后,与Event1相同的事件insert_one_coin排列在前,因此,事件有序对<insert_one_coin、resetting>顺序标签为true。
接着,再提取路径L1,路径L1取在反例集合P1中路径编号为1的路径,路径L2取在反例集合P1中路径编号为3的路径,分别将其中包含的事件提取到事件有序集合OE3、事件有序集合OE4中:事件有序集合OE3维持不变,OE4=<insert_two_coin、select coffee、get_coffee、resetting>,将其中包含的相同的事件提取到事件有序集合OE8,OE8=<selectcoffee、get_coffee、resetting>,依次按顺序提取两个事件到事件有序对<Event1,Event2>=<select coffee、get_coffee>,另外将其中包含的相同的事件提取到事件有序集合OE9中,OE9=<select coffee、get_coffee、resetting>,顺序与事件有序集合OE4中事件的顺序保持一致,而OE9与OE8一致相同,该事件有序对的顺序标签仍然为true,另外提取事件有序对<Event1,Event2>=<select coffee、resetting>,经过分析提取的OE9与OE8一致相同,所以事件有序对<select coffee、resetting>的顺序标签仍然为true。再提取路径L1,路径L1取在反例集合P1中路径编号为2的路径,路径L2取在反例集合P1中路径编号为3的路径,分别将其中包含的事件提取到事件有序集合OE3、事件有序集合OE4中:将其中包含的相同的事件提取到事件有序集合OE8=OE9=<resetting>,只有一个事件,不存在事件有序对。经过以上分析,所有事件按照其发生的顺序排列,并且事件之间是顺序相关的,即事件之间发生先后顺序是重要的,不能随意调整。通过对反例集合中路径进行分析,能够对性质不成立的原因找寻。本系统因不存在最短路径集合以及非最短路径集合的划分,所以对最短路径集合与非最短路径集合之间关系的分析以及更新优化均省略,只对事件之间的顺序相关性进行了分析。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明提供的应用于自动售卖机系统基于模型检测的反例精化系统,可以使用计算机系统作为载体实现,本计算机系统包含处理器、显示器、输入设备、存储器等,在处理器中处理本发明的反例精化系统所处理的过程,从输入设备中输入需要进行反例精化的系统的性质以及系统相应的形式化形式语言,在处理器内置的形式化模型检测工具中进行模型检测,检测后输出反例集合,将反例集合输入到反例精化系统中的最短路径构建模块进行处理,反例精化系统进行处理后,在显示器中显示结果。
本发明提供了应用于自动售卖机系统的基于模型检测的反例精化系统,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (9)

1.应用于自动售卖机系统的基于模型检测的反例精化系统,其特征在于,包括最短路径构建模块、最短路径事件处理模块、事件顺序检测模块和非最短路径事件处理模块;
其中,所述最短路径构建模块负责从模型检测产生的反例集合中提取并构建自动售卖机系统模型的最短路径集合和非最短路径集合;
所述最短路径事件处理模块负责处理最短路径集合以及非最短路径集合,包括:检测最短路径集合中包含的每一条路径是否为非最短路径集合中任意一条路径的真子集,并且最短路径集合中包含的每一条路径中事件是否与非最短路径集合中任意一条路径中事件顺序一致;
所述事件顺序检测模块包括一个输入端口和一个输出端口,通过输入端口输入需要检测的路径集合,输出端口输出已标记过顺序相关的需要检测的路径集合,以对需要检测的路径集合中包含的事件标注其是否顺序相关;
所述非最短路径事件处理模块负责对非最短路径集合进行处理,包括:将非最短路径集合与最短路径集合中路径进行比较,并标记是否顺序相关,将符合条件的非最短路径加入到最短路径集合中,并对最短路径集合以及非最短路径集合进行更新。
2.根据权利要求1所述的系统,其特征在于,系统执行如下步骤:
步骤1,所述最短路径构建模块对自动售卖机系统建立系统模型,得到最短路径集合Pd和非最短路径集合P′d
步骤2,所述最短路径事件处理模块对最短路径集合Pd和非最短路径集合P′d分别进行处理:所述最短路径事件处理模块依次从最短路径集合Pd取出其中包含的每条路径用于比较,设定取出的第k条路径表示为
Figure FDA0003937360150000011
依次为最短路径集合Pd中的路径顺序编号,k表示取出的路径在最短路径集合Pd中的编号,为正整数,取出时从编号k=1的最短路径开始,顺序递增取出,当取出一条路径时,同时将非最短路径集合P′d的所有路径依次取出与其进行比较,设从非最短路径集合P′d中取出比较的第n条路径为L'n,依次为最短路径集合Pd中的路径顺序编号,设n为从非最短路径集合P′d取出比较的路径的编号,取出时从编号n=1的最短路径开始,顺序递增取出;比较路径
Figure FDA0003937360150000012
与路径L'n,判断路径
Figure FDA0003937360150000013
是否为路径L'n的子集,并且路径L'n中事件是否与路径
Figure FDA0003937360150000014
中事件顺序一致;其中,k的值最大为最短路径集合Pd中包含的路径条数,n的值最大为非最短路径集合P′d中包含的路径条数;
步骤3,所述事件顺序检测模块通过输入端口输入需要检测的路径集合,需要检测的路径集合为最短路径集合Pd,将需要检测的路径集合中所有路径依次一一提取,设需要检测的路径集合中当前提取的路径为路径L1,先设定路径L1中包含的所有事件两两之间为顺序相关的,随后,将最短路径集合Pd中除了路径L1之外的路径分别一一提取,一一与路径L1进行比较,以判断路径L1中包含的事件之间是否顺序相关;
步骤4,所述非最短路径事件处理模块对非最短路径集合P′d进行检测。
3.根据权利要求2所述的系统,其特征在于,步骤1包括:
步骤1-1,最短路径构建模块对自动售卖机系统建立系统模型,将系统模型中所有路径提取出来,得到路径集合P;
步骤1-2,最短路径构建模块在系统模型之上进行模型检测,将路径集合P分为两类:反例集合P1和非反例集合P2,即P=P1∪P2;其中反例集合P1包含所有经由模型检测产生的反例路径,非反例集合P2则包含路径集合P中除了反例路径之外的所有其他路径;
步骤1-3,最短路径构建模块对反例集合P1中所有路径进行一一检测,检测其是否为最短路径,并且将反例集合P1中包含的所有最短路径加入到最短路径集合Pd中,将反例集合P1中除了最短路径之外的所有其他路径加入到非最短路径集合P′d中,即P1=Pd∪P′d
4.根据权利要求3所述的系统,其特征在于,步骤1-3包括如下步骤:
步骤1-3-1,初始时最短路径集合Pd为空集,一一检测反例集合P1中的路径,设反例集合P1 P1中正在检测的路径为当前检测路径,将反例集合P1中所述当前检测路径都与反例集合P1中除了当前检测路径之外的其他路径一一比较,检测当前检测路径是否包含反例集合P1中除了当前检测路径之外的任意一条路径,或者当前检测路径是否与反例集合P1中除了当前检测路径之外的任意一条路径完全一样,如果满足任一个条件,则当前检测路径不为最短路径,否则将当前检测路径加入到最短路径集合Pd中,将最短路径集合Pd中的路径一一设为当前检测路径进行检测,直到最短路径集合Pd中所有路径都经过检测。
5.根据权利要求4所述的系统,其特征在于,步骤1-3-1中,检测当前检测路径是否包含反例集合P1中除了当前检测路径之外的任意一条路径,或者当前检测路径是否与反例集合P1中除了当前检测路径之外的任意一条路径完全一样的过程为:
步骤1-3-1-1,最短路径构建模块将反例集合P1中除了当前检测路径之外的每一条路径中包含的事件提取,提取到一个事件集合中,将提取的事件集合表示为Event_P(i),i为提取的路径在反例集合P1中的编号,反例集合P1中所有路径都从1开始顺序编号,编号为正整数,且大于等于1,将当前检测路径中包含的事件提取,提取的事件集合表示为Event_P(j),j为当前检测路径在反例集合P1中路径的编号,为正整数,并且j≠i;反例集合P1中路径的编号由用户按顺序编号,其中,Event_P表示事件集合,i,j为变量,i和j的值不断变化,由步骤1-3-1-2检测的过程决定,比较的是路径编号;
步骤1-3-1-2,对当前检测路径都进行判断过程,从i=1开始,j≠i,依次进行如下判断:
如果
Figure FDA0003937360150000031
表示事件集合Event_P(i)中的事件都在事件集合Event_P(j)中,并且Event_P(i)包含的事件个数小于Event_P(j)包含的事件个数,则判断当前检测路径包含了反例集合P1中除了当前检测路径之外的任意一条路径;
如果Event_P(i)=Event_P(j),表示事件集合Event_P(j)与事件集合Event_P(i)为同一个事件集合,这两个事件集合相等,并且Event_P(i)包含的事件个数等于Event_P(j)包含的事件个数,则判断当前检测路径等于反例集合P1中除了当前检测路径之外的任意一条路径;
如果当前检测路径包含了反例集合P1中除了当前检测路径之外的任意一条路径,或当前检测路径又等于反例集合P1中除了当前检测路径之外的任意一条路径,将当前检测路径作为非最短路径加入非最短路径集合P′d中;
步骤1-3-1-3,在步骤1-3-1-2中的判断完毕后,如果当前检测路径已作为非最短路径加入到非最短路径集合P′d中,则进行反例集合P1中的下一条路径判断,将i更新为i+1,当前检测路径为反例集合P1中编号为i的路径,如果i小于等于反例集合P1中路径的个数,继续进行步骤1-3-1-2判断过程;
当i大于反例集合P1中路径的个数,停止步骤1-3-1-2的判断过程,若此时停止判断过程时,当前检测路径不为非最短路径,则当前检测路径再作为最短路径加入到最短路径集合Pd中;取反例集合P1中下一条路径作为当前检测路径,重复步骤1-3-1-1,直到反例集合P1中所有路径都经过判断,得到最短路径集合Pd和非最短路径集合P′d
6.根据权利要求5所述的系统,其特征在于,步骤2具体包括如下步骤:
步骤2-1,所述最短路径事件处理模块判断路径
Figure FDA0003937360150000041
中包含事件的数量是否小于等于路径L'n中包含的事件数量,判断的方法为:分别对路径
Figure FDA0003937360150000042
路径L'n中包含的事件进行计数,比较两者的数量大小,当路径
Figure FDA0003937360150000043
中包含事件的数量小于等于路径L'n中包含的事件数量,再执行步骤2-2,并且分别对路径
Figure FDA0003937360150000044
路径L'n中包含的事件进行编号,对路径
Figure FDA0003937360150000045
中事件编号的顺序为按照路径
Figure FDA0003937360150000046
中事件有序序列中事件先后顺序发生的顺序分别编号,则路径
Figure FDA0003937360150000047
中m个事件按时间发生先后顺序依次记为
Figure FDA0003937360150000048
m为路径
Figure FDA0003937360150000049
中包含的事件个数;对路径L'n中事件编号的顺序为按照路径L'n中事件有序序列中事件先后顺序发生的顺序分别编号,则路径L'n中l个事件按时间发生先后顺序依次记为
Figure FDA00039373601500000410
l为路径L'n中包含的事件个数;其中,m≤l;
步骤2-2,最短路径事件处理模块从路径
Figure FDA00039373601500000411
中的事件有序序列中先后顺序提取其中的事件,即按顺序提取
Figure FDA00039373601500000412
表示的事件,依次在路径L'n中寻找与路径
Figure FDA00039373601500000413
中包含的事件相同的事件,如果能在路径L'n中寻找到所有与路径
Figure FDA00039373601500000414
中包含的事件相同的事件,再进行提取,提取的顺序为按照事件
Figure FDA00039373601500000415
的顺序提取相应的事件,提取其代表的事件在路径L'n中的编号,按照提取的顺序组成编号序列,把编号序列的下标提取,组成下标序列,下标序列中所有下标必须满足升序排列的条件,则路径
Figure FDA00039373601500000416
为路径L'n的子集,并且路径L'n中事件与路径
Figure FDA00039373601500000417
中事件顺序一致,继续步骤2-3,如果不能在路径L'n中寻找到所有与路径
Figure FDA00039373601500000418
中包含的事件相同的事件,则直接执行步骤3;
步骤2-3,如果路径
Figure FDA00039373601500000419
为路径L'n的子集,并且路径L'n中事件与路径
Figure FDA00039373601500000420
中事件顺序一致,所述最短路径事件处理模块将路径
Figure FDA00039373601500000421
中包含的事件提取到事件有序集合OE1中,同时将路径L'n中包含事件提取到事件有序集合OE2中,将事件有序集合OE2与一个布尔事件集合Bn对应,布尔事件集合Bn包含l个布尔事件,第一个至第l个布尔事件依次记为
Figure FDA0003937360150000051
布尔事件
Figure FDA0003937360150000052
只有true、false两个值,用以表示路径L'n中包含的对应事件是否被包含在路径
Figure FDA0003937360150000053
中;布尔事件
Figure FDA0003937360150000054
的所有值初始被设置为真值true,布尔事件
Figure FDA0003937360150000055
分别与路径L'n中的事件
Figure FDA0003937360150000056
一一对应,即第一个布尔事件
Figure FDA0003937360150000057
与第一个事件
Figure FDA0003937360150000058
相对应,当布尔事件
Figure FDA0003937360150000059
的值为true,表示路径L'n中包含的第一个事件
Figure FDA00039373601500000510
被包含在路径
Figure FDA00039373601500000511
中,当布尔事件
Figure FDA00039373601500000512
的值为false,表示路径L'n中包含的第一个事件
Figure FDA00039373601500000513
不被包含在路径
Figure FDA00039373601500000514
中;依次类推,第l个布尔事件
Figure FDA00039373601500000515
与第l个事件
Figure FDA00039373601500000516
相对应,当布尔事件
Figure FDA00039373601500000517
的值为true,表示路径L'n中包含的第l个事件
Figure FDA00039373601500000518
被包含在路径
Figure FDA00039373601500000519
中,当布尔事件
Figure FDA00039373601500000520
的值为false,表示路径L'n中包含的第l个事件
Figure FDA00039373601500000521
不被包含在路径
Figure FDA00039373601500000522
中,即布尔事件与路径L'n中被编号的事件的下标相等,则两者存在对应关系;为将在事件有序集合OE2而不在事件有序集合OE1中的事件对应的布尔事件的值设置为假值false,与被设置为false的布尔事件下标相同的在路径L'n中的事件取反,路径L'n中包含的事件在事件有序集合OE2中而不在事件有序集合OE1中的事件取反,得到的路径命名为
Figure FDA00039373601500000523
并建立路径对
Figure FDA00039373601500000524
其中,事件有序集合为事件按其发生时间先后顺序排列的事件集合。
7.根据权利要求6所述的系统,其特征在于,步骤3包括如下步骤:
步骤3-1,所述事件顺序检测模块从需要检测的路径集合即所述最短路径集合Pd中一一提取路径进行比较,设当前提取的路径为L1,接着,从所述最短路径集合Pd中一一提取除了路径L1以外的路径以进行比较,设所述最短路径集合Pd中提取的与路径L1进行比较的路径为L2,根据每次提取比较的路径不同,L2代表的路径也不同,将路径L1中包含的事件提取到事件有序集合OE3,同时将路径L2中包含的事件提取到事件有序集合OE4,在事件有序集合OE3、事件有序集合OE4中的事件按照事件发生的时间先后顺序排列,对比事件有序集合OE3、事件有序集合OE4中的事件是否完全相等并且排列的顺序也完全一致,如果是,则路径L1、路径L2为同一条路径,将路径L2从最短路径集合Pd中去除;
步骤3-2,比较事件有序集合OE3与事件有序集合OE4中包含的事件,把相同的事件分别提取到事件有序集合OE8以及事件有序集合OE9中,其中,事件有序集合OE8中事件排列的顺序与事件有序集合OE3中相同事件排列的顺序一致,事件有序集合OE9中事件排列的顺序与事件有序集合OE4中相同事件排列的顺序一致;从事件有序集合OE8提取所有事件有序对,为每一个事件有序对配对一个顺序标签,顺序标签为一个布尔变量,当顺序标签的值为真值true,表示其配对的事件有序对为顺序相关的,当顺序标签的值为假值false,表示其配对的事件有序对不是顺序相关的;初始时,置所有的顺序标签为真值true,具体过程如下:
所述事件有序对包含事件一、事件二,事件有序对被表示为<Event1,Event2>,表示事件一发生在事件二之前,其中事件一被表示为Event1,事件二被表示为Event2;Event1、Event2同时表示事件变量,用于代表不同的事件;从事件有序集合OE8中按照其中排列的先后顺序依次提取一个事件到Event1,提取后再从事件有序集合OE8中排列在事件Event1后的事件中依次提取一个事件到Event2,完成一个事件有序对<Event1,Event2>后,从事件有序集合OE9按照事件排列先后的顺序寻找与Event2代表的事件相同的事件,其后,在事件有序集合OE9中寻找排列Event2代表事件相同的事件,如果找到后,并且Event1代表相同的事件在事件有序集合OE9中排列在与Event2代表事件相同的事件之后,如果相等,置事件有序对<Event1,Event2>配对的顺序标签的值为假值false;
步骤3-3,对需要检测的路径集合中所有路径都进行步骤3-1~步骤3-2,直到所有路径都被检测是否顺序相关。
8.根据权利要求7所述的系统,其特征在于,步骤4包括如下步骤:
步骤4-1,非最短路径事件处理模块从非最短路径集合P′d中一一提取路径,设置当前从非最短路径集合P′d中提取的路径为L3,L3代表当前提取的路径,其代表的路径是不断变化的,并设置计数器C,计数器C的初始值为0,将计数器C的值设置为初始值,将提取的路径与最短路径集合Pd中所有路径一一比较,比较是否包含最短路径集合Pd中任一条路径,设定从最短路径集合Pd提取的用于当前比较的路径为L4,L4代表比较的路径,其代表的路径是不断变化的,检测路径L3中包含的事件个数是否多于路径L4中包含的事件个数,如果是,将路径L4中包含的事件提取到事件有序集合OE5中,将路径L3中包含的事件提取到事件有序集合OE6,从事件有序集合OE5中一一提取出来单个事件,分别一一检测提取出的单个事件是否被包含在事件有序集合OE6中,如果事件有序集合OE5中所有事件都被包含在事件有序集合OE6中,使用计数器C加一,继续重复与最短路径集合Pd中下一条路径进行比较,比较是否包含最短路径集合Pd中下一条路径,直到最短路径集合Pd中所有路径都经过比较;当下一轮比较时,L3、L4分别代表下一条从非最短路径集合P′d中取出的路径、从最短路径集合Pd中取出的路径;
步骤4-2,当计数器C的值小于二时,直接从非最短路径集合P′d提取下一条路径,作为路径L3,重新开始步骤4-1;当计数器C的值大于等于二时,再一一从非最短路径集合P′d中提取路径,一一检测非最短路径集合P′d中除了路径L3的其他任意一条路径是否为路径L3的子集,设置从非最短路径集合P′d中提取除了路径L3的其他一条路径为L5,检测路径L3中包含的事件个数是否多于或者等于路径L5中包含的事件个数,如果是,将路径L5中包含的事件提取到事件有序集合OE7中,将路径L3中包含的事件提取到事件有序集合OE6,从事件有序集合OE7中一一提取出来事件,分别一一检测从事件有序集合OE7中提取出的事件是否被包含在事件有序集合OE6中,如果事件有序集合OE7中所有事件都被包含在事件有序集合OE6中,中断执行步骤4-3、步骤4-4,当所有的非最短路径集合P′d中的路径都已经被提取出来与路径L3比较过,并且步骤4-3、步骤4-4没有被中断,即路径L3不包含除了本身以外其他非最短路径,继续执行步骤4-3;路径L5是从非最短路径集合P′d中提取的一一进行比较的路径;
步骤4-3,非最短路径事件处理模块将路径L3输入到事件顺序检测模块的输入端口,此时需要检测的路径集合为仅包含路径L3一条路径的集合,即需要检测的路径集合只包含一条路径L3,重复步骤3的过程,将需要检测的路径集合中所有路径依次一一提取,设当前提取的路径为路径L1,此时路径L1等于路径L3,设定路径L3中包含的所有事件两两之间为顺序相关的,将最短路径集合Pd中的路径一一提取,一一与路径L3进行比较,以判断路径L3中包含的事件之间是否顺序相关,并对路径L3中所有事件的顺序相关性进行标号,判断路径L3中包含的事件之间是否顺序相关的过程与步骤3相同;
当非最短路径事件处理模块将路径L3经过步骤3的步骤处理完毕后,再查看路径L3是否经过步骤2的处理,即是否被建立路径对,如果路径L3被建立了路径对,撤销路径对,将路径L3从非最短路径集合P′d取出,加入到最短路径集合Pd中;
步骤4-4,非最短路径事件处理模块依次从非最短路径集合P′d一一提取路径,作为路径L3,重复步骤4-3,直到非最短路径集合P′d中所有路径都被提取处理完毕。
9.根据权利要求8所述的系统,其特征在于,步骤1中,所述自动售卖机系统为购买咖啡和啤酒的自动售卖机系统,购买咖啡和啤酒的自动售卖机在使用时,当投币后,能够选择购买咖啡或者啤酒,只有向自动售卖机内投入两枚硬币才能进行选择,如果硬币数量少会等待下一步的动作,如果没有动作退币并返回初始状态,如果继续投币则可进行选择购买咖啡或啤酒,建立购买咖啡和啤酒的自动售卖机系统模型的过程为:将系统执行的完整正确路线都列出来,即系统开始运行到终止的所有的正确执行路线,并将其使用事件有序序列进行表示,即正确执行路线中所有执行所发生的动作表示成事件,所有的正确执行路线的事件有序序列组合成了系统模型;
购买咖啡和啤酒的自动售卖机系统的工作模式为:投入硬币后,需要投入两枚硬币才能选择是咖啡还是啤酒,两枚硬币可以一起投入,也可以投入一枚后根据提示再进行投入,选择完毕后得到选择的咖啡或啤酒,最后系统重置回到最初状态;如果只投入一枚硬币,等待再投入一枚,如果再投入一枚可以进入上述一样的选择状态,选择咖啡还是啤酒,否则返回硬币,系统重置回到最初状态;
其中,用pay表示既是初始状态也是最终状态的状态,在此状态等待投入硬币,insert_one_coin表示投入一枚硬币的动作,coin not_enough表示硬币没有投入足够的状态,insert_two_coin表示投入两枚硬币的动作,select表示可以选择咖啡或啤酒的状态,select coffee表示选择咖啡的动作,select beer表示选择啤酒的动作,coffee表示选择了咖啡的状态,beer表示选择了啤酒的状态,get_coffee表示得到咖啡的动作,get_beer表示得到啤酒的动作,get coffee表示得到咖啡成功后转入的状态,get_beer表示得到啤酒成功后转入的状态,resetting表示对购买咖啡和啤酒的自动售卖机进行重置,not action表示在投了一枚硬币后没有进一步的动作,return_coin表示将硬币进行返回的动作,return coin表示将要将硬币返回而进入的状态;上述使用字母组合以及下划线组合表示了系统的动作以及状态,系统的动作代表事件,在等待投入硬币pay状态后,能够进行选择投入一枚硬币insert_one_coin的动作后进入coin not enough状态,再选择投入一枚硬币insert_one_coin的动作,也能够选择直接insert_two_coin投入两枚硬币的动作,两种都进入select状态,select状态中能够选择selectcoffee的动作即选择咖啡,也能够选择selectbeer的动作即选择啤酒,选择完毕后得到用get beer、get coffee两个动作分别描述得到啤酒、得到咖啡的动作,各自分别进入get beer、get coffee这两个状态,能够选择resetting动作对系统进入重置再进入pay状态,同时,如果只投入一枚硬币,insert_one_coin的动作后进入coin not enough状态后,如果没有动作即not action的动作发生,则进行返回硬币return coin的动作后再对系统进入重置resetting的动作再进入pay状态,用箭头表示状态转换的方向即路线的方向,在箭头上使用字母描述动作,发生该动作后进入下一个状态,直到到达最终状态,对系统模型进行检查,直到所有正确执行路线都被描述在系统模型中,系统路径为从初始状态pay到最终状态pay状态的路径,路径中记录了经过的状态以及动作,路径包括:
Figure FDA0003937360150000091
Figure FDA0003937360150000092
Figure FDA0003937360150000093
Figure FDA0003937360150000094
Figure FDA0003937360150000095
设定需要检测两条性质F(get beer)、EF(get beer),前一条性质F(get beer)表示能够到达买到啤酒的状态,后一条性质EF(get beer)表示存在一条能够到达买到啤酒的状态;
所述系统一共五条路径,即编号为(1)到(5)的五条路径,形成路径集合P,其中编号(1)(3)(4)的路径被包含在反例集合P1中,编号(2)(5)的路径被包含在非反例集合P2中;
所述反例精化系统在应用于购买咖啡和啤酒的自动售卖机时执行如下步骤:
步骤a1,反例集合P1编号(1)(3)(4)的路径在反例集合P1中分别被编号为1、2、3,即在反例集合P1中编号(1)(3)(4)的路径分别编号为1、2、3;分别将路径编号1、2、3路径中事件提取到事件集合Event_P(1)、Event_P(2)、Event_P(3)中:
Event_P(1)={insert_one_coin、insert_one_coin、select coffee、get_coffee、resetting};
Event_P(2)={insert_one_coin、not action、resetting};
Event_P(3)={insert_two_coin、select coffee、get_coffee、resetting};
事件集合Event_P(1)、Event_P(2)、Event_P(3)不存在包含与被包含关系,因此,将反例集合P1中编号(1)(3)(4)的路径加入到最短路径集合Pd中,非最短路径集合P′d为空集;
步骤a2,在所述步骤2中,考虑的是最短路径集合Pd与非最短路径集合P′d中路径的关系、事件包含关系、事件顺序是否一致,在应用于购买咖啡和啤酒的自动售卖机时,非最短路径集合P′d为空集,因此步骤2的过程省略;
步骤a3,检测最短路径集合Pd,先提取路径L1,路径L1取在反例集合P1中路径编号为1的路径,路径L2取在反例集合P1中路径编号为2的路径,分别将其中包含的事件提取到事件有序集合OE3、事件有序集合OE4中:
OE3=<insert_one_coin、insert_one_coin、select coffee、get_coffee、resetting>
OE4=<insert_one_coin、not action、resetting>
与事件集合Event_P(1)、Event_P(2)的区别在于事件有序集合中事件是顺序相关的,将其中包含的相同的事件提取到事件有序集合OE8,OE8=<insert_one_coin、resetting>,事件顺序与事件有序集合OE3中事件的顺序保持一致,另外将其中包含的相同的事件提取到事件有序集合OE9中,顺序与事件有序集合OE4中事件的顺序保持一致,OE9=<insert_one_coin、resetting>,两个事件有序集合OE3、事件有序集合OE9都只有两个事件,依次提取两个事件到事件有序对<Event1,Event2>中,<Event1,Event2>=<insert_one_coin、resetting>,即Event1=insert_one_coin,Event2=resetting,在事件有序集合OE9中与事件有序集合OE3事件顺序一致,在事件有序集合OE9与Event2相同的事件resetting排列在后,与Event1相同的事件insert_one_coin排列在前,因此,事件有序对<insert_one_coin、resetting>顺序标签为true;
接着,再提取路径L1,路径L1取在反例集合P1中路径编号为1的路径,路径L2取在反例集合P1中路径编号为3的路径,分别将其中包含的事件提取到事件有序集合OE3、事件有序集合OE4中:事件有序集合OE3维持不变,OE4=<insert_two_coin、select coffee、get_coffee、resetting>,将其中包含的相同的事件提取到事件有序集合OE8,OE8=<select coffee、get_coffee、resetting>,依次按顺序提取两个事件到事件有序对<Event1,Event2>=<select coffee、get_coffee>,另外将其中包含的相同的事件提取到事件有序集合OE9中,OE9=<select coffee、get_coffee、resetting>,顺序与事件有序集合OE4中事件的顺序保持一致,而OE9与OE8一致相同,该事件有序对的顺序标签仍然为true,另外提取事件有序对<Event1,Event2>=<select coffee、resetting>,经过分析提取的OE9与OE8一致相同,所以事件有序对<select coffee、resetting>的顺序标签仍然为true;
再提取路径L1,路径L1取在反例集合P1中路径编号为2的路径,路径L2取在反例集合P1中路径编号为3的路径,分别将其中包含的事件提取到事件有序集合OE3、事件有序集合OE4中:将其中包含的相同的事件提取到事件有序集合OE8=OE9=<resetting>,只有一个事件,不存在事件有序对。
CN201910676758.XA 2019-07-25 2019-07-25 应用于自动售卖机系统的基于模型检测的反例精化系统 Active CN110489335B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910676758.XA CN110489335B (zh) 2019-07-25 2019-07-25 应用于自动售卖机系统的基于模型检测的反例精化系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910676758.XA CN110489335B (zh) 2019-07-25 2019-07-25 应用于自动售卖机系统的基于模型检测的反例精化系统

Publications (2)

Publication Number Publication Date
CN110489335A CN110489335A (zh) 2019-11-22
CN110489335B true CN110489335B (zh) 2023-01-24

Family

ID=68548366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910676758.XA Active CN110489335B (zh) 2019-07-25 2019-07-25 应用于自动售卖机系统的基于模型检测的反例精化系统

Country Status (1)

Country Link
CN (1) CN110489335B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663191A (zh) * 2012-04-09 2012-09-12 西安电子科技大学 基于sat的命题投影时序逻辑限界模型检测方法
CN106682343A (zh) * 2016-08-31 2017-05-17 电子科技大学 一种基于图的邻接矩阵的形式化验证方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844415B (zh) * 2017-09-28 2021-02-05 西安电子科技大学 一种基于插值的模型检测路径缩减方法、计算机

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102663191A (zh) * 2012-04-09 2012-09-12 西安电子科技大学 基于sat的命题投影时序逻辑限界模型检测方法
CN106682343A (zh) * 2016-08-31 2017-05-17 电子科技大学 一种基于图的邻接矩阵的形式化验证方法

Also Published As

Publication number Publication date
CN110489335A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
Marques-Silva Minimal unsatisfiability: Models, algorithms and applications
US11055210B2 (en) Software test equipment and software testing method
CN112487592B (zh) 基于贝叶斯网络的任务可靠性建模分析方法
CN115687115B (zh) 一种移动应用程序自动化测试方法及系统
CN109964182A (zh) 用于车辆分析的方法和系统
CN106682343A (zh) 一种基于图的邻接矩阵的形式化验证方法
Marques-Silva Computing Minimally Unsatisfiable Subformulas: State of the Art and Future Directions.
Nguyen et al. Graphical animations of state machines
US7661099B2 (en) Using idempotent operations to improve transaction performance
JP7059220B2 (ja) 機械学習プログラム検証装置および機械学習プログラム検証方法
CN110489335B (zh) 应用于自动售卖机系统的基于模型检测的反例精化系统
Komuravelli et al. Learning probabilistic systems from tree samples
CN101894072B (zh) 一种模型检测中异常终止的检测方法
Luo et al. A new algorithm for testing diagnosability of fuzzy discrete event systems
CN114443506B (zh) 一种用于测试人工智能模型的方法及装置
CN113553246A (zh) 一种面向计算平台的系统评估装置
CN103782245B (zh) 技术系统的操控
JP5075695B2 (ja) プロパティ記述のカバレッジ測定装置及びプログラム
Chardigny et al. Quality-driven extraction of a component-based architecture from an object-oriented system
CN114297063A (zh) 针对源代码的自动化形式化建模与验证的方法与系统
JP2012022536A (ja) ソースコード検査方法およびソースコード検査装置
Rocha et al. On Distinguishing Sets of Structures by First-Order Sentences of Minimal Quantifier Rank
Groz et al. Active inference of extended finite state models of software systems
CN110457455A (zh) 一种三值逻辑问答咨询优化方法、系统、介质和设备
CN110236558A (zh) 婴儿发育情况预测方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant