[发明专利]基于机器学习的循环不变式自动生成方法在审
申请号: | 201910630164.5 | 申请日: | 2019-07-12 |
公开(公告)号: | CN110377513A | 公开(公告)日: | 2019-10-25 |
发明(设计)人: | 路红;史玉石 | 申请(专利权)人: | 南京理工大学紫金学院 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京知识律师事务所 32207 | 代理人: | 李吉宽 |
地址: | 210046 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 循环不变式 循环语句 自动生成 分类数据集 测试数据 基于机器 三元组 算法 计算机程序 形式化验证 有效性验证 程序状态 构造数据 后置条件 前置条件 随机生成 循环变量 有效循环 运行循环 自动验证 经验证 数据集 组数据 分类 语句 工作量 标注 学习 | ||
本发明公开了基于机器学习自动生成循环不变式的方法。首先对含循环语句的计算机程序依据一定的算法得到循环语句的后置条件,构造循环语句对应的Hoare三元组;然后依据循环语句的前置条件随机生成测试数据,以这些测试数据为循环变量的初始值运行循环语句,收集程序状态,构造数据集SV;对数据集SV中的每一组数据依据Hoare三元组进行分类标注形成分类数据集;利用KSVM算法对所收集的分类数据集进行分类,生成候选循环不变式;利用反证法对生成的候选不变式进行有效性验证,得到经验证的有效循环不变式。本发明实现了面向可运行的C程序的自动生成循环不变式,且支持生成提供形式更加丰富的循环不变式,能够大大减少形式化验证中循环语句自动验证的工作量。
技术领域
本发明属于软件工程、自动验证、形式化方法技术领域,涉及一种循环不变式自动生成方法。
背景技术
软件作为当今信息化社会的重要基础设施,已广泛应用于能源、交通、通信、金融和国防等安全攸关领域中。然而,随着软件集成程度的提高和软件系统结构的日益复杂,各类软件的高可信性质越来越不能保证。软件验证以逻辑和数学为基础,支持软件进行严格的形式规约和验证,是确保软件可信性的一种有效措施。软件验证的目标是证明程序在任何执行路径下均满足一定的形式化规约,即程序在确定的条件下执行结束后便可满足一定的要求。软件验证的一般步骤是针对待验证的程序撰写形式化规约(如前置条件、后置条件和循环不变式),然后利用自动验证工具或交互式定理证明器验证给定程序是否满足所撰写的形式化规约。根据所使用的验证工具不同,可将形式化验证方法分为人工撰写证明脚本和自动化验证两类。人工撰写形式化证明脚本方法即验证者利用Isabelle、Coq和HOL4等交互式定理证明器,依据待验证程序运行环境建立形式化模型,根据其满足的属性建立形式化规约,并在交互式定理证明器中完成推理验证,其证明开销较大。
为了提高验证效率、简化验证难度,出现了Z3、Danfy和Why3等自动化验证工具。运用自动化验证工具对代码量较少的程序进行验证,无需验证者撰写大量证明脚本,仅需按照自动化验证工具的规范撰写待验证程序的形式化规约,即可快速得到程序是否正确的验证结果。然而,为程序提供合适的形式化规约,尤其是循环不变式,需要验证者依据对程序的深刻理解进行手工撰写,这对于验证者来说是一项任务繁重的工作任务且容易出现错误。
发明内容
本发明所要解决的问题是提供一种基于机器学习的方法实现面向可运行的计算机程序的自动生成循环不变式,以克服自动验证过程需要手工撰写循环不变式的困难,缩短验证周期和避免手工撰写循环不变式出现的错误问题。
为此目的,本发明提供的基于机器学习自动生成循环不变式的方法,包括以下步骤,
步骤一,对含循环语句的计算机程序,如C程序,依据所设计的自动生成后置条件的算法得到循环语句的后置条件,构造计算机程序中循环语句对应的Hoare三元组;
步骤二,依据循环语句的前置条件随机生成测试数据,以这些测试数据为循环变量的初始值运行循环语句,收集程序状态,从而构造数据集SV;
步骤三,对数据集SV中的每一组数据,依据Hoare三元组所定义的关系进行分类标注形成分类数据集;
步骤四,利用所设计的核支持向量机KSVM(Kernel Support Vector Machine)算法对所收集的分类数据集进行分类,从而生成候选循环不变式;
步骤五,利用反证法对生成的候选不变式进行有效性验证,得到经验证的有效循环不变式。
进一步,上述步骤一中,其目标是实现对程序中循环语句后置条件的自动生成,所述含循环语句的程序是具有前置条件、单层循环且循环变量是可归纳类型,以便通过边界值分析法计算出循环次数并结合前置条件生成后置条件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学紫金学院,未经南京理工大学紫金学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910630164.5/2.html,转载请声明来源钻瓜专利网。