第5 章
正则语言的性质
前面曾经提到,{0n1n|n≥1}不是正则语言(RL)。这并不是因为某人构造不出产生该
语言的正则文法(RG)、有穷状态自动机(FA)或者正则表达式(RE)等,而是从RL的性质出
发,可以证明该语言不具有RL的性质,所以不存在这些形式的描述。那么,RL具有什么样
的性质呢? 本章将首先对此进行讨论,包括RL的泵引理及其应用;RL关于并、乘积、闭包、
补、交、正则代换、同态、逆同态等运算的封闭性。
另一个问题是对一个给定的RL,存在多个产生该语言的正则文法,多个识别该语言的
有穷状态自动机和多个表达该语言的正则表达式。由于它们描述的是同一个语言,所以,它
们“本质上”应该是一样的。因此,人们希望能找到一种方法,给出RL“本质上”的描述——— 
该语言所决定的相应字母表的克林闭包的等价分类,然后根据这个分类,构造出接受这个给
定RL的、状态最少的、确定的有穷状态自动机———最小DFA。由于语言是给定的,所以相
应的最小DFA 在规定的意义(如同构)下应该是唯一的。最后将讨论如何根据DFA 去构
造其相应的最小DFA,并且此方法是可以自动化的。这一部分的内容包括:右不变的等价
关系、DFA 所确定的等价关系与语言确定的等价关系的右不变性,Myhill-Nerode定理的证
明与应用,DFA 的极小化。
在有了语言L 的最小DFA 后,去掉其相应的陷阱状态,可以方便地得到较为简洁的正
则文法。当然,从最小DFA 出发,寻求L 的正则表达式也可能对构造是非常有利的。
最后,本章还将讨论RL的判定算法。
5.1 正则语言的泵引理
从前面的讨论知道,任何有穷语言都是RL。所以,非RL一定是无穷语言。因此,我们
只讨论无穷语言是否为RL的判定问题。如何判定一个语言不是RL呢? 这需要从RL的
“本质”特性出发进行讨论。
DFA 是RL的识别模型。一个DFA 只有有穷个状态,这就是说,当该DFA 识别的语
言L 是无穷语言时,L 中必定存在一个足够长的句子,使得DFA 在识别该句子的过程中, 
肯定要重复地经过某些状态。
例如句子z=a1a2…am ,不妨假设DFA 在识别它的过程中需要经过的状态依次为q0, 
q1,…,qm 。根据重叠原理,当m 大于或等于DFA 所有可达状态的个数时,这些状态中至少

正则语言的性质

第

有一对是重复的,如qk 
和qj 
。显然,这里的k≠
j 
成立,不妨设k<j。设v=ak+1…aj 
是

5

引导DFA 从状态qk 
到达状态qj 
的子串,则它就是该DFA 中从q0 到qm 
的标记为
x 
的路

章

中从qk 
到qj 
因此,所构成的字符串

的标记为
v 
的回路, 
v 
在它出现的位置无论重复多少次, 
都一定是DFA 所识别的语言的句子,如图5-1所示。

531
图5-
1 
DFA 
处理句子中经历的状态序列

由于qk 
和qj 
是同一个状态,为了便于理解,将该图重画成如图5-2所示的样子。


图5-
2 
DFA 
处理句子经历的状态序列中存在重复的状态

根据重叠原理,这样的qk 
与qj 
在序列q0,qN 
中一定是存在的, 
N 
为相应

q1,…,其中,
DFA 的可达状态个数。下面给出这种现象的严格描述,并给出判定一个语言不是RL 的一
般方法。

设
L 
是一个RL,DFA 
M 
=(Q,δ,F)
Σ,q0,


满足

L(
M 
)=L,|Q|=
N 
不失一般性,不妨假设
Q 
中不含任何不可达状态,并且|Q|=
N 
。取
L 
的句子

对.h,1≤h≤m,令
z=a1a2…am 
(m≥
N 
) 

δ(a1a2…ah 
)=qh 
在状态序列q0,
q0,
中至少有两个状态是相同的。不妨假设qk

由于m≥
N 
,所以, q1,…,与
qj 
是该状态序列中最早出现的相同状态: 
qN 

qk 
=qj
显然
,
k<j≤
N


此时有

δ(q0,a1a2…ak 
)=qk 
qk 
,)

