System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于自动化定理证明器的C代码程序验证方法及系统技术方案_技高网

一种基于自动化定理证明器的C代码程序验证方法及系统技术方案

技术编号:41074968 阅读:2 留言:0更新日期:2024-04-24 11:32
本发明专利技术提供一种基于自动化定理证明器的C代码程序验证方法及系统,包括C代码编译器、语义解析器、自动定理证明器、测试用例生成器、Isabelle交互式定理证明器、证明目标桥接器、向量数据库。本方案利用所述语义解析器,将项目代码转化为等效Isabelle/HOL代码,并基于深度学习算法的自动定理证明器,结合形式规约对描述的命题进行自动证明,同时在这个过程中利用基于属性的测试用例生成器,对证明子目标进行验证和结果反馈,优化自动证明目标搜索算法,提高自动化定理证明在C代码程序验证领域的能力和效率。

【技术实现步骤摘要】

本专利技术涉及程序验证,具体为一种基于自动化定理证明器的c代码程序验证方法及系统。


技术介绍

1、随着定理证明技术的发展和相关工具链的成熟,交互式定理证明器在高安全行业(如航空航天、医疗设备、汽车和金融服务)的c代码验证变得越来越普遍。主流的交互式定理证明器,例如isabelle/hol,可以通过由用户手动提交证明目标和证明代码的方式,形式化地验证数学定理和计算机程序的正确性。尽管isabelle/hol本身提供了少量自动证明的功能,但当前的自动化工具往往仍需要专家级用户来操作,因为它们需要复杂的用户指导和定理证明知识,这大大增加了定理证明在程序验证领域的使用成本。

2、另一方面,自动化定理证明技术在数学和程序证明领域近年来逐步取得进展。通过实例化的思想对证明目标进行替换并引导证明目标搜索算法这一思想在自动数学证明领域已取得成效,而通过工程方法强化自动化定理证明在程序验证领域的应用还尚未成熟。


技术实现思路

1、(一)解决的技术问题

2、针对现有技术的不足,本专利技术提供了一种基于自动化定理证明器的c代码程序验证方法及系统,解决了上述
技术介绍
中提出的问题。

3、(二)技术方案

4、为实现以上目的,本专利技术通过以下技术方案予以实现:一种基于自动化定理证明器的c代码程序验证方法及系统,包括c代码编译器、语义解析器、自动定理证明器、测试用例生成器、isabelle交互式定理证明器、证明目标桥接器、向量数据库,所述c代码编译器将项目c代码编译为目标平台的二进制文件,所述语义解析器读取经过预编译的c代码,解析代码中的结构体、函数全局与局部变量、函数语义,转换成等效的 isabelle/hol代码,所述自动定理证明器根据isabelle代码命题并通过所述向量数据库进行近邻最近邻ann查询搜索,启发定理证明器对命题的证明代码进行自动生成并验证,所述测试用例生成器根据isabelle/hol规约代码文件,解析测试约束条件并基于属性生成测试用例,并运行编译后的二进制文件运行测试用例,所述isabelle交互式定理证明器用于自动检查自动定理证明器生成证明的正确性并将结果反馈至自动定理证明器,所述证明目标桥接器实时获取自动定理证明器和测试用例生成器的运行结果并使用接口进行异步通信,所述向量数据库记录自动定理证明器的模型参数,在证明代码生成时提供向量化搜索和近邻匹配,同时记录测试用例即结果,用于对模型进行后续优化迭代。

5、优选的,所述语义解析器读取c代码文件后将c代码中的结构体创建isabelle 类型,将局部和全局变量表示为isabelle中的record类型,解析器通过状态单子描述c函数模型,并通过单子浅嵌入,将c代码转换成等效的isabelle代码,同时解析器可配置内存模型相关的编译环境,在解析时根据内存模型参数分配基本算术类型(如 int)的字节大小和堆内存模型,进而理解c语言的复杂语义,如指针运算、结构体、并发控制等,并相应地生成形式化语言的描述。特性包括高度的准确性、对各种c语言构造的支持,以及能够配置不同内存模型的能力。优选的,所述自动定理证明器通过的命题和证明代码进行特征工程,在矢量化处理后通过向量数据库存储归档,并结合已有的定理证明代码数据,通过深度学习,对自动定理生成模型的参数进行优化和调整,所述自动定理证明器实时读取所属向量数据库中生成的测试用例的结果并将迭代应用到后续的持续集成和验证的过程中。

