保护程序的方法_6

文档序号:9383071阅读:来源:国知局
明第一程序所需要的一个分支是不可能的(即本地属性),在第一个程序中做同样的证 明相同的分支也是不可能的(即满足本地属性)。当然,其中的分支(即程序点)的改变已 被保存。一些额外的充足的关系可以明显地被加入到这些改变的构造的点。这不是能在这 里简单描述的。
[0278] 不循环的第二程序是通过自动构造在本节的开头描述的不变量,被用来生成和证 明不变量,然后将属性传递到第一程序。
[0279] 但是,更为方便的是从第二程序传送自动生成的的不变量到第一程序保持不变代 码中,也可对于循环的节点,通过考虑所述第二组的代码nib,其是对应于一循环点ni。通 常,在第一程序的一路径,相同的节点,ni取一次或几次,可能的循环序列被除去并且取而 代之的是一个简单的步骤,其中一个从第一个代码nia到第二个nib nib,同时执行转换 (潜在的不确定性),相对应于与ni相对于的近似关系。在第二程序路径的第一点nia表 示至第一程序点ni的通路,第二点nib表示到点ni的最后通道。当然,没有必要明确地构 造第二程序程序,也无需明确地建立充分的关系。步骤的数量可能减少,特别为了优化。不 管什么情况,它导致提供了一种用于检验器,以产生并自动证明在启动程序的不变量。
[0280] 因此,给定的程序点,可以获得近似逻辑曲线的有限集合,该检验可以通过使用在 本节开头描述的技术,自动生成(或有相同的结果的,不明确的过程)一该点的不变量。对 于这一点,将不得不以某种方式用于至其的执行路径的近似版本,其中表示循环的执行部 分已被近似步骤替换。因此这些近似值被做于逻辑曲线,其中每个通常表示可能执行曲线 是无穷大的。
[0281] 在此方法中所用函数"f"可以是基于不同类型的近似原理。这里使用的举例说明 的的简单而有效的原理在于通过考虑循环作为关系基本上而保留某些变量的值,这相当于 搜索变量的影响近似除去分支/分支(循环)保持为循环(不管所使用的分支,它的循环 次数),当然,一个简单经典静态的在循环过程中改变变量的研究可能是足够的。
[0282] 通过将这个原理应用到TheoremUnfold程序,一循环不变量,其描述三个逻辑变 量X,e和f之间的联系,(就当XO, EO, R)),通常[true]addLast(XO, EO, fO的+)自动生 成。此外,此属性是通过程序的其他点生成的多数的不变量的一部分。
[0283] 这里,很明显,在循环的核心并不修改变量,该循环不变量代表该变量,但是可以 很容易地想象到一种情况其中一变量在一循环中被修改,在将其置于其循环开始的值,应 保存该值,鉴于该变量已被修改(也就是说,《buffer: =x ;x: =x+l ;〈body of the loop〉; x: =buffer;preserves the value of《X》即使它已被修改了两次)。这很容易被认为是 相同的技术被应用于这个稍微困难一些的替代给予完全相同的循环不变量。
[0284] 其他近似值与其基于变量一定值的保护是可能的,例如,如果一个变量是由一个 对应的传递和自反关系被改变(例如每个循环递增的变量),关系 >=可以是这个变量的近 似值(此反射在此重要,因为循环可能不被执行)。
[0285] 4. 6利用局部性质证明生成的代码
[0286] 当模型是充分细化通常能够生成实现代码。这例如用于SM环境的情况。生成工 具接着可利用以下事实:一些不可能转变或局部特性已被证明以至优化所生成的代码。例 如,如果一个所述的不可能转变,如[empty:error]removeFirst(y+,g, g+);在给定的程序 点,还没有在生成的时间被证实是正确的,生成过程将可能需要产生一些代码用于正常"不 可能"的情况。在我们例子中,"g"情况是空的,当该程序被调取,正常程序的流程,该程序调 用还未被使用的"Y"中现有数值结果,并且逃避机制是必需的,需要被生成。在此不可能转 变已经在生成时被证明,这样的特定的处理是没有必要的,所生成的代码可以相应地优化。
[0287] 额外例子
[0288] 这里我们介绍一些新的用法示例用于证明权利要求。
[0289] Progl:程序 1
[0290] [empty: false]removeFirst (x+, e, g+) ;= > [false: error]member (x, e);
[0291] 第一程序展示出,如果"x"是在序列的"e"的第一位置时,它意味着" X "属于"e"。 在SM可以表述为,当在这种情况下调用,该"成员"("member")的"错误"("false")是 "impossible "不可能")。该程序程序因此具有在这里一单一相关的局部性质,在不可 能转换的形式下表达。"成员"("member ")的"错误"("false")被更名为"false",这 考虑到隐含的语义将程序直接退出而向"true"。现在让我们看看通过展开"member"获得 的程序,然后用进行优化,其中两个连续的分支由一个替代'member"的循环既可以寻求 价值的平等和终止当前值(分支"真"true")在3中),或者因为循环的结束已经达到 ("removeFirst"的分支"空"("empty")在2中)。在第二种情况下,一个在循环前被分 支(empty: exit),接着一个以"错误"("false")退出该程序,并因此为"error",其实未经 授权的分支。这里,一个为了简化的一个单分支替换一分支(即,在2中的[empty:error])。 这当然是一个由检验器进行检查的程序变换。检验器更精确的确定了两个版本程序之间充 分的特性。
[0292] Prog2:程序 2
[0293]
[0294] 此实例中可以看出两个步骤,其已允许产生程序2也就是意味着,如果一证明了 程序2的分支不可能(更确切地说,如果可以证明分支被认为不可能真的是不可能的情况 下),一个也可证明程序1分支的不可能性。因此一个在这两个程序的局部特性间的足够关 系已经建立。在这里,两个程序在SM中偶然等同,因为这两个转换保持等价,但是这既不需 要,也不用在这里。现在,我们将采用新的转换,即,通过展开所述循环(即,主体的一个实 例是放置在后者的前部),也是一等效转换。
[0295] Prog3:程序 3
[0296]
[0297]
[0298] 这里也一样,如果程序3的两个不可能分支被证明,程序2的不可能分支也证明, 其本身使其能够证明程序1。就此建立在这些程序中一个新的充分的关系,再次通过变换一 个程序,以便获得另一个。这里,为了可读性,加入最后的修改,以获得程序4。其包括一语 法修改,其甚至不修改下层的SMIL,从而通过明显的方式确立了充分的新关系。
[0299] Prog4:程序 4
[0300] '1
[0301] 于是,一个应用传递一致性闭包在通往2. 1的路径。这里,为了简化,一个非系统 地命名所创建的逻辑变量,但在这种情况下来表示他们为一个非含糊方式。因此,在2. 1, 一个有以下等价类:在2. 1的"f"与逻辑变量相关(指令调用之前的一个)与那个在三个 点0,,1,2. 1的"e"相关联的逻辑变量是相等的。让"eO"被称为逻辑变量,以下被用于代 表该等价类。
[0302] 一个单一的路径导向2. 1,并且请注意,在此路径中不可避免地通过由位于0的指 令的分支"真"("true"),其意味着该部分" [true]removeFirst(xO+,eO, g0+) "对于逻辑 变量值" x〇是真,且"g〇"分别对应在1的变量"X"和"g",(以及偶然在2. 1)。
[0303] 如果现在的重点是其对应的情况" [empty: error]removeFirst (Y+,F,F+) "下的 2. 1的转换,这是很容易证明这种情况是不可能的,这正是我们想要展示的。
[0304] 实际上,如果有可能"eO"在两种可能的情况下(须记住f在这一点上具有逻辑变 量"e0"的值),鉴于removeFirst是功能性的(以及确定性)。如果现在着眼于其他情况 下,也就是说,情况为"真"("true"),这将带我们到3. 1然后由于相同的属性之一可以通 过建立的逻辑变量对应于"f"为延长的传递而被包括在等价类"g〇",即对应于"y"为等价 类" X〇",对应于"X"是"X〇",它允许如之前在进行该显示的这个过渡在相等的情况下假设 是不可能的前提下通过,这使得我们通过理清程序/修剪程序图以删除其对应于循环而做 出图表。
[0305] 我们建议施加到程序4的不同的操作可以以一种完全自动的方式通过应用上的 平等来传递一致性闭包过程而获得通过程序的遍历曲线图,然后由图形的静态清洁,以获 得新的图(或被完全证明的等效程序)。这完全可以证明程序4,然后通过复制足够的关系 来证明(所有属性)程序3,然后是程序2等等,直到程序1。
[0306] 本发明已经示出并详细的在附图和前面的描述中描述。其必须被认为是说明性的 示例的方式而不是为了将本发明限制到这种唯一的描述中。大量的实施例是可能的。
[0307] 例如,该方法用于计算和记忆可以包括素材加速器,例如高性能图形处理器,这使 得它可以并行大量计算。材料加速器也可被特别开发,例如通过FPGA编程(可编程门阵 列)。
[0308] 在权利要求中,词语"包括"不排除其他元素,并且不定冠词"一个"并不排除多个。
【主权项】
1. 一种保护一第一程序的方法,第一程序包含一个有限数量的程序点以及与程序点 及定义从一个程序点到另一个程序点的段落的相关演化规则,包括: ?一个多退出情况的定义,以及当一第二程序被使用在第一程序的定义中,对于第二程 序的每个退出情况,一分支至第一程序一特定的程序点的定义,或者一分支不可能声明;以 及 ?一个关于一组待证明属性的定义,每一个都与一个或多个第一程序的基本构成元素 关联,所述属性组包含作为特定属性的不可能分支; ?该属性组的形式证明的建立。2. 如权利要求1所述方法,其特征在于,所述演化规则,其退出点以及该分支定义执行 轨迹的树形结构,一个检验器使用所创建的树形结构以传送在第一程序的点中的约束和使 用显式或隐含同余的传递闭包,以证明所述第一程序的属性中的至少一个。3. 根据权利要求2的所述方法,其特征在于,第一程序包含至少一循环,一个检验器自 动在程序点通过使用潜在的与通往至其的执行路线的近似的版本创建一个不变量,其中, 代表循环的部分已经被近似的执行步骤所替代。4. 根据权利要求2的所述方法,其特征在于,至少有一个被声明为"不可能"的分支 被通过分析引导转化树形结构的路线所证明。5. 根据权利要求2的所述方法,其特征在于,第一程序的保护是基于第三程序的保护 功能有别于第一程序,和/或不仅是第一个程序的摘要。6. 根据权利要求5所述的所述方法,其特征在于,导向对应关系,称为充分的关系,在 至少一个所述第一程序程序的本地属性和至少一个第三程序的本地属性之间建立,以此证 明第一程序的一本地属性,只要这种对应存在,它足以证明第三程序的该属性组与第一程 序的该属性相符。7. 根据权利要求6所述的所述方法,其特征在于,第三程序被通过一传输进行修改使 其可能拥有第一程序,即第一程序的保护基于第三程序的保护。8. 根据权利要求6所述的所述方法,其特征在于,第一程序被通过一传输进行修改使 其可能拥有第三程序,即第一程序的保护基于第三程序的保护。9. 根据权利要求6所述的所述方法,其特征在于,第一程序被通过一次传输进行修改 使其可能拥有第三程序,并且起草调整一个在第一和第三程序的至少一个相关属性之间的 多充分关系。10. 根据权利要求6所述的所述方法,其特征在于,第三程序被通过一次传输进行修改 使其可能拥有第一程序,并且起草调整一个在第一和第三程序的至少一个相关属性之间的 多充分关系。11. 根据权利要求5所述的所述方法,其特征在于,第三程序中至少有一个变量被实例 化使用采用于第一程序变量的值,以在第一程序与第三程序间建立起一充分的关系,或者 作为保护第一程序的一种方式。12. 根据此前任何一个权利要求中的所述方法,其特征在于至少一个本地属性通过一 个第四程序所定义。13. -计算机软件产品包含软件说明书以用来实施根据权利要求1~12之间的任何一 种方法,当所述计算机软件产品在一台计算机上执行时。14. 根据权利要求13所述的所述计算机软件产品,其特征在于,它包含一使用户界面 适应以使用户能定义退出情况以及相关联的分支,和/或使待证的本地属性能。15. 根据权利要求14所述的所述计算机软件产品,其特征在于,该用户界面用于定义 不可能分支。16. 根据权利要求14或15所述的所述计算机软件产品,其特征在于,用户界面适应以 定义一个特定程序入口条件,以使用/调用在一个给定的点,并且以此限制了调用程序的 退出情况。17. 根据权利要求13所述的计算机软件产品,其为了优化已生成的代码而利用被证明 的一些非传输或本地属性,生成实施代码。18. -种保护一个第一程序的方法,第一程序包含一个有限数量的程序点以及与程序 点及定义从一个程序点到另一个程序点的段落的相关演化规则,包括: ?一多退出情况的定义,以及当一第二程序被使用在第一程序的定义中,对于第二程序 的每个退出情况,一分支至第一程序一特定的程序点对的定义,或者一个不可能分支声明; 以及, ?一关于一待证明属性组的定义,每一个都与一个或多个第一程序的基本构成元素关 联,所述一属性组包含作为特定属性的不可能分支; ?该属性组的形式证明的建立, 其中第一程序包括至少一循环,一个检验器自动在程序点通过使用通往至其的执行 路线潜在的类似版本生成一个不变量,其中代表循环执行的部分被近似的步骤所替代。19. 根据权利要求18所述的方法,其特征在于至少一个分支被声明为不可用,通过分 析树形结构路线引导转换所证明。20. -种保护第一程序的方法,该第一程序包含有限数量的程序点以及与程序点相关 的定义两个程序点片段的演化规则,包括: ?一多退出情况的定义,以及当一第二程序被使用在第一程序的定义中,对于第二程序 的每个退出情况,通过第一程序一个特定的程序点对一分支的定义,或者一个不可能分支 宣告;以及, ?一关于一待证明属性组的定义,每一个都与一个或多个第一程序的基本构成元素关 联,所述一属性组包含作为规定属性的不可能分支; 该属性组的形式证明的建立,其中第一程序的保护是基于第三程序的保护功能有别于 第一程序,和/或不仅是第一个程序的摘要。21. 根据权利要求20所述的方法,其特征在于,在至少一个第一程序的本地属性与至 少一个第三程序的本地属性指间被称为充分关系的定向对应关系被建立,这样提供第一程 序的本地属性,只要该对应关系存在,就可以充分证明第三程序的与第一程序对应的属性 组。22. 根据权利要求21所述的方法,其特征在于,第三程序被一传输修改以使它能够获 得第一程序,这样该第一程序的保护就基于该第三程序的保护。23. 根据权利要求21所述的方法,其特征在于,该第一程序被一传输修改以使它能够 获得该第三程序,这样该第一程序的保护就基于该第三程序的保护。24. 根据权利要求21所述的方法,其特征在于,该第一程序被一传输修改以使其能够 获得该第三程序并且起草第一程序与第三程序间至少一个相关属性多充分关系。25.根据权利要求21所述的方法,其特征在于,该第三程序被一次传输修改以使其能 够获得该第一程序并且起草该第一程序与该第三程序间至少一个相关属性多充分关系。
【专利摘要】一种保护一第一程序的方法,该第一程序包括有限数量的程序点和与程序点相关的定义程序点段落的演化规则,包含·一多退出情况的定义,以及当一第二程序被使用在第一程序的定义中,对于第二程序的每个退出情况,通过第一程序一个特定的程序点对一个分支的定义,或者一个不可能分支声明;以及·一个关于一组待证明属性的定义,每一个都与一个或多个第一程序的基本构成元素关联,所述一属性组包含作为特定属性的不可能分支;·该属性组的形式证明的建立。
【IPC分类】G06F11/36
【公开号】CN105103135
【申请号】CN201480010722
【发明人】多米尼克·波利尼亚诺
【申请人】多米尼克·波利尼亚诺
【公开日】2015年11月25日
【申请日】2014年1月28日
【公告号】EP2962206A1, US20140245259, WO2014132147A1
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1