δ(ak+1…aj=qj 
=qk 
δ(qj 
,aj+1…am 
)=qm 

注意到qj 
=qk 
,所以对于任意整数i≥0, 
i)

i

qk 
,()qk 
,()1)

δ(ak+1…aj=δ(ak+1…aj
. 
=δ()

qk 
,

ak+1…aj

=qk 


631
形式语言与自动机理论(第4版) 

因为

z∈L(
M 
) 

所以

qm 
∈
F
故,对于任意整数i≥0, 
δ()
)


i

也就是说, 
q0,a1a2…ak 
(ak+1…ajaj+1…am 
=qm 

i

a1a2…ak 
()
M 
)

ak+1…ajaj+1…am 
∈L(

取

u=a1a2…ak 

v=ak+1…aj 

对于任意整数i≥0, 
w 
=aj+1…am 

注意到k<j≤
N 
,所以u,
uviw∈
L 

v 
满足如下条件: 
|uv|≤
N 
|v|≥1 
再注意到讨论中的DFAM 
的任意性,所以,该结论对最小DFA 也成立。从而得到如下
引理。
5-
1 
设
L 
为一个RL,则存在仅依赖于
L 
的正整数
N 
,对于.z∈L,如果
则存在u,满足:

|z|≥
N 
, v,w,
(1)z=vw 。


(2)|uv|≤N。(u) 
(3)|v|≥1 。
uw∈L。
(4)对于任意整数i≥0,vi(5)
N 
不大于接受
L 
的最小DFAM 
的状态数。
引理5-1被称为关于RL 的泵引理(pumpinglemma )。由于它是如此的重要和有影
响,以至于人们一直将其称为引理而未改称其为定理。

例51
证明{0n1n|n≥1}不是RL 。
证明:设L={0n1n|n≥1 }。假设
L 
是RL,则它满足泵引理。不妨设
N 
是泵引理所指
的仅依赖于
L 
的正整数,取

显然
z,
=0N1N 
必存在u,wu并且|所以
v 
只可能

z∈L。按照泵引理所述, v,。由于|v|≤
N 
, v|≥1,
是由0组成的非空串。不妨
设


v=0k 
,k≥1 

此时有

u=0N 
-k-
j 

w=0j1N 


正则语言的性质

第

从而有

5

-k-j(i0i-1)

章

当i=2时,有
uviw=0N 
0k 
)j1N 
=0N 
+(k1N 
uv2w=0N 
+(2-1)k1N 
=0N 
+k1N 

731
注意到k≥1,所以
N 
+k>
N 
这就是说, 
0N 
+k1N 
.
L 
这与泵引理矛盾,所以,
L 
不是RL 。
证明{0n|
n 
为素数}不是RL 。
例52
证明:设L={0n|
n 
为素数}。假设
L 
是RL,则它满足泵引理。不妨设
N 
是泵引理所
指的仅依赖于
L 
的正整数,取
N 
+
p 

其中,
N 
+
p 
是素数,即z∈L。
z=0
按照泵引理所述,必存在u,。由于|所以
v 
必定是由0组成的非空串。不

v,wv|≥1, 

妨设

v=0k 
,k≥1 

此时有

u=0N+p-k-
j 

w=0j 

从而有

k-j(i0i-1)k

uviw=0N 
+p-0k 
)
j 
=0N 
+
p 
+(
i1)

由于是要证明
L 
不是RL,因此这里要能找到
i 
的一个值,它能表明串0N 
+p+(-
k 
不是
L 
的句子。对本例而言,就是要表明
N 
+p+(1)当i=
N 
+p+1 

时,有
i-
k 
不是素数。显然, 

N 
+p+(-
k 
=
N 
+p+(-k

i1)
N 
+p+11)
=
N 
+p+(
N 
+p)

k 
=(
N 
+p)(1+k) 
注意到k≥1,所以
N 
+p+(
N 
+p+11)
N 
+p)(1+k) 

不是素数。故当i=
N 
+p+1 时,
-k=(

uvN 
+
p 
+1w=0(
N 
+p)(1+k) 

不是
L 
的句子: 

vN 
+
p 
+1

这与泵引理矛盾。所以,
L 
不是RL 。
uw.
L 

例53
n1n+m|m,

证明{0m2n≥1}不是RL 。
证明:设L={0n1n+m|m,则它满足泵引理。不妨设
N 
是泵
m2n≥1 }。假设
L 
是RL, 
引理所指的仅依赖于
L 
的正整数(实际上,这个
N 
是不存在的), 取


831
形式语言与自动机理论(第4版) 

z=0N1N22N 
显然,必存在u,w。由于|uv|≤
N 
,并且|v|≥1,所以
v 
只可能

z∈L。按照泵引理所述, v,
是由0组成的非空串。不妨
设
v=0k 
,k≥
1


此时有

u=0N-k-
j 

w=0j1N22N 

从而有

uviw=0N 
-k-j(0i0j1N22N 
=i1)k1N2

k 
)0N 
+(-2N 

与前面两个例题一样,由于是要证明
L 
不是RL,因此,这里要能找到
i 
的一个值,它能
表明串0N 
+(-k1N22N 
不是
L 
的句子。对本例而言,也就是要找
i 
的一个值,它使得所得字i1)
i1)当i0时,

符串中0和1的个数之和不等于2的个数,即
N 
+(-k+
N 
≠2N 
。显然,=有

0N 
+(0-1)
N 
-2N 

注意到k≥1,所以
uv0w=k1N22N 
=0k1N2
N 
-k+
N 
=2N 
-k<2N
这就是说,0N 
-k1N22N 
.
L


这与泵引理矛盾。所以,
L 
不是RL 。

通过上述3个例子,可以更清楚地看出,引理5-1是用来证明一个语言不是RL 
的。因
为它只是说RL 必定满足这些条件,并没有说满足条件的语言是RL 。即引理给出的是RL 
的“必要条件”而不是“充分条件”。所以,不能用泵引理去证明一个语言是RL 
。此外,在使
用泵引理证明一个给定语言不是RL 时,需要注意如下几方面的问题: 

(1)由于泵引理给出的是RL 的必要条件,所以,在用它证明一个语言不是RL 时,使用
反证法。
(2)泵引理说的是对RL 都成立的条件,而要用它证明给定语言不是RL 。也就是说, 
相应语言的“仅仅依赖于
L 
的正整数
N 
”实际上是不存在的。所以,一定是无法给出一个具
体数的。因此,往往就用符号
N 
来表示这个“假定存在”而实际并不存在的数。
(3)泵引理指出, 则对任意z∈L, z|≥
N 
,一定会存在u,w,
如果
L 
是RL, 只要|v,使
得uviw∈
L 
对所有的
i 
成立。因此,在选择
z 
时,就需要注意到论证时的简洁和方便。

例如,例5-3中如果不取z=0N1N22N 
,而是取z=0n1m2n+
m 
,并且只要求2(n+m)≥ 
N 
,那么要证明不存在这样的u,v,w,除了需要讨论v=0k 
的情况外,还需要分别讨论
v=1k 
,v=2k 
,v=0h1k 
,v=1h2k 
等情况。这里,h,k≥1 。显然,这些附加的讨论在取
z=0N1N22N 
时,都被避免了。

再例如,设
L={x|
x 
为0的个数和1的个数相等的0,1串}
01)01)

