嵌入式系统在人类生活中发挥着越来越大的作用, 而作为嵌入式系统灵魂的嵌入式软件在其中所占有的比重也越来越大.因此, 嵌入式软件的可靠性将变得更加重要.诸如航空、航天、军事、交通、医疗等关键应用领域都对嵌入式系统的可靠性和安全性要求非常高, 任何错误的发生都可能带来灾难性后果.嵌入式系统具有3个重要属性, 即可达性、终止性、不变式.可达性是指一个系统能否从一个给定状态到达另一个可接受状态.某些混成系统的可达性被证明是能用计算机代数工具来检验的.不变式是系统变量在循环迭代时永远保持的特性.终止性是研究系统中是否会发生死循环.不包括终止性分析的验证被称为程序的部分正确性证明.因此, 程序的终止性分析是确保程序完全正确性的必要基础.
尽管程序的终止性问题早已被证明是不可判定的[1], 但对其进行研究不仅具有理论意义, 更具有实际意义.当前, 国内外主要通过计算秩函数来进行循环终止性分析.秩函数是验证循环程序终止性的一条重要途径.对给定的一个程序, 若能找到其秩函数, 则表明该程序必然是终止的.例如在2001年, Colon等人[2, 3]就利用多面体理论计算线性程序的线性秩函数(ranking functions).2004年, 针对线性循环程序, Poldelski等人[4]提出一个完备的线性秩函数生成方法, 并开发出工具RANKFINDER.他们的方法将线性程序的线性秩函数计算问题归结为线性规划(LP)问题.在2005年, 针对线性程序, Manna等人[5, 6]提出了字典秩函数的概念, 并利用Farkas引理呈现了线性字典秩函数的计算方法.最近, 文献[7, 8]研究了现有几种线性秩函数生成算法的时间复杂度.文献[8]中进一步分析了程序变量在整数集合上取值时, 这类线性程序的线性秩函数合成方法, 并研究了这类问题的复杂度.但即便是线性程序, 其秩函数也未必是线性的.因此, 针对非线性程序, Cousot[9]通过半正定规划方法SDP研究了多项式秩函数的计算问题.该方法能够找到高次数的秩函数, 但由于SDP工具内部采用的是数值计算, 因此由计算误差导致最终得到的函数未必是真正的秩函数.同时, 这个方法也不能回答一个程序是否具有预定义形式的秩函数.
符号计算理论方法及其工具被逐渐应用于程序自动验证.例如, 我国科学家陈应华等人和杨路等人将秩函数和不变式的计算归约为半代数系统的求解, 并运用基于柱形代数分解的工具DISCOVERER, 提出了多项式不等式型不变式和非线性秩函数生成方法[2, 10].不同于文献[9]中的方法, 他们的方法能够精确回答循环程序是否有给定模板的秩函数或不变式.
除了秩函数法以外, 还出现了其他方法去进行循环程序的终止性研究.如, 文献[11, 12]提出了试探性方法去探索给定循环程序的非终止性.众所周知, 一般的程序终止性问题是不可判定的, 但对某些类特殊的程序而言, 人们总希望能证明其终止性问题是可判定的.由此, 鉴于终止性问题本身的不可判定性所带来的实际困难, 证明循环程序终止性的另一途径就是避开秩函数的合成, 而采用数学方法严格证明某类或某些类循环程序的终止性是可判定的, 并建立相对完备的判定算法.这首先需要对程序进行分类.当限定程序中的赋值语句和条件语句均为线性多项式时, 2004年, Tiwari在文献[13]中首次证明了下列单重无分支线性循环程序在实域上的终止性是可判定的:
$ {\rm{ }}{\mathbf{while}}\;\;{\rm{ }}Bx > 0\;\;{\rm{ }}{\mathbf{do}}{\rm{ }}\;\;\{ x: = Ax\} {\rm{ }}\;\;{\mathbf{endwhile}}{\rm{, }} $ |
这里, A, B均是实矩阵.相似的结论在2006年被Braveman[14]推广到整数环上.此外, 为了避免Jordan标准型的浮点计算, 文献[15]中提出了精确的符号计算方法对程序P进行终止性判定.既然一般形式的线性程序终止性是不可判定的[13], 那么非线性多项式循环程序由于其更为复杂的动力行为使得其终止性分析将变得更加困难.一个程序被称为非线性的, 是指循环中的赋值映射或循环条件中的约束是非线性表达式.2005年, 利用有限差分树理论, 文献[16]提出了试探性算法对一类含多分支语句的多项式程序的终止性问题进行判定.2010年, 针对一类赋值为线性且循环条件由非线性多项式不等式构成的循环程序, 文献[17]分析了其终止性问题, 证明了当这类程序满足给定的NZM条件时, 其终止性是可判定的.2013年, 文献[18]通过分析多项式映射fi的发散区间讨论了一类多项式循环(迭代赋值型如xi:=fi(xi))的终止性问题.针对一类循环条件为多项式等式, 赋值语句为多项式的多分支循环程序, 詹乃军等人在文献[19]中给出了其可终止或不可终止的充分条件.最近, 针对这类多分支程序.他们进一步证明了各条路径形成的理想具有一致上界, 从而证明了这类多分支程序的终止性是可判定的.记R为实数域, Q为有理数域.R[x](Q[x])表示由关于x的实系数(有理系数)多项式构成的多项式环.
本文主要研究具有以下形式的多分支线性循环程序在实数域上的终止性问题.
$\left. \begin{gathered} P{\rm{ }}~{\mathbf{while}}~{\rm{ }}Bx \geqslant b{\rm{ }}~{\mathbf{do}} \\ {\tau _1}:\mathit{\boldsymbol{x}}: = {F_1}(\mathit{\boldsymbol{x}}); \\ {\rm{or}} \\ ... \\ {\rm{or}} \\ {\tau _m}:\mathit{\boldsymbol{x}}: = {F_m}(\mathit{\boldsymbol{x}}); \\ \end{gathered} \right\}$ | (1) |
这里, B∈Qn×n为一可逆矩阵, b∈Qn, x∈Rn, Fi(x)=(fi1(x), …, fin(x))T为关于x的n维多项式映射, fij(x)∈Q[x], i=1, ..., m, j=1, ..., n.记Ω={x∈Rn:Bx≥b}.为方便, 令P
对任意给定的v个n维多项式映射g1(x), …, gv(x), 令
$ \oplus _{j = 0}^n{F_{{i_j}}}({\mathit{\boldsymbol{x}}_0}) = {F_{{i_n}}} \circ ... \circ {F_{{i_2}}}^\circ {F_{{i_1}}}^\circ {F_{{i_0}}}({\mathit{\boldsymbol{x}}_0}) \in \mathit{\Omega}. $ |
特别地, 记
考虑程序P.令y=M-1(x)=Bx-b, Ωy={y:y≥0}.既然程序P中的矩阵B是可逆的, 则M-1为可逆映射, 记M-1的逆映射为M(y)=B-1(y+b).因此, M, M-1互为Rn
$ \left. \begin{align} & U~\mathbf{while}~y\ge 0~\mathbf{do} \\ & {{\tau }_{1}}:\mathit{\boldsymbol{y}}:={{M}^{-1}}{}^\circ {{F}_{1}}{}^\circ M(\mathit{\boldsymbol{y}});\text{ } \\ & \text{or } \\ & \cdots \text{ } \\ & \text{or} \\ & \text{ }{{\tau }_{m}}:\mathit{\boldsymbol{y}}:={{M}^{-1}}{}^\circ {{F}_{m}}{}^\circ M(\mathit{\boldsymbol{y}}); \\ \end{align} \right\} $ | (2) |
与程序P的不可终止定义类似, 我们说程序U在实域上是不可终止的, 如果存在y0∈Rn和无穷下标列表
$\mathop \oplus \limits_{j = 0}^n ({M^{ - 1}} \circ {F_{ij}} \circ M({\mathit{\boldsymbol{y}}_0})) = ({M^{ - 1}} \circ {F_{{i_n}}} \circ M) \circ ... \circ ({M^{ - 1}} \circ {F_{{i_1}}} \circ M) \circ ({M^{ - 1}} \circ {F_{{i_0}}} \circ M)({\mathit{\boldsymbol{y}}_0}) \in {\mathit{\Omega} _\mathit{\boldsymbol{y}}}{\rm{.}}$ |
这里, 对任意的
定理1.记号同上.程序P在实数域上不可终止等价于程序U在实数域上不可终止.
证明:若程序P在实数域上不可终止, 则必存在x0∈Rn和无穷下标列表
$ \oplus _{j = 0}^n{F_{{i_j}}}({\mathit{\boldsymbol{x}}_0}) = {F_{{i_n}}} \circ ... \circ {F_{{i_2}}} \circ {F_{{i_1}}} \circ {F_{{i_0}}}({\mathit{\boldsymbol{x}}_0}) \in \mathit{\Omega} $ | (3) |
这里,
$ \begin{aligned} \mathop \oplus \limits_{j = 0}^n \left(M^{-1} \circ F_{i_{j}} \circ M\right)\left(\boldsymbol{y}_{0}\right) &=\left(M^{-1} \circ F_{i_{n}} \circ M\right) \circ \ldots \circ\left(M^{-1} \circ F_{i_{1}} \circ M\right) \circ\left(M^{-1} \circ F_{i_{0}} \circ M\right) \\ &=M^{-1} \circ F_{i_{n}} \circ F_{i_{n-1}} \circ \ldots \circ F_{i_{0}} \circ M\left(\boldsymbol{y}_{0}\right) \\ &=M^{-1} \circ F_{i_{n}} \circ F_{i_{n-1}} \circ \ldots \circ F_{i_{0}}\left(\boldsymbol{x}_{0}\right) \\ &=M^{-1} \circ F_{i_{j}}\left(\boldsymbol{x}_{0}\right) \end{aligned} $ | (4) |
这里,
${M^{ - 1}} \circ \oplus _{j = 0}^n{F_{{i_j}}}({\mathit{\boldsymbol{x}}_0}) \in \mathit{\Omega}. $ |
也即对任意的非负整数
反之, 若程序U在实数域上不可终止, 那么必存在一点y0和一个无穷下标列表
$M \circ \oplus _{j = 0}^n({M^{ - 1}} \circ {F_{{i_j}}} \circ M)({\mathit{\boldsymbol{y}}_0}) = M \circ {M^{ - 1}} \circ \oplus _{j = 0}^n{F_{{i_j}}}({\mathit{\boldsymbol{x}}_0}) = \oplus _{j = 0}^n{F_{{i_j}}}({\mathit{\boldsymbol{x}}_0}){\rm{.}}$ |
既然
根据定理1可知, P的终止性问题总能等价归结为U的终止性问题.为方便分析, 不失一般性, 将原来U中的程序变元y替换为x, M-1
$\left. \begin{gathered} U{\rm{ }}~{\mathbf{while}}~{\rm{ }}x \geqslant 0{\rm{ }}~{\mathbf{do}} \\ {\tau _1}:\mathit{\boldsymbol{x}}: = {T_1}(\mathit{\boldsymbol{x}}); \\ {\rm{or}} \\ ... \\ {\rm{or}} \\ {\tau _m}:\mathit{\boldsymbol{x}}: = {T_m}(\mathit{\boldsymbol{x}}); \\ \end{gathered} \right\}$ | (5) |
这里, x=(x1, x2, …, xn)T∈Rn, Ti(x)=(ti1(x), …, tin(x))T为关于x的n维多项式映射, tij(x)∈Q[x], i=1, …, m, j=1, …, n.记:
$ \mathit{\Omega}_{x}=\left\{\boldsymbol{x} \in \mathbf{R}^{n}: x_{1} \geqslant 0, \dots, x_{n} \geqslant 0\right\}. $ |
既然P等价于程序U的终止性, 因此为判定P的终止性, 我们可以先分析U的终止性.
下文中, 我们将通过计算多项式秩函数的方法去判定公式(5)中的程序U的终止性.
1 预备知识本节将介绍有关秩函数、Polya定理的相关基本知识.
定义1.给定如公式(5)定义的循环程序U.函数ρ(x)∈R[x]被称为程序U的秩函数, 如果存在一个正数c > 0, 使得ρ(x)满足:
● (有界):
● (下降):
注:根据定义1及下面的定义3, 计算程序U的秩函数等价于在Ωx上探测m+1个半正定多项式:
$ \rho(\boldsymbol{x})-\rho\left(T_{i}(\boldsymbol{x})\right)-c. $ |
众所周知, 如果一个循环程序具有秩函数, 那么这个程序必定是终止的.对程序U, 文献[3, 5, 6, 20]中的方法均不能计算其秩函数.这是因为U中的表达式可以是非线性多项式表达式, 而上述文中基于Farkas引理的方法仅能计算线性循环程序的线性秩函数.针对程序U, 目前有两种方法可以计算它的非线性多项式秩函数.
●一种是由杨路等人提出的基于符号计算的多项式秩函数计算方法, 他们的方法是纯符号的方法, 并不涉及近似计算.这一方法的特点是能够完备判定给定的程序是否具有预设模板形式的秩函数, 但该方法是基于复杂度较高的柱形代数分解算法的, 故可用以计算含变元较少、次数较低的秩函数合成问题.
●另一种是由Cousot提出的基于SDP的秩函数计算方法.利用SDP的求解是多项式时间复杂度, 该方法能够探测到含有较高次数、较多变元的秩函数.但不足之处在于, 由于SDP采用浮点计算, 从而导致最终得到的秩函数可能是不精确的, 故还需要进一步验证.
在下一节中, 我们将给出一种新的多项式秩函数计算方法.我们的方法是基于下面的Polya定理.首先给出一些多项式相关的定义.
定义2.给定多元齐次多项式f(x)∈R[x].我们说f是关于x的齐次多项式, 如果其中的所有非零系数项的次数都相同.
例如,
$ f(x)=\sum\limits_{|\alpha|=d} a_{\alpha} x^{\alpha}=\sum\limits_{|\alpha|=d} c(\alpha) b_{\alpha} x^{\alpha} $ | (6) |
这里, aα=c(α)·bα, 其中, c(α)为α的函数.例如, 考虑2元齐2次多项式:
$ f\left(x_{1}, x_{2}\right)=2 x_{1}^{2}-6 x_{1} x_{2}=2 x^{(2, 0)}-6 x^{(1, 1)}=c((2, 0)) \cdot b_{(2, 0)} x^{(2, 0)}+c((1, 1)) \cdot b_{(1, 1)} x^{(1, 1)}, $ |
其中, c((2, 0))=1, b(2, 0)=2, c((1, 1))=2, b(1, 1)=-3.
定义3.给定n元齐次(或非齐次)多项式f(x1, …, xn)∈R[x]和S
显然, 若f在S上是正定的, 那么f在S上必然是半正定的.记单形
定理2(Polya定理).给定n元齐次多项式f(x)∈R[x], 如果f在Δn上是正定的, 那么当N充分大时, 表达式(x1+…+xn)Nf(x1, …, xn)展开后的所有系数均为正.
例如, 不难验证
注:Polya定理表明, 如果给定的齐次多项式f在单形上是正定的, 那么必然存在N, 使得
定理3[21].给定在单形Δn上正定的n元齐d次多项式f(x).如果
$ N>\frac{d(d-1)}{2} \frac{L}{\lambda}-d $ | (7) |
那么, (x1+…+xn)Nf(x1, …, xn)的所有系数为正.其中, L=L(f)=max{|bα|:|α|=d}, λ=λ(f)=min{f(x):x∈Δn}.
注:关于定理3有几点说明.
(A) 若存在正整数N, 使得(x1+…+xn)Nf(x1, …, xn)的所有系数为正, 那么对任意的非负整数j, 有(x1+…+ xn)N+jf(x1, …, xn)的所有系数为正.这是因为(x1+…+xn)中各项前的系数均为正数, 故(x1+…+xn)j中各项前的系数必为正数.所以当(x1+…+xn)Nf(x1, …, xn)的所有系数为正时, (x1+…+xn)N+jf(x1, …, xn)=(x1+…+ xn)j(x1+…+xn)Nf(x1, …, xn)的所有系数仍然为正.
(B) N的下界公式, 即公式(7)中, N的下界值与L的值成正比而与最小值成反比.在下一节中, 我们将通过对公式(7)中L或λ的值进行放缩来调整N的下界公式, 并在新的下界公式下建立相应算法.
(C) 若存在N, 使得(x1+…+xn)Nf(x1, …, xn)的所有系数为正, 那么f(x1, …, xn)至少是单形上的半正定多项式.这是因为所有变量取值于单形, 故均为非负变量; 同时, 每项系数都为正.
2 程序U的秩函数计算本节中, 我们将程序U的秩函数计算问题归结为单形上的正定多项式的探测问题, 并基于Polya和Powers等人的结果, 将单形上正定多项式探测的问题归结为线性规划问题.
定义1中的秩函数定义是传统秩函数定义, 呈现在许多文献中.在定义1中, 秩函数定义的有界和下降两个条件是由有限个蕴涵式刻画, 且蕴涵式后件为非严格不等式.但为了便于利用正定多项式的性质, 我们将定义1中程序U的秩函数定义做了稍微修改, 即将定义1中蕴涵式后件中的非严格不等式全部替换为严格不等式.
定义4.给定如公式(5)定义的循环程序U, 函数ρ(x)是程序U的秩函数, 若存在一个正数c > 0, 使得ρ(x)满足:
● (有界):
● (下降):
注:修改后的秩函数定义与传统秩函数定义是等价的.这可被简单证明如下.
首先, 若ρ(x)是满足定义1中两个条件的秩函数, 即有
● (有界):
$ \forall \mathit{\boldsymbol{x}}, \left( {\mathit{\boldsymbol{x}} \in {\mathit{\Omega} _\mathit{\boldsymbol{x}}} \Rightarrow \rho (\mathit{\boldsymbol{x}}) > 0} \right) $ | (8) |
● (下降):
$ \mathop \wedge \limits_{i = 1}^m \left( {\forall x, \left( {x \in {\mathit{\Omega} _x} \Rightarrow {H_i}(x) > c} \right)} \right) $ | (9) |
这里, Hi(x)=ρ(x)-ρ(Ti(x)), c > 0.一般地, 公式(8)和公式9)中蕴含式后件的多项式表达式未必是关于x的齐次多项式, 但我们总可以引入新的变元进行齐次化, 并能保证齐次化后的蕴含式与原蕴含式是等价的.令
命题1.给定非齐次多项式G(x)∈R[x], 记G的次数为d, 引进新变元z, 对G进行齐次化得到GH(x, z).记w1=
证明:w2
若蕴涵式w1成立, 即
$ {t_1} \ge {0 \wedge }{ \ldots \wedge }{t_n} \ge 0 \wedge z > 0 \Rightarrow {z^d} \cdot G\left( {{t_1}, \ldots , {t_n}} \right) > 0 $ | (10) |
将
$ \frac{x_{1}}{z} \geqslant 0 \wedge \ldots _\wedge \frac{x_{n}}{z} \geqslant 0 \wedge z>0 \Rightarrow z^{d} \cdot G\left(\frac{x_{1}}{z}, \ldots, \frac{x_{n}}{z}\right)=G_{H}(x, z)>0 $ | (11) |
又因为
假设公式(8)和公式(9)中的多项式ρ(x), Hi(x)-c的次数分别为
$ \hat{\rho}(\hat{\boldsymbol{x}})=\hat{\rho}(\boldsymbol{x}, z), M_{i}(\hat{\boldsymbol{x}})=M_{i}(\boldsymbol{x}, z)=\hat{H}_{i}(\hat{\boldsymbol{x}})-c \cdot z^{d_{H_{i}}}. $ |
显然,
$ \left. \begin{array}{l} {\forall \mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}, \left( {\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}} \in {\mathit{\Omega} _{\mathit{\boldsymbol{\hat x}}}} \Rightarrow {\hat \rho } (\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}) > 0} \right)}\\ {\mathop \wedge \limits_{i = 1}^m \left( {\forall \mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}, \left( {\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}} \in {\mathit{\Omega} _{\mathit{\boldsymbol{\hat x}}}} \Rightarrow {M_i}(\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}) > 0} \right)} \right.} \end{array} \right\} $ | (12) |
令
令
$\left. \begin{gathered} \forall {\mathit{\boldsymbol{\hat x}}}, ({\mathit{\boldsymbol{\hat x}}} \in \mathit{\Omega} _{\mathit{\boldsymbol{\hat x}}}^o \Rightarrow {\hat \rho } ({\mathit{\boldsymbol{\hat x}}}) > 0) \\ \mathop \wedge \limits_{i = 1}^m (\forall {\mathit{\boldsymbol{\hat x}}}, ({\mathit{\boldsymbol{\hat x}}} \in \mathit{\Omega} _{\mathit{\boldsymbol{\hat x}}}^o \Rightarrow {M_i}({\mathit{\boldsymbol{\hat x}}}) > 0)) \\ \end{gathered} \right\}$ | (13) |
既然
令Δn+1={(x1, …, xn, z)∈Rn+1:x1≥0, …, xn≥0, z≥0, x1+…+xn+z=1}.
显然,
$\left. \begin{gathered} \forall {\mathit{\boldsymbol{\hat x}}}, ({\mathit{\boldsymbol{\hat x}}} \in {\mathit{\Delta} _{n + 1}} \Rightarrow {\hat \rho } ({\mathit{\boldsymbol{\hat x}}}) > 0) \\ \mathop \wedge \limits_{i = 1}^m (\forall {\mathit{\boldsymbol{\hat x}}}, ({\mathit{\boldsymbol{\hat x}}} \in {\mathit{\Delta} _{n + 1}} \Rightarrow {M_i}({\mathit{\boldsymbol{\hat x}}}) > 0)) \\ \end{gathered} \right\}$ | (14) |
给定两个非零点
命题2.记号同上.公式(13)
证明:既然
任取一点
$ \forall \lambda \forall \hat{\boldsymbol{x}}, \left(\lambda>0 \wedge \hat{\boldsymbol{x}} \in \mathit{\Delta}_{n+1} \Rightarrow \lambda^{d_{p}} \hat{\rho}(\hat{\boldsymbol{x}})=\hat{\rho}(\lambda \hat{\boldsymbol{x}})>0\right)且\wedge_{i=0}^{m}\left(\forall \lambda \forall \hat{\boldsymbol{x}}, \left(\lambda>0 \wedge \hat{\boldsymbol{x}} \in \mathit{\Delta}_{n+1} \Rightarrow \lambda^{d_{M_{i}}} M_{i}(\hat{\boldsymbol{x}})=M_{i}(\lambda \hat{\boldsymbol{x}})>0\right).\right. $ |
又因为集合
注:若将公式(13)和公式(14)中的所有不等式均改为非严格不等式, 则命题2仍然成立.
要判定公式(14)是否成立, 等价于判定齐次多项式
S1.给出秩函数模板——带参数的多项式表达式.不失一般性, 可假设为ρ(x)=aT·Γ, 其中, a为参系数向量, Γ是所有单项式构成的向量.如ρ(x)=a1x2y+a2x+a3y+a4, 则a=(a1, …, a4)T, Γ=(x2y, x, y, 1)T.
S2.将ρ(x)代入到定义4中给出的秩函数条件中, 从而构造公式(8)和公式(9).其中, 可记公式(9)中的Hi(x)=
S3.对公式(8)和公式(9)中的ρ(x), Hi(x)-c进行齐次化, 得到:
$ {\hat \rho } ({\mathit{\boldsymbol{\hat x}}}) = {\mathit{\boldsymbol{a}}^T} \cdot {\mathit{\Gamma} _0}, {M_i}({\mathit{\boldsymbol{\hat x}}}) = {\hat H_i}({\mathit{\boldsymbol{\hat x}}}) - c \cdot {z^{{d_{{H_i}}}}} = \mathit{\boldsymbol{b}}_\mathit{\boldsymbol{a}}^T \cdot {{\mathit{\Gamma '}}_0} - c \cdot {z^{{d_{{H_i}}}}} = (\mathit{\boldsymbol{b}}_\mathit{\boldsymbol{a}}^T, - c) \cdot {({\mathit{\Gamma '}}_0^{\rm T}, {z^{{d_{{H_i}}}}})^T}. $ |
从而构造公式(12).这里,
S4.根据上述分析, 因为公式(13)
S5.探测是否存在参系数
从上面5个步骤可以看出, 计算程序U秩函数的问题被归约为探测单形上的正定多项式
根据下面的命题可知, 在上述S5中, 存在参系数
命题3.记号同上.存在
证明:该证明非常简单.“
若存在
$\nu ' = ({\mathit{\boldsymbol{a}}^{**}},\mathit{\boldsymbol{b}}_\mathit{\boldsymbol{a}}^{**},{c^{**}}) = \left( {\frac{{{\mathit{\boldsymbol{a}}^*}}}{{abs(v)}}, \frac{\mathit{\boldsymbol{b}}_\mathit{\boldsymbol{a}}^*}{{abs(v)}}, \frac{{{c^*}}}{{abs(v)}}} \right).$ |
这里,
根据定义4、命题1~命题3, 我们可以建立下面的结论.
定理4.给定程序U, 若存在
在S5中, 我们需要判断是否存在
$N > \frac{{d(d - 1)}}{2}\frac{L}{\lambda } - d$ | (15) |
这里, L=L(f)=max{|bα|:|α|=d}, λ=λ(f)=min{f(x):x∈Δn}.根据下面的结论, 我们可以将公式(15)中的L替换为1.
命题4.记号同上.给定齐d次n元多项式
证明:考虑n=2.
$ \left(\alpha_{1}+\alpha_{2}\right) !=\left(\alpha_{1}-0+\alpha_{2}\right)\left(\alpha_{1}-1+\alpha_{2}\right)\left(\alpha_{1}-2+\alpha_{2}\right) \ldots\left(\alpha_{1}-\left(\alpha_{1}-1\right)+\alpha_{2}\right) \cdot\left(\alpha_{2}\right) ! $ |
显然, (α1-0+α2)≥α1, (α1-1+α2)≥α1-1, (α1-2+α2)≥α1-2, …, (α1-(α1-1)+α2)≥1.故
$ \left(\alpha_{1}+\alpha_{2}\right) ! \geqslant \alpha_{1} ! \alpha_{2} ! $ | (16) |
考虑n=3.
根据公式(16), 有(α1+α2+α3)!=(α3+(α1+α2))!≥(α3)!(α1+α2)!≥α3!α1!α2!.
以此类推, 可得(α1+…+αn)!≥α1!…αn!.
注:给定齐d次n元多项式
$L = L(f) = \max \left\{ {|{b_\alpha }| = \frac{{|{a_\alpha }|}}{{c(\alpha )}}:|\alpha | = d} \right\}.$ |
根据命题4可知,
定理5.给定齐d次n元多项式
$N > \frac{{d(d - 1)}}{2}\frac{1}{\lambda } - d$ | (17) |
有(x1+…+xn)Nf(x1, …, xn)的所有系数为正.其中, λ=λ(f)=min{f(x):x∈Δn.
根据定理4得知, 可以在系数空间
定理6.记号同上.给定程序U, 若系统Sys有实解, 则程序U是终止的.
证明:不妨令
$ \forall \hat{\boldsymbol{x}}, \left(\hat{\boldsymbol{x}} \in \mathit{\Delta}_{n+1} \Rightarrow \hat{\rho}^{*}(\hat{\boldsymbol{x}}) \geqslant 0\right)且\mathop \wedge \limits_{i = 1}^m \left(\forall \hat{\boldsymbol{x}}, \left(\hat{\boldsymbol{x}} \in \mathit{\Delta}_{n+1} \Rightarrow M_{i}^{*}(\hat{\boldsymbol{x}}) \geqslant 0\right)\right) $ |
根据命题2及其注解, 上式等价于
$ \forall \mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}, \left( {\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}} \in \mathit{\Omega} _{\mathit{\boldsymbol{\hat x}}}^o \Rightarrow {{{\hat \rho } }^*}(\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}) \ge 0} \right)且\mathop \wedge \limits_{i = 1}^m \left( {\forall \mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}, \left( {\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}} \in \mathit{\Omega} _{\mathit{\boldsymbol{\hat x}}}^o \Rightarrow M_i^*(\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}) \ge 0} \right)} \right). $ |
也即
在上式中令z=1, 得到:
$ \forall {\rm{ }}\mathit{\boldsymbol{x}}, \left( {\mathit{\boldsymbol{x}} \in {\mathit{\Omega} _\mathit{\boldsymbol{x}}} \Rightarrow {{{\hat \rho } }^*}(\mathit{\boldsymbol{{\mathit{\boldsymbol{\hat x}}}}}) \ge 0} \right)且\mathop \wedge \limits_{i = 1}^m \left( {\forall \mathit{\boldsymbol{x}}, \left( {\mathit{\boldsymbol{x}} \in {\mathit{\Omega} _\mathit{\boldsymbol{x}}} \Rightarrow {\rho ^*}(\mathit{\boldsymbol{x}}) - {\rho ^*}\left( {{T_i}(\mathit{\boldsymbol{x}})} \right) - {c^*} \ge 0} \right)} \right). $ |
根据定义1可知, 满足上式的ρ*(x)是程序U的秩函数.故程序U可终止.
注:根据定理6, 若系统Sys有解, 则能够得到一个最小值为预设定值λ*的具有预定形式的秩函数; 反之, 若系统Sys无解, 则表明在单形上没有最小值为预设定值λ*且具有预定形式的正定多项式.
根据定理4,
算法1.
输入:一个程序U, 探测深度depth,
输出:一个具有预定形式的n元d次多项式秩函数.
Step 1:设定多项式秩函数模板
Step 2:构造齐次多项式
Step 3: For i=1 to depth
Step 3.1:根据
Step 3.2:抽取
Step 3.3:用线性规划工具Simplex计算Sys:若Sys有解, 则输出多项式秩函数ρ*(x); 否则, 转Step 3.4
Step 3.4:令
下面通过一个例子来阐述本文的方法.
例1:考虑循环程序:
$ \left. {{\begin{array}{*{20}{l}} {{U_1}{\rm{ }}\;{\mathbf{while}}\;{\rm{ }}x \ge 0 \wedge y \ge 0\;{\mathbf{do}}}\\ {{\tau _1}:x: = 1 - 3x - 4y - {x^3};}\\ {y: = - x - y;}\\ {{\rm{ or }}}\\ {{\tau _2}:x: = - y - 1;}\\ {y: = - 7{x^2} + y;} \end{array}}} \right\} $ | (18) |
记T1=(1-3x-4y-x3, -x-y), T2=(-y-1, -7x2+y).
(a) 设定秩函数模板ρ(x)=a1x3+a2x2y+a3xy2+a4x2+a5xy+a6y2+a7x+a8y+a9, 令
$ H_{1}(\boldsymbol{x})=\rho(\boldsymbol{x})-\rho\left(T_{1}(\boldsymbol{x})\right), H_{2}(\boldsymbol{x})=\rho(\boldsymbol{x})-\rho\left(T_{2}(\boldsymbol{x})\right). $ |
(b) 对Hi(x)-c进行齐次化, 得到
${\hat \rho } (x, y, z) = {a_1}{x^3} + {a_2}{x^2}y + {a_3}x{y^2} + {a_4}{x^2}z + {a_5}xyz + {a_6}{y^2}z + {a_7}x{z^2} + {a_8}y{z^2} + {a_9}{z^3}.$ |
由于
(c) 判定是否存在(a1, ..., a9)的一组取值
${N_{{\hat \rho } }} > N\left( {{\hat \rho } , \lambda = \frac{1}{3}} \right) = 6, {\rm{ }}{N_{{M_1}}} > N\left( {{M_1}, \lambda = \frac{1}{3}} \right) = 99, {\rm{ }}{N_{{M_2}}} > N\left( {{M_2}, \lambda = \frac{1}{3}} \right) = 25.$ |
故取
$ \begin{gathered} {\mathit{\Theta} _{{\hat \rho } }}: = {a_1} \geqslant - 1 \wedge {a_1} \leqslant 1 \wedge {a_2} \geqslant - 1 \wedge {a_2} \leqslant 1 \wedge {a_3} \geqslant - 1 \wedge {a_3} \leqslant 1 \wedge {a_4} \geqslant - 1 \wedge {a_4} \leqslant 1 \wedge {a_5} \geqslant - 1 \wedge {a_5} \leqslant 1 \wedge \\ {\rm{ }}{a_6} \geqslant - 1 \wedge {a_6} \leqslant 1 \wedge {a_7} \geqslant - 1 \wedge {a_7} \leqslant 1 \wedge {a_8} \geqslant - 1 \wedge {a_8} \leqslant 1 \wedge {a_9} \geqslant - 1 \wedge {a_9} \leqslant 1. \\ \end{gathered} $ |
同时, 根据秩函数的定义4可知, c > 0.最后, 求解不等式组
$\left\{ \begin{gathered} {a_1} = \frac{{29}}{{7000}}, {a_2} = \frac{{51}}{{12250}}, {a_3} = \frac{1}{{980}}, {a_4} = - \frac{{43}}{{7000}}, {a_5} = 0, {a_6} = \frac{1}{{1000}}, {a_7} = 0, \\ {a_8} = \frac{{955875294522846847882517}}{{154330444367487258828048000}}, {a_9} = \frac{9}{{875}}, c = \frac{1}{{1000}} \\ \end{gathered} \right\}$ | (19) |
由于采用单纯形算法, 故该点是满足
注:对于该程序, 文献[3, 5, 6, 20]中的方法已不能计算其预定形式的3次秩函数.因为这些方法仅能计算线性循环程序的线性秩函数, 而本例中的循环是非线性的, 且所要计算的秩函数也是3次的.此外, 对该程序, 我们也尝试利用一些基于量词消去技术[22]的工具, 如Redlog、RegularChains, 去计算该程序的预定形式的3次秩函数(其中, RegularChains集成了当前功能强大的实解分类工具DISCOVERER[23], 作者此前的诸多工作也是在该工具的支持下予以开展).这等价于利用这些量词消去工具从秩函数定义4中的两个蕴含公式(8)和公式(9)中消去变元x, y即可.但由于量词消去算法的双指数复杂度以及所处理的系统都是非线性的, 从而使得这两个工具均无法计算得到该程序的3次秩函数.同时, 我们也尝试用Cousot在文献[9]中的方法——半正定规划(SDP), 并借助半正定规划求解器YALMIP[24]计算得到一个函数:
$ 42.87498608+4.1519 x+25.9747 y+1.5329 x^{3}-0.8212 y^{2}-8.7046 x^{2}+3.9678 x y-1.8358 x^{2} y+1.8393 x y^{2}. $ |
但经过检验发现, 该函数并不满足秩函数定义中的有界条件, 因此它不是程序的秩函数.
例2:考虑循环程序:
$\begin{array}{*{20}{l}} {{U_2}{\rm{ }}~{\mathbf{while}}~{\rm{ }}x \geqslant 0 \wedge y \geqslant 0{\rm{ }}~{\mathbf{do}}} \\ {{\tau _1}:x: = {\rm{ }}1 + x - y;} \\ {y: = 2x + y + 3;} \\ \begin{gathered} {\rm{or}} \\ {\tau _2}:x: = {\rm{ }}x - y; \\ y: = y + 2; \\ \end{gathered} \end{array}$ |
通过本文方法, 我们得到该循环的一个3次秩函数:
$\begin{gathered} \rho (x, y) = \frac{{56978573}}{{514034040000}}{x^3} - \frac{{10604929}}{{257017020000}}{x^2}y + \frac{{1155787}}{{79082160000}}x{y^2} - \frac{{16927733}}{{171344680000}}xy + \\ {\rm{ }}\frac{1}{{52000}}{y^2} + \frac{{7408419}}{{26360720000}}x - \frac{7}{{13000}}y + \frac{{203}}{{26000}}{\rm{.}} \\ \end{gathered} $ |
例3:考虑循环程序:
$\left. {\begin{array}{*{20}{l}} {{U_3}{\rm{ }}~{\mathbf{while}}~{\rm{ }}x \geqslant 0 \wedge y \geqslant 0{\rm{ }}~{\mathbf{do}}} \\ {{\tau _1}:x: = - x - 3y + 2;} \\ {y: = - 4{x^2} + y - 1;} \\ \begin{gathered} {\rm{or}} \\ {\tau _2}:x: = x - 1; \\ y: = - {y^2} + x - 3; \\ \end{gathered} \end{array}} \right\}$ | (20) |
通过本文方法, 我们得到该循环的一个3次秩函数
基于Polya定理, 算法1提供了一个试探性方法去探测程序U的多项式秩函数.下面我们将证明, 给定齐d次n元多项式
(A) 所有系数均为整数, 即aα∈Z,
(B) 其系数的绝对值被界定, 即存在正数η, 使得|aα|≤η,
则Polya定理中关于N的下界公式可以被改写为
$N > \frac{{d(d - 1)}}{2}\frac{\eta }{{\sigma (n, d, \eta )}} - d$ | (21) |
显然, 上述N的下界公式仅依赖于多项式f(x)的次数、变元个数以及系数的绝对值上界.根据公式(21), 我们将建立不同于算法1的新算法.在证明上述结论之前, 我们首先引入文献[25]中建立的关于整系数正定多项式在单形上的最小值下界的一个重要结果.
定理7[25].给定d次n元齐次整系数多项式
$\mathop {\min }\limits_{{\mathit{\Delta} _n}} f(\mathit{\boldsymbol{x}}) \geqslant {(2\eta )^{ - {d^n}}}{n^{ - {d^{n + 1}} - d}}{d^{ - n{d^n}}}$ | (22) |
注:因本文仅考虑单形上的正定多项式, 故定理7只引述了文献[25]中引理3.3中的前部分结论, 其后部分所涉及到单形上的负定多项式的内容在此被舍去.
根据定理2、定理3及其定理7, 我们建立下列定理8.
定理8.给定d次n元齐次整系数多项式
$N > \frac{{d(d - 1)}}{2}\frac{\eta }{{\sigma (n, d, \eta )}} - d$ | (23) |
时, 有(x1+…+xn)Nf(x1, …, xn)的所有系数为正.这里,
证明:首先, 根据定理3可知, 如果n元齐d次多项式f(x)在单形上正定, 那么存在正整数N, 当其满足:
$N > \frac{{d(d - 1)}}{2}\frac{L}{\lambda } - d$ | (24) |
时, 有(x1+…+xn)Nf(x1, …, xn)的所有系数为正.其中, L=L(f)=max{|bα|:|α|=d}, λ=λ(f)=min{f(x):x∈Δn}.再根据命题4及其注解可知, 倘若f的所有系数aα均在区间[-η, η]中, 那么,
$L = L(f) = \max \left\{ {|{b_\alpha }| = \frac{{|{a_\alpha }|}}{{c(\alpha )}}:|\alpha | = d} \right\} \leqslant \eta $ | (25) |
同时, 根据已知题设, 既然f在单形上正定且其所有系数均为整数并均被正数η界定, 那么由定理7可得, f在单形Δn上的最小值:
${\lambda _f} = \mathop {\min }\limits_{{\mathit{\Delta} _n}} f(x) \geqslant {(2\eta )^{ - {d^n}}}{n^{ - {d^{n + 1}} - d}}{d^{ - n{d^n}}}$ | (26) |
根据公式(25)和公式(26)将公式(24)进行放缩, 即得到公式(23).
注:定理8中, 公式(23)中N的下界公式仅仅依赖多项式的次数、变元个数以及系数绝对值上界.
给定带参数的多项式
(ⅰ)根据公式(23)计算N的值, 记为NG;
(ⅱ)抽取
这里, gα(v)为齐次整系数线性函数这一限定具有一般性.这是因为, 若多项式G的系数均是有理数, 那么总可以通过乘上所有有理数的分母将其系数变为整数.根据公式(5), 程序U中的所有系数均为有理数, 故参数模板多项式
定理9.记号同上.给定程序U.若系统
证明:该证明完全类似于定理6的证明.在此省略.
注:定理9表明, 若系统
算法2.
输入:一个程序U, 变元个数n, 次数d, 系数绝对值上界η.
输出:一个具有预定形式的n元d次整系数多项式秩函数; 不确定(unknown).
Step 1:设定多项式秩函数模板
Step 2:构造齐次多项式
Step 3:如果
Step 4:根据公式(23)分别计算
Step 5:抽取
$Sys_{{\hat \rho } }^{_\mathbf{Z}}, Sys_{{M_i}}^{\mathbf{z}}$ |
Step 6:利用整数线性规划算法计算
注:算法2中, 我们仅是简单地使
针对一类多项式循环程序, 本文给出了一种新的方法去计算这类程序的多项式秩函数.该方法将这类程序的秩函数计算归结为单形上的正定多项式的探测问题; 然后, 利用Polya定理, 将单形上的正定多项式探测问题归结为线性不等式约束系统的可行问题.从这一角度看, 我们的方法是一个“线性化”的方法.而线性不等式系统的可行问题则可以利用(整数)线性规划工具进行求解.相对于现有诸如Redlog、RegularChains等基于柱形代数分解的量词消去工具, 本文的算法1可以在可接受时间内进行复杂秩函数的计算.同时, 也不同于基于SDP的方法, 通过本文方法计算得到的函数是精确的秩函数, 因此不必再次验证计算所得的函数是否为秩函数.
致谢 感谢匿名审稿人对本文工作提出的宝贵意见.同时, 也感谢中国科学院成都计算机应用研究所的杨路先生对本文的修改提供的好建议.
[1] |
Cook B, Podelski A, Rybalchenko A. Proving program termination. Communications of the ACM, 2011, 54(5): 88-98.
[doi:10.1145/1941487.1941509] |
[2] |
Chen YH, Xia BC, Yang L, Zhou CC. Discovering non-linear ranking functions by solving semi-algebraic systems. In: Proc. of the 4th Int'l Colloquium on Theoretical Aspects of Computing. Berlin, Heidelberg: Springer-Verlag, 2007.34-49.
|
[3] |
Colón M, Sipma HB. Practical methods for proving program termination. In: Proc. of the Computer Aided Verification. Berlin, Heidelberg: Springer-Verlag, 2002.227-240.
|
[4] |
Podelski A, Rybalchenko A. A complete method for the synthesis of linear ranking functions. In: Proc. of the 5th Int'l Conf. on Verification, Model Checking, and Abstract Interpretation. Berlin, Heidelberg: Springer-Verlag, 2004.239-251. http://link.springer.com/chapter/10.1007%2F978-3-540-24622-0_20
|
[5] |
Bradley A, Manna Z, Sipma H. The polyranking principle. In: Caires L, Italiano G, Monteiro L, Palamidessi C, Yung M, eds. Proc. of the Automata, Languages and Programming. Berlin, Heidelberg: Springer-Verlag, 2005.1349-1361.
|
[6] |
Bradley A, Manna Z, Sipma H. Linear ranking with reachability. In: Proc. of the Int'l Conf. on Computer Aided Verification. Berlin, Heidelberg: Springer-Verlag, 2005.491-504.
|
[7] |
Bagnara R, Mesnard F, Pescetti A, Zaffanella E. A new look at the automatic synthesis of linear ranking functions. Information and Computation, 2012, 215: 47-67.
[doi:10.1016/j.ic.2012.03.003] |
[8] |
Ben-Amram AM, Genaim S. On the linear ranking problem for integer linear-constraint loops. In: Proc. of the 40th Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages. New York: ACM Press, 2013.51-62. http://dl.acm.org/citation.cfm?id=2429078
|
[9] |
Cousot P. Proving program invariance and termination by parametric abstraction, langrangian relaxation and semidefinite programming. In: Proc. of the 6th Int'l Conf. on Verification, Model Checking, and Abstract Interpretation. Berlin, Heidelberg: Springer-Verlag, 2005.1-24. http://www.springerlink.com/content/qkufe4uekjgyja4f
|
[10] |
Yang L, Zhou CC, Zhan NJ, Xia BC. Recent advances in program verification through computer algebra. Frontiers of Computer Science in China, 2010, 4(1): 1-16.
http://d.old.wanfangdata.com.cn/Periodical/zggdxxxswz-jsjkx201001001 |
[11] |
Chen HY, Cook B, Fuhs C, Nimkar K, et al. Proving nontermination via safety. In: Proc. of the 20th Int'l Conf. on Tools and Algorithms for the Construction and Analysis of Systems. Berlin, Heidelberg: Springer-Verlag, 2014.156-171.
|
[12] |
Gupta A, Henzinger T, Majumdar R, et al. Proving non-termination. In: Proc. of the 35th Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages. New York: ACM Press, 2008.147-158.
|
[13] |
Tiwari A. Termination of linear programs. In: Proc. of the 16th Int'l Conf. on Computer Aided Verification. Berlin, Heidelberg: Springer-Verlag, 2004.70-82.
|
[14] |
Braverman M. Termination of integer linear programs. In: Proc. of the 18th Int'l Conf. on Computer Aided Verification. Berlin, Heidelberg: Springer-Verlag, 2006.372-385.
|
[15] |
Xia BC, Yang L, Zhan NJ, Zhang ZH. Symbolic decision procedure for termination of linear programs. Formal Aspects of Computing, 2009, 23(2): 171-190.
http://d.old.wanfangdata.com.cn/NSTLQK/10.1007-s00165-009-0144-5/ |
[16] |
Bradley A, Manna Z, Sipma H. Termination of polynomial programs. In: Proc. of the 6th Int'l Conf. on Verification, Model Checking, and Abstract Interpretation. Berlin, Heidelberg: Springer-Verlag, 2005.113-129.
|
[17] |
Xia BC, zhang ZH. Termination of linear programs with nonlinear constraints. Journal of Symbolic Computation, 2010, 45(11): 1234-1249.
[doi:10.1016/j.jsc.2010.06.006] |
[18] |
Babic D, Cook B, Hu AJ, et al. Proving termination of nonlinear command sequences. Formal Aspects of Computing, 2013, 25(3): 389-403.
[doi:10.1007/s00165-012-0252-5] |
[19] |
Liu J, Xu M, Zhan NJ, Zhao HJ. Discovering non-terminating inputs for multi-path polynomial programs. Journal of Systems Science and Complexity, 2014, 27(4): 1284-1304.
http://d.old.wanfangdata.com.cn/Periodical/xtkxysx201406013 |
[20] |
Colón M, Sipma HB. Synthesis of linear ranking functions. In: Proc. of the 7th Int'l Conf. on Tools and Algorithms for the Construction and Analysis of Systems. Berlin, Heidelberg: Springer-Verlag, 2001.67-81.
|
[21] |
Powers V, Reznick B. A new bound for Polya's theorem with applications to polynomials positive on polyhedra. Journal of Pure and Applied Algebra, 2001, 164(1-2): 221-229.
[doi:10.1016/S0022-4049(00)00155-9] |
[22] |
Collins GE. Quantifier elimination for real closed fields by cylindrical algebraic decomposition. In: Proc. of the Automata Theory and Formal Languages. Berlin, Heidelberg: Springer-Verlag, 1975.134-165. http://link.springer.com/10.1007/3-540-16776-5_728
|
[23] |
Yang L, Xia BC. Mechanical Inequality Proving and Automated Discovering. Beijing: Science Press, 2008.
|
[24] |
Löfberg J. YALMIP: A MATLAB toolbox for rapid prototyping of optimization problems. Automatic Control Laboratory, Eidgenössische Technische Hochschule Zürich, 2004. http://control.ee.ethz.ch/joloef/yalmip.msql
|
[25] |
Hou XR, Shao JW. Bounds on the number of steps of WDS required for checking the positivity of integral forms. Applied Mathematics and Computation, 2011, 217(2): 9978-9984.
http://www.wanfangdata.com.cn/details/detail.do?_type=perio&id=e030e77d640c14c641804198cfa6a18f |
[26] |
Pugh W. The omega test: A fast and practical integer programming algorithm for dependence analysis. In: Martin JL, ed. Proc. of the Supercomputing. ACM Press, 1991.4-13. http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5348959
|
[23] |
杨路, 夏壁灿. 不等式机器证明与自动发现. 北京: 科学出版社, 2008.
|