一种神经网络型循环不变式生成方法、装置、介质及设备

文档序号:35884591发布日期:2023-10-28 17:07阅读:26来源:国知局
一种神经网络型循环不变式生成方法、装置、介质及设备

本发明涉及程序验证分析技术,尤其涉及循环程序中循环程序的循环不变式的生成。


背景技术:

1、循环不变式是在循环程序的每次执行前后均为真的谓词。循环不变式体现了循环程序中循环变量的变化规律,是验证程序正确性的重要手段。对于简单的循环程序,确定其循环不变式可以通过逻辑推导和分析得到,但对于复杂的循环程序,确定其循环不变式就会变得非常困难,尤其是循环程序内涉及非线性计算时,甚至无法以多项式形式的表达式去表述循环不变式。


技术实现思路

1、本发明所要解决的问题:复杂循环程序中,无法以多项式形式的表达式表述循环不变式情形下,循环不变式的确定。

2、为解决上述问题,本发明采用的方案如下:

3、根据本发明的一种神经网络型循环不变式生成方法,该方法包括如下步骤:

4、步骤s1:获取待验证的循环程序、输入变量、取值范围、前置条件和后置条件;所述循环程序包括循环条件和在所述循环条件限定下的循环体;所述输入变量是所述循环程序涉及的在所述循环条件外定义的变量;所述前置条件和所述后置条件是关于输入变量的条件语句的集合;各输入变量的取值满足所述前置条件表示各输入变量的取值满足所述循环程序的循环不变式;当各输入变量的取值满足所述前置条件执行所述循环程序后输出的各个输入变量的取值满足后置条件;

5、步骤s2:根据输入变量初始构建待训练的断言神经网络;所述断言神经网络用于判断各个输入变量的取值是否满足所述循环程序的循环不变式,是由一个输入层、若干隐藏层和一个输出层组成的深度神经网络;其中,输入层对应输入变量,输出层输出数值;若断言神经网络依据其输出层所输出的数值大于0,则输入变量的取值不满足所述循环程序的循环不变式;

6、步骤s3:根据前置条件通过随机方式在取值范围内生成正例训练样本集合,根据后置条件通过随机方式在取值范围内生成反例训练样本集合;所述正例训练样本和反例训练样本均为输入变量取值样本;所述输入变量取值样本包括各个输入变量的取样值;所述正例训练样本集合中,各输入变量取值样本满足所述循环程序的循环不变式;所述反例训练样本集合中,各输入变量取值样本不满足所述循环程序的循环不变式;

7、步骤s4:将正例训练样本集合和反例训练样本集合中的输入变量取值样本输入至所述断言神经网络中进行训练;训练时,分别计算正例训练样本集合的第一损失函数值和第二损失函数值以及反例训练样本集合的第三损失函数值和第四损失函数值,然后以第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值之和作为优化器的损失函数值对所述断言神经网络参数进行优化,直到第一损失函数值与第三损失函数值之和为0;

8、步骤s5:根据所述断言神经网络参数,分别构建霍尔逻辑循环不变式的三个条件所对应的混合整型规划约束编码;然后将三个混合整型规划约束编码分别输入至混合整型规划约束求解器进行求解;若求解失败,则基于对应的极值点对正例训练样本集合或反例训练样本集合更新后返回步骤s4,直到三个混合整型规划约束编码都求解成功;

9、所述步骤s4中,第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值采用如下公式计算:

10、

11、

12、

13、

14、其中,l1、l2、l3和l4分别表示第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值,初始为0;sigmoid为sigmoid函数,ln为以自然常数为底的对数,max表示为取最大值函数,min为取最小值函数,f为断言神经网络的函数表示,e为预先设定的常数;

15、pxi表示正例训练样本集合中第i个输入变量取值样本,f(pxi)表示输入变量取值样本pxi输入至断言神经网络后的输出,kp为正例训练样本集合中输入变量取值样本的个数;

16、mxi表示反例训练样本集合中第i个输入变量取值样本,f(mxi)表示输入变量取值样本mxi输入至断言神经网络后的输出,km为反例训练样本集合中输入变量取值样本的个数;

17、所述步骤s5中,三个混合整型规划约束编码分别为:

18、第一混合整型规划约束编码:x满足前置条件下,求解f(x)的最大值;

19、第二混合整型规划约束编码:x满足循环条件,且f(x)≤0,求解f(s(x))的最大值;

20、第三混合整型规划约束编码:x不满足循环条件,且f(x)≤0,求解q(x)的最大值;

21、其中,f为断言神经网络的函数表示;s(x)为循环体的函数表示;q(x)为后置条件的函数表示,q(x)≤0表示x满足后置条件;x为输入变量取值。

22、进一步,根据本发明的神经网络型循环不变式生成方法,所述步骤s2中所述根据前置条件通过随机方式在取值范围内生成正例训练样本集合包括如下步骤:

23、步骤s2a1:在所述取值范围内为各个输入变量随机取值,直到随机取得的各个输入变量取值满足前置条件,然后将满足前置条件的随机取得的各个输入变量取值作为一个输入变量取值样本加入至正例训练样本集合中;

24、步骤s2a2:将步骤s2a1获得的随机的输入变量取值样本输入至所述循环程序中执行,将循环程序每一轮执行结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。

25、进一步,根据本发明的神经网络型循环不变式生成方法,所述步骤s5中混合整型规划约束求解器对所述第一混合整型规划约束编码求解失败时,将求解得到的极值点作为一个输入变量取值样本加入至正例训练样本集合中,并极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。

26、进一步,根据本发明的神经网络型循环不变式生成方法,所述步骤s5中混合整型规划约束求解器对所述第二混合整型规划约束编码求解失败时,将求解得到的极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本,若该输入变量取值样本满足后置条件,则将其加入至正例训练样本集合,否则将其加入至反例训练样本集合,直到各个输入变量的取值不满足循环条件。