L 
不是RL 。如果取z=(
N 
,就无法用泵引理证明
L 
不是RL 。因为,只要取v=(
k 
, 
N 
≥k≥1,就能保证对于任意整数i≥0,iw 
∈
L 
成立。这样的
z 
还很多。但是,如果取
z=0N1N 
,相应的证明就变得与例5-1一样(u) 容(v) 易了。由此可见,要力求寻找这样的一个z,
z 
中不存在满足条件的子串v,使得当
v 
被“泵进”或者“泵出”时,字符串uviw 
总保持
L 
的句


正则语言的性质

第

子特征。

5

综上所述,在选择
z 
时,应该选择那些既可以找出矛盾,又能使证明尽可能简单的特殊

章

的z(对“ 的否定)。事实上, 
z 
的选取

所有
z 
” 在用泵引理证明一个语言不是RL 的过程中,
是最困难的。一旦选出了一个恰当的z,证明基本上就可以顺利地进行下去,因为剩余的叙
述基本上是“按部就班”地进行。

931
(4)当一个特意被选来用作“发现矛盾”的
z 
确定以后,就必须说明满足条件|uv|≤
N 
和|v|≥1 的所有
v 
都不能使uw∈
L 
对所有i≥0 成立( 存在u,
w 
” 
vi对“ v,的否定)。

(5)与选
z 
时类似,在寻找
i 
时,也仅需要找到一个表明矛盾的“具体”值就可以了(对
“所有i”的否定)。
(6)一般地,在证明一个语言不是RL 的时候,并不使用泵引理的第(5)条。
(7)事实上,引理所要求的|uv|≤
N 
并不是必需的。但它为简化相应的证明提供了良
好的支撑。但是,从引理的证明可以看出,对于一个RL,当它的句子
z 
足够长时,对
z 
的任
意一个长度为
N 
的子串z1,同样可以在这个子串中找到可以被“泵进”或者“泵出”的非空子
串v。这会给证明带来更多的方便。例如,关于{0n1m2m|n,
m 
≥1}不是RL 的证明就是如
此。这种证明方法被称为扩充了的泵引理(见相关习题)。当然,有时会需要使用RL 所具
有的其他性质来完成相应的证明。有关内容稍后讨论。
(8)除了需要证明一个语言不是RL 外,有时也希望证明一个语言是RL 。此时,最直
接的方法是给出该语言的正则文法描述,或者FA 和RE 描述。但是有时候直接用一些已
有的结果和RL 的性质会更有效,毕竟语言的正则文法描述或者FA 和RE 描述并不总是那
么容易给出的。
5.正则语言的封闭性
2 

本节讨论RL 对有关运算的封闭性。

定义51
如果任意的、属于某一语言类的语言在某一特定运算下所得的结果仍然是
该类语言,则称该语言类对此运算是封闭的,并称该语言类对此运算具有封闭性(closure 
property)。

给定一个语言类的若干语言的描述。如果存在一个算法,它可以构造出这些语言在给
定运算下所获得的运算结果的相应形式的语言描述,则称此语言类对相应的运算是有效封
闭的,并称此语言类对相应的运算具有有效封闭性(validclosureproperty)。

根据正则表达式的定义,立即可以得到以下定理
。
5-
1 
RL 在并、乘积、闭包运算下是封闭的
。
5-
2 
RL 在补运算下是封闭的
。



证明:设
L 
是
Σ 
上的一个RL,从而存在一个DFA
M 
=(Q,δ,F)


Σ,q0,

满足

L(
M 
)=
L 


041
形式语言与自动机理论(第4版) 

取DFA
Q,δ,
显然,对于任意x∈Σ*, 
M'=(Σ,q0,Q-F)
δ(q0,x)f∈F.δ(x)=f.Q

=q0,
F 

即

x∈L(
M 
).x.L(M'
)
这就是说, 
L(M')=Σ*-L(
M )


所以,RL 在补运算下是封闭的。定理得以证明。


5-
3 
RL 在交运算下封闭。
证明:该定理由定理5-1、定理5-2以及DeMorgan定理可以推得。
对于给定的DFAM1=(Q1,δ1,和DFAM2=(Σ,F2), 

Σ,F1) Q2,δ2,如何构造
出DFAM 
,使得L(
M 
)=L(M1)∩L(M2)呢? 显然,对于一个输入字符串,不可能让其中
一个DFA“先工作”,等它确认该字符串是它接受的句子后,再让另一个DFA 启动。因为, 
DFA 并不是2DFA,所以,对一个输入串,不可能进行两次扫描。实际上,可以按照如下思
路去考虑:对Σ*中的任意字符串a1a2…am 
,M1 和M2 在处理a1a2…am 
的过程中一定分

q01,q02,

别经过状态序列q01,q11,…,qm1和q02,qm2 am 
中字符

q12,…,。这两个状态序列依据a1a2…
的出现顺序和相应的移动函数有如图5-3所示的对应关系。根据状态及状态变换的这种对
应关系,就可以知道如何根据M1 和M2 去构造
M 
。事实上,对于任意一个输入字符串,所
构造的
M 
必须同时能够模拟M1 和M2 对该输入字符串的处理过程。而且要求,对M1 行
为的模拟不应该受到对M2 行为的模拟的影响;反之,对M2 行为的模拟也不应该受到对
M1 行为的模拟的影响。当a1a2…am 
是L(中的句子时,有qm1∈F1,

M1)∩L(M2) qm2∈ 

。当a1a2…am 
.L(M1)∩L(M2), 但a1a2…am 
∈L(M1)∪L(M2)时,qm1∈F1,
F2 有且仅有一个成立。当a1a2…am 
.L(M1)∪L(时,
根据这里的讨论,读者不难给出
M 
的详细描述。
M2) qm1.F1 和qm2.F2 同时成立。

F2 qm2∈ 


图5-
3 
M1 
和M2 
对应于同一个输入串的状态变换过程

上述讨论实际上涉及利用已有的(子)系统去构造一个新系统,按照上述讨论,很容易构
造出DFAM 
,使得L(
M 
)=L(M1)∪L(M2)。
Q,δ,下面再考虑另外一个问题。对字母表
Σ 
上的RLL,令DFAM 
=(Σ,F)识别
设δ(a)f(是
Δ 
上的一个RL, 
q0,
Qa 
,

L。对于任意(q,a)∈Q×Σ, q,=p,a) 假定DFAMa 
=(
δ,,)识别f()。不妨假设:对a,如果a≠b,则Qa 
∩Qb 
=.,Qa 
∩Q=. 。

Δ,aq0aFa 
b∈Σ, 
容易构造一个FAMRS,(a) 它的“主框架”是
M 
,而它的“分支子模块”为Ma 
。如果
M 
在状态
q 
读入字符
a 
时进入状态p,则让MRS 在状态
q 
做一个空移动转到Ma 
的开始状态q0a 
,MRS 在


正则语言的性质
第5章
“分支子模块”Ma 中处理f(a)的句子。当这个句子被处理完后,它一定处在Ma 的某一个
终止状态。从Ma 的每一个终止状态到M 的状态p 引一条标记为ε 的弧,使M RS回到状态
p。如此下去,直到最后到达M 的终止状态。可见,M RS的状态集为Q ∪a∈Σ
Qa ,它的终止状
态即为M 的终止状态集F。从而,有FA 
M RS= Q∪a∈Σ
Qa ,Δ,δRS,q0,( F ) 
使得L(M RS)=f(L)。可见,RL在这种运算下也是封闭的。称这种运算为正则代换。
定义5-2 设Σ,Δ 是两个字母表,映射
f:Σ→2Δ* 
称为是从Σ 到Δ 的代换(substitution)。如果对于.a∈Σ,f(a)是Δ 上的RL,则称f 为正
则代换(regularsubstitution)。
先将f 的定义域扩展到Σ* 上,f:Σ* →2Δ*。
(1)f(ε)={ε}。
(2)f(xa)=f(x)f(a)。
再将f 的定义域扩展到2Σ*上,f:2Σ* →2Δ*。对于.L.Σ*, 
f(L)=∪x∈Lf(x) 
例5-4 设Σ={0,1},Δ={a,b},f(0)=a,f(1)=b* ,则
f(010)=f(0)f(1)f(0) 
=ab*a 
f({11,00})=f(11)∪f(00) 
=f(1)f(1)∪f(0)f(0) 
=b*b* +aa 
=b* +aa 
f(L(0* (0+1)1* ))=L(a* (a +b* )(b* )* ) 
=L(a* (a +b* )b* ) 
=L(a*ab* +a*b*b* ) 
=L(a*b* ) 
定义5-3 设Σ,Δ 是两个字母表,映射
f:Σ→2Δ* 
为正则代换,则
(1)f(.)=.。
(2)f(ε)=ε。
(3)对于.a∈Σ,f(a)是Δ 上的正则表达式。
(4)如果r,s 是Σ 上的正则表达式,则
f(r+s)=f(r)+f(s) 
f(rs)=f(r)f(s) 
f(r* )=f(r)* 
141

142 
形式语言与自动机理论(第4版) 

是
Δ 
上的正则表达式。
5-
4 
设
L 
是
Σ 
上的一个RL,f:Σ→2Δ* 是正则代换,则f(L)也是RL 。
证明:前面曾经非形式地简要介绍了根据接受
L 
的DFAM 
以及接受f(的DFAMa

a) 
构造接受f(L)的FA 的思路,有关构造和证明的严格描述请读者给出。在这里,用正则表
达式来进行定理的证明。
使得L(
r=
) L) 

因为
L 
是RL,则存在正则表达式r, r)L。
下面对
r 
中运算符的个数
n 
实施归纳,证明f(是表示f(的正则表达式。即
f(L(L(f(

r))=r)) 
当n=0时,由定义5-2和定义5-3,结论成立。
设当n≤
k 
时定理成立,即当
r 
中运算符的个数不大于
k 
时,L(=f())。当

n=k+1 时有如下3种情况: 
f(r))L(
r
(1)r=r1+r2
。


r)) 