6、优选的,所述用例生成器根据 isabelle/hol规约描述代码,解析出测试用例所需满足的约束条件,并对用例的边界值进行解析,同时生成器读取原始c代码文件,根据前述解析信息,对测试用例进行自动生成。

7、优选的,所述证明目标桥接器用于实时接收自动定理证明器中根据近邻算法搜索得到的优先级高的证明子目标,发送给测试用例生成器生成并检查相关用例;同时接收测试用例运行结果,发送给自动定理证明器,对搜索树优先级进行调整,同时所述证明目标桥接器将生成证明目标、证明代码和结果进行记录,用于迭代优化自动定理证明器模型参数。

8、一种基于自动化定理证明器的c代码程序验证方法,其特征在于,包括以下步骤:

9、s1、提交项目c代码文件、验证参数配置文件、isabelle/hol规约文件。所述验证参数配置文件中包含待验证函数的函数列表、 函数性质描述的isabelle定理文件路径和编译目标机器的平台信息;

10、s2、将c代码文件进行预编译,并通过语义解析器,根据配置将项目c代码待验函数代码转化为等效的 isabelle/hol代码;

11、s3、根据上述生成的代码等效 isabelle/hol代码和提交的 isabelle/hol规约代码,通过特征工程分别矢量化,并在向量数据库中利用相似性搜索,启发定理自动推理和生成,将生成的证明代码提交至isabelle交互式定理证明器进行检验。与此同时,生成将规约代码提交至测试用例生成器,根据isabelle 规约文件,生成测试用例,并进行用例的编译运行检查;

12、s4、对自动定理证明器在生成证明中计算得到的优先子目标队列,通过证明目标桥接器发送给测试用例生成器生成并检查相关用例;同时接收测试用例运行结果,发送给自动定理证明器,对搜索树优先级进行调整优化;

13、s5、对通过交互式定理证明器的子目标、证明代码和证明结果,记录在向量数据库中,用于迭代优化自动定理证明器模型参数。

14、(三)有益效果

15、本专利技术提供了一种基于自动化定理证明器的c代码程序验证方法及系统。具备以下有益效果:

16、1、本方案利用基于深度学习算法的自动定理证明器,对代码及形式规约描述的命题进行自动证明,同时在这个过程中利用基于属性的测试用例生成器,对证明子目标进行验证和结果反馈,优化自动证明目标搜索算法,提高自动化定理证明在c代码程序验证领域的能力和效率。

本文档来自技高网...

【技术保护点】

1.一种基于自动化定理证明器的C代码程序验证系统,其特征在于:包括C代码编译器、语义解析器、自动定理证明器、测试用例生成器、Isabelle交互式定理证明器、证明目标桥接器、向量数据库,所述C代码编译器将项目C代码编译为目标平台的二进制文件,所述语义解析器读取经过预编译的C代码,解析代码中的结构体、函数全局与局部变量、函数语义,转换成等效的Isabelle/HOL代码,所述自动定理证明器根据Isabelle代码命题并通过所述向量数据库进行近邻最近邻ANN查询搜索,启发定理证明器对命题的证明代码进行自动生成并验证,所述测试用例生成器根据Isabelle/HOL规约代码文件,解析测试约束条件并基于属性生成测试用例,并运行编译后的二进制文件运行测试用例,所述Isabelle交互式定理证明器用于自动检查自动定理证明器生成证明的正确性并将结果反馈至自动定理证明器,所述证明目标桥接器实时获取自动定理证明器和测试用例生成器的运行结果并使用接口进行异步通信,所述向量数据库记录自动定理证明器的模型参数,在证明代码生成时提供向量化搜索和近邻匹配,同时记录测试用例即结果,用于对模型进行后续优化迭代。</p>

