当前位置: 首页 > 专利查询>南京大学专利>正文

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

技术编号:39248218 阅读:10 留言:0更新日期:2023-10-30 12:00
本发明专利技术公开了一种神经网络型循环不变式生成的方法,从而验证程序正确性。该生成方法首先通过霍尔逻辑循环不变式条件和模拟运行的方式生成用于训练的正反例数据集,然后使用Adam优化器优化参数,找出备选神经网络,最后验证网络的正确性。相比传统多项式型循环不变式,根据通用近似定理,神经网络型循环不变式所能描述的不变式性质更精确,可以为非线性程序生成循环不变式。本发明专利技术使用深度神经网络,参数扩展十分容易,无需事先确定不变式最高次项的次数以及循环执行次数。项的次数以及循环执行次数。项的次数以及循环执行次数。

【技术实现步骤摘要】
一种神经网络型循环不变式生成方法、装置、介质及设备


[0001]本专利技术涉及程序验证分析技术,尤其涉及循环程序中循环程序的循环不变式的生成。

技术介绍

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

技术实现思路

[0003]本专利技术所要解决的问题:复杂循环程序中,无法以多项式形式的表达式表述循环不变式情形下,循环不变式的确定。
[0004]为解决上述问题,本专利技术采用的方案如下:
[0005]根据本专利技术的一种神经网络型循环不变式生成方法,该方法包括如下步骤:
[0006]步骤S1:获取待验证的循环程序、输入变量、取值范围、前置条件和后置条件;所述循环程序包括循环条件和在所述循环条件限定下的循环体;所述输入变量是所述循环程序涉及的在所述循环条件外定义的变量;所述前置条件和所述后置条件是关于输入变量的条件语句的集合;各输入变量的取值满足所述前置条件表示各输入变量的取值满足所述循环程序的循环不变式;当各输入变量的取值满足所述前置条件执行所述循环程序后输出的各个输入变量的取值满足后置条件;
[0007]步骤S2:根据输入变量初始构建待训练的断言神经网络;所述断言神经网络用于判断各个输入变量的取值是否满足所述循环程序的循环不变式,是由一个输入层、若干隐藏层和一个输出层组成的深度神经网络;其中,输入层对应输入变量,输出层输出数值;若断言神经网络依据其输出层所输出的数值大于0,则输入变量的取值不满足所述循环程序的循环不变式;
[0008]步骤S3:根据前置条件通过随机方式在取值范围内生成正例训练样本集合,根据后置条件通过随机方式在取值范围内生成反例训练样本集合;所述正例训练样本和反例训练样本均为输入变量取值样本;所述输入变量取值样本包括各个输入变量的取样值;所述正例训练样本集合中,各输入变量取值样本满足所述循环程序的循环不变式;所述反例训练样本集合中,各输入变量取值样本不满足所述循环程序的循环不变式;
[0009]步骤S4:将正例训练样本集合和反例训练样本集合中的输入变量取值样本输入至所述断言神经网络中进行训练;训练时,分别计算正例训练样本集合的第一损失函数值和第二损失函数值以及反例训练样本集合的第三损失函数值和第四损失函数值,然后以第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值之和作为优化器的损失
函数值对所述断言神经网络参数进行优化,直到第一损失函数值与第三损失函数值之和为0;
[0010]步骤S5:根据所述断言神经网络参数,分别构建霍尔逻辑循环不变式的三个条件所对应的混合整型规划约束编码;然后将三个混合整型规划约束编码分别输入至混合整型规划约束求解器进行求解;若求解失败,则基于对应的极值点对正例训练样本集合或反例训练样本集合更新后返回步骤S4,直到三个混合整型规划约束编码都求解成功;
[0011]所述步骤S4中,第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值采用如下公式计算:
[0012][0013][0014][0015][0016]其中,l1、l2、l3和l4分别表示第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值,初始为0;Sigmoid为Sigmoid函数,ln为以自然常数为底的对数,max表示为取最大值函数,min为取最小值函数,F为断言神经网络的函数表示,E为预先设定的常数;
[0017]px
i
表示正例训练样本集合中第i个输入变量取值样本,F(px
i
)表示输入变量取值样本px
i
输入至断言神经网络后的输出,KP为正例训练样本集合中输入变量取值样本的个数;
[0018]mx
i
表示反例训练样本集合中第i个输入变量取值样本,F(mx
i
)表示输入变量取值样本mx
i
输入至断言神经网络后的输出,KM为反例训练样本集合中输入变量取值样本的个数;
[0019]所述步骤S5中,三个混合整型规划约束编码分别为:
[0020]第一混合整型规划约束编码:x满足前置条件下,求解F(x)的最大值;
[0021]第二混合整型规划约束编码:x满足循环条件,且F(x)≤0,求解F(S(x))的最大值;
[0022]第三混合整型规划约束编码:x不满足循环条件,且F(x)≤0,求解Q(x)的最大值;
[0023]其中,F为断言神经网络的函数表示;S(x)为循环体的函数表示;Q(x)为后置条件的函数表示,Q(x)≤0表示x满足后置条件;x为输入变量取值。
[0024]进一步,根据本专利技术的神经网络型循环不变式生成方法,所述步骤S2中所述根据前置条件通过随机方式在取值范围内生成正例训练样本集合包括如下步骤:
[0025]步骤S2A1:在所述取值范围内为各个输入变量随机取值,直到随机取得的各个输入变量取值满足前置条件,然后将满足前置条件的随机取得的各个输入变量取值作为一个输入变量取值样本加入至正例训练样本集合中;
[0026]步骤S2A2:将步骤S2A1获得的随机的输入变量取值样本输入至所述循环程序中执行,将循环程序每一轮执行结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。
[0027]进一步,根据本专利技术的神经网络型循环不变式生成方法,所述步骤S5中混合整型
规划约束求解器对所述第一混合整型规划约束编码求解失败时,将求解得到的极值点作为一个输入变量取值样本加入至正例训练样本集合中,并极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。
[0028]进一步,根据本专利技术的神经网络型循环不变式生成方法,所述步骤S5中混合整型规划约束求解器对所述第二混合整型规划约束编码求解失败时,将求解得到的极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本,若该输入变量取值样本满足后置条件,则将其加入至正例训练样本集合,否则将其加入至反例训练样本集合,直到各个输入变量的取值不满足循环条件。
[0029]根据本专利技术的一种神经网络型循环不变式生成装置,该装置包括如下模块:
[0030]模块M1,用于:获取待验证的循环程序、输入变量、取值范围、前置条件和后置条件;所述循环程序包括循环条件和在所述循环条件限定下的循环体;所述输入变量是所述循环程序涉及的在所述循环条件外定义的变量;所述前置条件和所述后置条件是关于输入变量的条件语句的集合;各输入变量的取值满足所述前本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种神经网络型循环不变式生成方法,其特征在于,该方法包括如下步骤:步骤S1:获取待验证的循环程序、输入变量、取值范围、前置条件和后置条件;所述循环程序包括循环条件和在所述循环条件限定下的循环体;所述输入变量是所述循环程序涉及的在所述循环条件外定义的变量;所述前置条件和所述后置条件是关于输入变量的条件语句的集合;各输入变量的取值满足所述前置条件表示各输入变量的取值满足所述循环程序的循环不变式;当各输入变量的取值满足所述前置条件执行所述循环程序后输出的各个输入变量的取值满足后置条件;步骤S2:根据输入变量初始构建待训练的断言神经网络;所述断言神经网络用于判断各个输入变量的取值是否满足所述循环程序的循环不变式,是由一个输入层、若干隐藏层和一个输出层组成的深度神经网络;其中,输入层对应输入变量,输出层输出数值;若断言神经网络依据其输出层所输出的数值大于0,则输入变量的取值不满足所述循环程序的循环不变式;步骤S3:根据前置条件通过随机方式在取值范围内生成正例训练样本集合,根据后置条件通过随机方式在取值范围内生成反例训练样本集合;所述正例训练样本和反例训练样本均为输入变量取值样本;所述输入变量取值样本包括各个输入变量的取样值;所述正例训练样本集合中,各输入变量取值样本满足所述循环程序的循环不变式;所述反例训练样本集合中,各输入变量取值样本不满足所述循环程序的循环不变式;步骤S4:将正例训练样本集合和反例训练样本集合中的输入变量取值样本输入至所述断言神经网络中进行训练;训练时,分别计算正例训练样本集合的第一损失函数值和第二损失函数值以及反例训练样本集合的第三损失函数值和第四损失函数值,然后以第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值之和作为优化器的损失函数值对所述断言神经网络参数进行优化,直到第一损失函数值与第三损失函数值之和为0;步骤S5:根据所述断言神经网络参数,分别构建霍尔逻辑循环不变式的三个条件所对应的混合整型规划约束编码;然后将三个混合整型规划约束编码分别输入至混合整型规划约束求解器进行求解;若求解失败,则基于对应的极值点对正例训练样本集合或反例训练样本集合更新后返回步骤S4,直到三个混合整型规划约束编码都求解成功;所述步骤S4中,第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值采用如下公式计算:采用如下公式计算:采用如下公式计算:采用如下公式计算:其中,l1、l2、l3和l4分别表示第一损失函数值、第二损失函数值、第三损失函数值和第四损失函数值,初始为0;Sigmoid为Sigmoid函数,ln为以自然常数为底的对数,max表示为取最大值函数,min为取最小值函数,F为断言神经网络的函数表示,E为预先设定的常数;px
i
表示正例训练样本集合中第i个输入变量取值样本,F(px
i
)表示输入变量取值样本px
i
输入至断言神经网络后的输出,KP为正例训练样本集合中输入变量取值样本的个数;
mx
i
表示反例训练样本集合中第i个输入变量取值样本,F(mx
i
)表示输入变量取值样本mx
i
输入至断言神经网络后的输出,KM为反例训练样本集合中输入变量取值样本的个数;所述步骤S5中,三个混合整型规划约束编码分别为:第一混合整型规划约束编码:x满足前置条件下,求解F(x)的最大值;第二混合整型规划约束编码:x满足循环条件,且F(x)≤0,求解F(S(x))的最大值;第三混合整型规划约束编码:x不满足循环条件,且F(x)≤0,求解Q(x)的最大值;其中,F为断言神经网络的函数表示;S(x)为循环体的函数表示;Q(x)为后置条件的函数表示,Q(x)≤0表示x满足后置条件;x为输入变量取值。2.根据权利要求1所述神经网络型循环不变式生成方法,其特征在于,所述步骤S2中所述根据前置条件通过随机方式在取值范围内生成正例训练样本集合包括如下步骤:步骤S2A1:在所述取值范围内为各个输入变量随机取值,直到随机取得的各个输入变量取值满足前置条件,然后将满足前置条件的随机取得的各个输入变量取值作为一个输入变量取值样本加入至正例训练样本集合中;步骤S2A2:将步骤S2A1获得的随机的输入变量取值样本输入至所述循环程序中执行,将循环程序每一轮执行结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。3.根据权利要求1所述神经网络型循环不变式生成方法,其特征在于,所述步骤S5中混合整型规划约束求解器对所述第一混合整型规划约束编码求解失败时,将求解得到的极值点作为一个输入变量取值样本加入至正例训练样本集合中,并极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本加入至正例训练样本集合,直到各个输入变量的取值不满足循环条件。4.根据权利要求1所述神经网络型循环不变式生成方法,其特征在于,所述步骤S5中混合整型规划约束求解器对所述第二混合整型规划约束编码求解失败时,将求解得到的极值点输入至所述循环程序中执行,将循环程序每一轮结束时的各个输入变量的取值作为输入变量取值样本,若该输入变量取值样本满足后置条件,则将其加入至正例训练样本集合,否则将其加入至反例训练样本集合,直到各个输入变量的取值不满足循环条件。5.一种神经网络型循环不变式生成装置,其特征在于,该装置包括如下模块:模块M1,用于:获取待验证的循环程序、输入变量、取值范围、前置条件和后置条件;所述循环程序包括循环条件和在所述循环条件限定下的循环体;所述输入变量...

【专利技术属性】
技术研发人员:陈鑫谢宇轩
申请(专利权)人:南京大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1