f(L)=f(L(

L(
=f(L(r2)
)


=f(r1+r2)) 

r1)∪L(正则表达式的定
义
=f(L(L(正则代换的定
义


r1))∪f(r2)
)
=L(f(f(


r1))∪L(r2)) 归纳假
设
=L(r1)+f(正则表达式的定
义


f(r2)) 

f(正则表达式的正则代换的定
义
=L(f(
(2)r=r1r2。
r)
)


=L(r1+r2)) 

r)
)
=f(L(r2)
)


f(L)=f(L(

r1
=f(L(L(正则表达式的定
义


r1)r2)) 

r1))r2)) 正则代换的定义

=f(L(f(L(

=L(f(L(f(归纳假设

r1))r2)
)
=L(f(r1)f(r2)) 正则表达式的定
义


=L(f(r2)) 正则表达式的正则代换的定义

=L(f(

r1

r)
)
(
=
r 
* 
L。
(


3)r=
1
f(L)f(r)
)
=f(L(1)
)


r 
* 

L(*) 正则表达式的定
义
=(f(L(* 正则代换的定
义


=f(r1)

r1))
)
=(L(r1))
)


fr(
1)
* 归纳假设
=L(f(*) 正则表达式的定义
=L(f(1)) 正则表达式的正则代换的定义

r 
* 

=L(r)) 

f(
所以,结论对n=k+1 成立。由归纳法原理,结论对任意正则表达式成立
。



正则语言的性质

第

定理得到证明。

5

注意,定理5-1可以作为本定理的直接推论。

章

例55
1,Δ={b}
,
f(0)=ab
f(1)=b* 
a *


341
f(2)=a+b) 

设Σ={0,2},a,正则代换
f 
定义为
a 
*(

则

(1)f(00)=abab。
(2)f(010)=
b 
* 
a 
* b=ab+a+b。
(3)f((0+1+2)*(a) )(a) =(ab+b* 
a 
*+
a 
*(
a 
+b))*=(b* 
a 
*+
a 
*(a+b))*= 

a+b)
(4)f(0+1+2)*)=aab+b*+
a 
*a+b))*=aa+b)*。
(
(5)
* 
f
。
(
0012(
)=
b 
* 
a 
* 
a 
*
b(a(
+b)=
aab*
+
a 
*(a(
+b)。
b(
(6)f(()*(a) =(b+b* 
a 
*)*=(b+b+a+b* 
a 
*)*=(*。

0+1)aaa+b)
定义54 
设Σ,f:Σ→Δ* y∈Σ*,
有


Δ 
是两个字母表,为映射。如果对于.x,
f(x=x)y)

y)f(f(
则称
f 
为从
Σ 
到Δ*的同态映射(homomorphism )。
对于.L.Σ*,
L 
的同态像
f(L)=∪{f(x)}

x∈
L 

对于.w.Δ*,
w 
的同态原像是一个集合
:
f 
-1(w)={x|f(x)=
w 
且x∈Σ*
}
对于.L.Δ*,
L 
的同态原像是一个集合
:
f 
-1(L)={x|f(x)∈L}
例56
设Σ={0,a,
f(0)=aa 

1},Δ={b},同态映射
f 
定义为

f(1)=aba 

则

(1)f(01)=aaaba
。
(2)f((01)*)=(ba)*
。
1(


(3)f-aab)=.。(a) (a) (a) (4)f-1(a)={0}
。a(a) aaa,baaaaaa1,


(5)f-1({a,baaaa,baaa})={100 }
。
(6)f-1((b+ba)* a)={1}
。
(7)f(1(((a) b+b* a))f({={b}
。


f-aa)=1})aa 
令L=(ab+ba)* a,上述(7)表明,f(
f 
-1(L))≠L。但是,不难证明,对任意语言
L 
和同态映射f, 
f(
f 
-1(L)).
L 

注意到同态映射是正则代换的特例,所以有以下推论和定理。