非线性多项式循环不变式生成方法及系统与流程

文档序号:38210409发布日期:2024-06-06 18:45阅读:9来源:国知局
非线性多项式循环不变式生成方法及系统与流程

本发明涉及数据处理,特别涉及一种非线性多项式循环不变式生成方法及系统。


背景技术:

1、保证各种程序的正确性,一直以来都是一项重要且极具挑战性的工作。一般而言,程序可以用霍尔三元组表示。

2、常用的验证霍尔三元组安全性的技术是不变式生成技术。程序的一个不变式一旦确定,程序的安全性就可以得到保障。在各种不变式中,循环不变式的生成是最为困难的。循环不变式的生成涉及到循环不变量的识别。与此同时,复杂的循环依赖关系,非线性循环条件加剧了循环不变式生成的困难。而不正确的循环不变式会带来一系列问题,包括程序验证的失败,难以预料的错误和风险等。

3、循环不变式生成的重要性和挑战性使得其成为了一个长期存在的问题。其中最核心的问题是非线性循环不变式生成的生成问题。在过去多年中,多种技术得到了发展和应用,包括:约束求解,逻辑推理,反例引导,craig插值等。非线性循环不变式生成的一种重要途径是问题转化。基于代数几何的相关理论,可以将循环不变式的生成问题转化为一个双线性单目标优化问题。然而,转化后的问题中出现的双线性项使得现有的半定二次规划工具无法解决相关问题。


技术实现思路

1、基于此,本发明的目的是提供一种非线性多项式循环不变式生成方法及系统,以至少解决上述技术中的不足。

2、本发明提出一种非线性多项式循环不变式生成方法,包括:

3、将包含简单循环条件的程序转化成指定形式的霍尔逻辑三元组,并设置多项式循环不变式的次数,以确定所述霍尔逻辑三元组所对应的条件多项式;

4、基于用户所设定的辅助多项式次数生成对应的第一辅助多项式,并根据所述条件多项式和所述第一辅助多项式构建约束优化原问题,根据所述约束优化原问题构建约束优化初始问题,以得到对应的初始解;

5、引入迭代次数变量和所述用户所设置的最大迭代次数,构建第二辅助多项式,并在迭代过程中引入目标变量,分别构建两个半定二次规划问题,对两个所述半定二次规划问题进行迭代求解得到迭代求解结果;

6、对所述迭代求解结果进行验证,以得到对应的非线性多项式循环不变式。

7、进一步的,所述简单循环条件为非多路循环、非递归循环,且仅有一个循环体的循环,所述霍尔逻辑三元组中各条件包括前条件、循环条件和后条件。

8、进一步的,设置多项式循环不变式的次数,以确定所述霍尔逻辑三元组所对应的条件多项式的步骤包括:

9、设置多项式循环不变式的次数,即所有次数不大于的包含的所有多项式,其表达式为:

10、;

11、式中,为待求系数;,为自然数,均为变量;

12、引入与向量相同维度的辅助变量,以得到对应的关于辅助变量的不变式,其中,辅助变量为包含个分量的向量,其表达式为:

13、。

14、进一步的,基于用户所设定的辅助多项式次数生成对应的第一辅助多项式的步骤包括:

15、基于用户所设定的辅助多项式次数生成所述霍尔逻辑三元组中各条件的第一辅助多项式,其中,所述第一辅助多项式包括:

16、所述前条件的辅助多项式、所述多项式循环不变式的辅助多项式、的辅助多项式以及的辅助多项式和,其中,,的向量分量,均为次数为,的全系数多项式,其表达式为:

17、;

18、式中,为待求系数;,为自然数;

19、的向量分量,以及和均为次数为,包含变量的全系数多项式,形式为:

20、;

21、其中为待求系数,,各所述第一辅助多项式相互独立。

22、进一步的,所述约束优化原问题为:

23、;

24、式中,、分别为平方和sos约束,为用户设置的允许误差,为大于0的实数,取值为,表示个多项式的合取;为个多项式不等式的合取,其中,。

25、进一步的,根据所述约束优化原问题构建约束优化初始问题,以得到对应的初始解的步骤包括:

26、将所述约束优化原问题中关于所述前条件和所述后条件的约束取出,以形成优化初始问题:

27、;

28、利用求解器对所述优化初始问题进行求解,以得到循环不变式的初始解。

29、进一步的,引入迭代次数变量和所述用户所设置的最大迭代次数,构建第二辅助多项式,并在迭代过程中引入目标变量,分别构建两个半定二次规划问题,对两个所述半定二次规划问题进行迭代求解得到迭代求解结果的步骤包括:

30、引入迭代次数变量,初始化为0并根据所述用户所设置的最大迭代次数构造辅助多项式:

31、;

32、式中,,,,,,,其中,为对向下取整,为多项式的次数;

33、在第+1轮迭代中,由原问题出发,引入目标变量,固定双线性项中的,将其替换为,同时替换为,建立第一半定二次规划问题:

34、;

35、使用半定二次规划求解器进行约束求解,获得的解,记为,为实数域上的变量的多项式环。

36、进一步的,引入迭代次数变量和所述用户所设置的最大迭代次数,构建第二辅助多项式,并在迭代过程中引入目标变量,分别构建两个半定二次规划问题,对两个所述半定二次规划问题进行迭代求解得到迭代求解结果的步骤还包括:

37、在第+1轮迭代中,由原问题出发,固定双线性项中的,将其替换为,建立第二半定二次规划问题:

38、;

39、使用半定二次规划求解器进行约束求解,获得双线性项中的解,记为,为实数域上变量的多项式环。

40、进一步的,对所述迭代求解结果进行验证,以得到对应的非线性多项式循环不变式的步骤包括:

41、令=+1,若,且,则使用符号求解器进行符号验证,若验证通过,则得到非线性多项式循环不变式。

42、本发明还提出一种非线性多项式循环不变式生成系统,包括:

43、程序转化模块,用于将包含简单循环条件的程序转化成指定形式的霍尔逻辑三元组,并设置多项式循环不变式的次数,以确定所述霍尔逻辑三元组所对应的条件多项式;

44、问题约束模块,用于基于用户所设定的辅助多项式次数生成对应的第一辅助多项式,并根据所述条件多项式和所述第一辅助多项式构建约束优化原问题,根据所述约束优化原问题构建约束优化初始问题,以得到对应的初始解;

45、迭代求解模块,用于引入迭代次数变量和所述用户所设置的最大迭代次数,构建第二辅助多项式,并在迭代过程中引入目标变量,分别构建两个半定二次规划问题,对两个所述半定二次规划问题进行迭代求解得到迭代求解结果;

46、结果验证模块,用于对所述迭代求解结果进行验证,以得到对应的非线性多项式循环不变式。

47、本发明还提出一种介质,其上存储有计算机程序,该程序被处理器执行时实现上述的非线性多项式循环不变式生成方法。

48、本发明还提出一种计算机,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的非线性多项式循环不变式生成方法。

49、本发明当中的非线性多项式循环不变式生成方法及系统,将循环不变式多项式生成问题转化为含有双线性项的单目标约束优化问题,在原问题上发展出初始问题,求解后获得初始解,对原问题衍生出的两个半定二次规划问题进行迭代求解,得到候选解,通过先求解—再验证的框架对候选解进行验证,算法可以高效的生成非线性多项式循环不变式,对一个包含简单循环的程序进行安全性质验证。

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