2.根据权利要求1所述的一种基于自动化定理证明器的C代码程序验证系统,其特征在于:所述语义解析器读取C代码文件后将C代码中的结构体创建Isabelle类型,将局部和全局变量表示为Isabelle中的record类型,解析器通过状态单子描述C函数模型,并通过单子浅嵌入,将C代码转换成等效的Isabelle代码,同时解析器可配置内存模型相关的编译环境,在解析时根据内存模型参数分配基本算术类型的字节大小和堆内存模型。

3.根据权利要求1所述的一种基于自动化定理证明器的C代码程序验证系统,其特征在于:所述自动定理证明器通过的命题和证明代码进行特征工程,在矢量化处理后通过向量数据库存储归档,并结合已有的定理证明代码数据,通过深度学习,对自动定理生成模型的参数进行优化和调整,所述自动定理证明器实时读取所属向量数据库中生成的测试用例的结果并将迭代应用到后续的持续集成和验证的过程中。

4.根据权利要求1所述的一种基于自动化定理证明器的C代码程序验证系统,其特征在于:所述用例生成器根据Isabelle/HOL规约描述代码,解析出测试用例所需满足的约束条件,并对用例的边界值进行解析,同时生成器读取原始C代码文件,根据解析信息,对测试用例进行自动生成。

5.根据权利要求1所述的一种基于自动化定理证明器的C代码程序验证系统,其特征在于:所述证明目标桥接器用于实时接收自动定理证明器中根据近邻算法搜索得到的优先级高的证明子目标,发送给测试用例生成器生成并检查相关用例;同时接收测试用例运行结果,发送给自动定理证明器,对搜索树优先级进行调整,同时所述证明目标桥接器将生成证明目标、证明代码和结果进行记录,用于迭代优化自动定理证明器模型参数。

6.根据权利要求1所述的一种基于自动化定理证明器的C代码程序验证系统的验证方法,其特征在于,包括以下步骤:

...

【技术特征摘要】

1.一种基于自动化定理证明器的c代码程序验证系统,其特征在于:包括c代码编译器、语义解析器、自动定理证明器、测试用例生成器、isabelle交互式定理证明器、证明目标桥接器、向量数据库,所述c代码编译器将项目c代码编译为目标平台的二进制文件,所述语义解析器读取经过预编译的c代码,解析代码中的结构体、函数全局与局部变量、函数语义,转换成等效的isabelle/hol代码,所述自动定理证明器根据isabelle代码命题并通过所述向量数据库进行近邻最近邻ann查询搜索,启发定理证明器对命题的证明代码进行自动生成并验证,所述测试用例生成器根据isabelle/hol规约代码文件,解析测试约束条件并基于属性生成测试用例,并运行编译后的二进制文件运行测试用例,所述isabelle交互式定理证明器用于自动检查自动定理证明器生成证明的正确性并将结果反馈至自动定理证明器,所述证明目标桥接器实时获取自动定理证明器和测试用例生成器的运行结果并使用接口进行异步通信,所述向量数据库记录自动定理证明器的模型参数,在证明代码生成时提供向量化搜索和近邻匹配,同时记录测试用例即结果,用于对模型进行后续优化迭代。

2.根据权利要求1所述的一种基于自动化定理证明器的c代码程序验证系统,其特征在于:所述语义解析器读取c代码文件后将c代码中的结构体创建isabelle类型,将局部和全局变量表示为isabelle中的record类型,解析器通过状态单子描述c函数模型,并通过单子浅嵌入,将c代码转换成等效的i...

【专利技术属性】
技术研发人员:赵永望章喆
申请(专利权)人:浙江望安科技有限公司
类型:发明
国别省市:

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

1