[发明专利]基于机器学习的循环不变式自动生成方法在审

专利信息
申请号: 201910630164.5 申请日: 2019-07-12
公开(公告)号: CN110377513A 公开(公告)日: 2019-10-25
发明(设计)人: 路红;史玉石 申请(专利权)人: 南京理工大学紫金学院
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 南京知识律师事务所 32207 代理人: 李吉宽
地址: 210046 江*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 循环不变式 循环语句 自动生成 分类数据集 测试数据 基于机器 三元组 算法 计算机程序 形式化验证 有效性验证 程序状态 构造数据 后置条件 前置条件 随机生成 循环变量 有效循环 运行循环 自动验证 经验证 数据集 组数据 分类 语句 工作量 标注 学习
【权利要求书】:

1.基于机器学习的循环不变式自动生成方法,其特征在于,包含以下步骤:

步骤一,对含循环语句的计算机程序依据所设计的自动生成后置条件的算法得到所述循环语句的后置条件,构造上述程序中循环语句对应的Hoare三元组;

步骤二,依据所述循环语句的前置条件随机生成测试数据,以这些测试数据为循环变量的初始值运行循环语句,收集程序状态,从而构造数据集SV;

步骤三,对数据集SV中的每一组数据,依据Hoare三元组所定义的关系进行分类标注,形成分类数据集;

步骤四,利用所设计的核向量机KSVM算法对所收集的分类数据集进行分类,从而生成候选循环不变式;

步骤五,利用反证法对生成的候选循环不变式进行有效性验证,得到经验证的有效循环不变式。

2.根据权利要求1所述的基于机器学习的循环不变式自动生成方法,其特征在于:步骤一中,所述的自动生成后置条件的算法是通过边界值分析法计算出循环次数,并与循环语句的前置条件合成得到一些公式集合,并对这些公式集合进行简化得到后置条件。

3.根据权利要求1所述的基于机器学习的循环不变式自动生成方法,其特征在于:步骤二中,所述的依据循环语句的前置条件随机生成测试数据是通过随机方式生成满足前置条件的数据集SP和不满足前置条件的数据集SN,两种方式构造测试数据集SV=SP∪SN。

4.根据权利要求3所述的基于机器学习的循环不变式自动生成方法,其特征在于:步骤二中,所述程序状态是程序中每个变量名到变量值的映射集合,将所有的程序状态作为测试数据集SV,依据循环条件执行有限次循环语句,并记录每一次循环结束后程序状态,组成数据集SC,并将数据集SC加入到数据集SV中,即SV=SP∪SN∪SC。

5.根据权利要求1所述的基于机器学习的循环不变式自动生成方法,其特征在于:步骤三中,所述分类标注是指依据循环不变式与Hoare三元组中所定义的前置条件、后置条件和循环体的关系,将步骤二所定义的数据集SV标注为:错误的数据、一定满足循环不变式的数据、一定不满足循环不变式的数据和不确定的数据。

6.根据权利要求5所述的基于机器学习的循环不变式自动生成方法,其特征在于:步骤四中,所述的核支持向量机KSVM算法是一种由径向基核函数和线性核函数复合而成的多核函数,以使得线性不可分的数据能够在高维空间进行有效划分,所述候选循环不变式是能够明确划分步骤三所标注的一定满足循环不变式的数据和一定不满足循环不变式的数据的分类器。

7.根据权利要求1所述的基于机器学习的循环不变式自动生成方法,其特征在于:步骤五中,所述有效性验证是对候选循环不变式取反,判断前置条件或后置条件是否存在存在满足候选循环不变式范围之外的数据,如果有则为无效候选不变式,否则为有效循环不变式。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京理工大学紫金学院,未经南京理工大学紫金学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910630164.5/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top