27、根据本发明的一种神经网络型循环不变式生成装置,该装置包括如下模块:

28、模块m1,用于:获取待验证的循环程序、输入变量、取值范围、前置条件和后置条件;所述循环程序包括循环条件和在所述循环条件限定下的循环体;所述输入变量是所述循环程序涉及的在所述循环条件外定义的变量;所述前置条件和所述后置条件是关于输入变量的条件语句的集合;各输入变量的取值满足所述前置条件表示各输入变量的取值满足所述循环程序的循环不变式;当各输入变量的取值满足所述前置条件执行所述循环程序后输出的各个输入变量的取值满足后置条件;;

29、模块m2,用于:根据输入变量初始构建待训练的断言神经网络;所述断言神经网络用于判断各个输入变量的取值是否满足所述循环程序的循环不变式,是由一个输入层、若干隐藏层和一个输出层组成的深度神经网络;其中,输入层对应输入变量,输出层输出数值;若断言神经网络依据其输出层所输出的数值大于0,则输入变量的取值不满足所述循环程序的循环不变式;

30、模块m3,用于:根据前置条件通过随机方式在取值范围内生成正例训练样本集合,根据后置条件通过随机方式在取值范围内生成反例训练样本集合;所述正例训练样本和反例训练样本均为输入变量取值样本;所述输入变量取值样本包括各个输入变量的取样值;所述正例训练样本集合中,各输入变量取值样本满足所述循环程序的循环不变式;所述反例训练样本集合中,各输入变量取值样本不满足所述循环程序的循环不变式;

31、模块m4,用于:将正例训练样本集合和反例训练样本集合中的输入变量取值样本输入至所述断言神经网络中进行训练;训练时,分别计算正例训练样本集合的第一损失函数值和第二损失函数值以及反例训练样本集合的第三损失函数值和第四损失函数值,然后以第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值之和作为优化器的损失函数值对所述断言神经网络参数进行优化,直到第一损失函数值与第三损失函数值之和为0;

32、模块m5,用于:根据所述断言神经网络参数,分别构建霍尔逻辑循环不变式的三个条件所对应的混合整型规划约束编码;然后将三个混合整型规划约束编码分别输入至混合整型规划约束求解器进行求解;若求解失败,则基于对应的极值点对正例训练样本集合或反例训练样本集合更新后返回模块m4,直到三个混合整型规划约束编码都求解成功;

33、所述模块m4中,第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值采用如下公式计算:

34、

35、

36、

37、

38、其中,l1、l2、l3和l4分别表示第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值,初始为0;sigmoid为sigmoid函数,ln为以自然常数为底的对数,max表示为取最大值函数,min为取最小值函数,e为预先设定的常数;

39、pxi表示正例训练样本集合中第i个输入变量取值样本,f(pxi)表示输入变量取值样本pxi输入至断言神经网络后的输出,kp为正例训练样本集合中输入变量取值样本的个数;

40、mxi表示反例训练样本集合中第i个输入变量取值样本,f(mxi)表示输入变量取值样本mxi输入至断言神经网络后的输出,km为反例训练样本集合中输入变量取值样本的个数;

41、所述模块m5中,三个混合整型规划约束编码分别为:

42、第一混合整型规划约束编码:x满足前置条件下,求解f(x)的最大值;

43、第二混合整型规划约束编码:x满足循环条件,且f(x)≤0,求解f(s(x))的最大值;

44、第三混合整型规划约束编码:x不满足循环条件,且f(x)≤0,求解q(x)的最大值;

45、其中,f为断言神经网络的函数表示;s(x)为循环体的函数表示;q(x)为后置条件的函数表示,q(x)≤0表示x满足后置条件;x为输入变量取值

46、进一步,根据本发明的神经网络型循环不变式生成装置,所述模块m2中所述根据前置条件通过随机方式在取值范围内生成正例训练样本集合包括如下模块:

47、模块m2a1,用于:在所述取值范围内为各个输入变量随机取值,直到随机取得的各个输入变量取值满足前置条件,然后将满足前置条件的随机取得的各个输入变量取值作为一个输入变量取值样本加入至正例训练样本集合中;

48、模块m2a2,用于:将模块m2a1获得的随机的输入变量取值样本输入至所述循环程序中执行,将循环程序每一轮执行结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。

49、进一步,根据本发明的神经网络型循环不变式生成装置,所述模块m5中混合整型规划约束求解器对所述第一混合整型规划约束编码求解失败时,将求解得到的极值点作为一个输入变量取值样本加入至正例训练样本集合中,并极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。

50、进一步,根据本发明的神经网络型循环不变式生成装置,所述模块m5中混合整型规划约束求解器对所述第二混合整型规划约束编码求解失败时,将求解得到的极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本,若该输入变量取值样本满足后置条件,则将其加入至正例训练样本集合,否则将其加入至反例训练样本集合,直到各个输入变量的取值不满足循环条件。

51、根据本发明的一种介质;该介质存储有可以被机器所读取的程序指令集;当该介质内所存储的程序指令集被机器读取并执行时可以实现上述的神经网络型循环不变式生成方法。

52、根据本发明的一种设备;该设备包括处理器和存储器;所述存储器内存储有程序指令集;其特征在于,当所述存储器内所存储的程序指令集被所述处理器加载并执行时可以实现上述的神经网络型循环不变式生成方法。

53、本发明的技术效果如下:相比传统多项式型循环不变式,根据通用近似定理,神经网络型循环不变式所能描述的不变式性质更精确,可以为非线性程序生成循环不变式。本发明使用深度神经网络,扩展容易,无需事先确定不变式最高次项的次数以及循环执行次数。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1