一阶语言的语形Word文档格式.docx

上传人:b****5 文档编号:19499340 上传时间:2023-01-06 格式:DOCX 页数:16 大小:31.64KB
下载 相关 举报
一阶语言的语形Word文档格式.docx_第1页
第1页 / 共16页
一阶语言的语形Word文档格式.docx_第2页
第2页 / 共16页
一阶语言的语形Word文档格式.docx_第3页
第3页 / 共16页
一阶语言的语形Word文档格式.docx_第4页
第4页 / 共16页
一阶语言的语形Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

一阶语言的语形Word文档格式.docx

《一阶语言的语形Word文档格式.docx》由会员分享,可在线阅读,更多相关《一阶语言的语形Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

一阶语言的语形Word文档格式.docx

3)Am的一个子集P={孟子};

4)Am2的一个子集Q={<

孟母,孟子>

};

5)Am上的一个一元函数f:

f(x)=x的母亲。

如果我们设计一个一阶语言Lm来描述Am,Lm就必须包含下列符号:

1)个体常项a(指称孟子);

2)一元谓词P(表达集合P);

3)二元谓词Q(表达集合Q);

4)函数符号f(表达函数f)。

(我们把语言Lm之内的符号用斜体书写,如P,注意它与P在语言层次上的差别。

当然,这些只是Lm中的非逻辑符号。

为了表达Am中的“孟子P并且<

Q”(对应于S中的“孟子贪玩并且孟母关心孟子”),“并非所有的个体都不属于P”等较复杂的事实,Lm中还需要量词、个体变项和联结词等逻辑符号。

这些非逻辑符号和逻辑符号,组成了Lm的初始符号表或字母表。

对这个例子做一下抽象,考虑一个普遍的情形,其中的全域、特定个体、关系、函数等都无特别的限制。

按照上例提示的语言构造方法,我们可以如下定义一般的一阶语言的字母表:

1.1定义一个一阶语言L的字母表由以下符号组成:

1)一组非逻辑符号,其中包含:

i)一个(可能空的)个体常项集;

ii)对每个n1,一个(可能空的)n元谓词集;

iii)对每个n1,一个(可能空的)n元函数符号集

2)一组固定的逻辑符号,其中包含:

i)个体变项x0,x1,x2,…(可数无穷多);

ii)量词,;

iii)联结词,,,;

iv)等词;

v)括号),(。

在所有这几类中,采用什么样的符号无关紧要,但我们要求所有这些符号都是可辨认的、相互不同的。

这里采用的符号中,称为全称量词,是存在量词。

,,,,分别称为否定词、合取词、析取词和蕴涵词。

这个定义涵括了种种不同的一阶语言。

从定义可以看出,所有的一阶语言都具有共同的逻辑符号,它们的差别只在非逻辑符号上。

等词是一个特别的二元谓词。

我们假定每个一阶语言都需要等词,所以把它单拿出来作逻辑符号。

还有其他的定义方式,不假定等词是每个一阶语言都必需的,因而把等词与其他谓词同等看待,也放到非逻辑符号里。

相对于这种定义,我们上面定义的,可以叫做带等词的一阶语言的字母表。

L的这些初始的符号,是用来进一步构造L的词项、公式等语言对象的。

后面会说明,一个词项或公式是一个有穷长的符号串,其中出现的个体变项只有有穷多个。

但为了组成任意有穷长的项或公式,字母表里就必须有可数无穷多的个体变项。

至于个体变项之外的其他逻辑符号,我们只需要有穷多个。

二者相加,每个一阶语言都有可数无穷多逻辑符号。

另一方面,不同的语言的非逻辑符号的任何一类,根据语言所要描述的结构的不同,都可以是有穷集(包括空集)或无穷集,甚至是不可数集。

因为

|字母集|=|逻辑符号集|+|非逻辑符号集|=0+|非逻辑符号集|

所以,一个语言的字母表的大小取决于它的非逻辑符号集的大小。

当非逻辑符号集可数时,字母集可数;

当非逻辑符号集不可数时,字母集也不可数。

如果我们进一步要求L是一个形式语言(见第一章4.2节的描述),我们就必须要求它的字母集及其每个子类都是能行可判定的,就是说,对任何一个符号,它是否属于L的字母集,是不是L的逻辑符号,是不是L的非逻辑符号,是逻辑符号的哪一类,是非逻辑符号的哪一类等问题,我们都分别有能行的程序来判定。

形式语言对其字母集(及其每个子类)的大小做了限定,要求它(它们)是可数的。

这是因为,对不可数集合,一般没有一个能行的方法来判定一个对象是否属于它。

我们以下谈论的,除非特别指明,都是形式语言。

所以,它们的字母表和其中的每一类符号都是能行可判定的,特别就大小来说,是可数的。

词项、公式等对象的形态最终由字母表决定。

又因为所有一阶语言有共同的逻辑符号,它们的字母表的差别完全由非逻辑符号决定,所以,在不引起误解的情况下,我们不妨把一个一阶语言就简单地看成它的非逻辑符号集。

若它的非逻辑符号集是有穷的,我们就说这个语言是有穷的;

反之就称这个语言是无穷的。

比如,上例的Lm可以简化地表达为:

Lm={a,P,Q,f}。

显然,Lm是有穷语言。

一个语言(的字母表)虽然可能是为了描述某个特殊的结构而设计的,但字母表一旦给定,这个语言也可以用来描述其他的结构,只要这些结构的组成与这些字母(的一部分)相匹配就行。

比如,Lm能够用来描述任何只具有一个特指个体,一个性质,一个二元关系和一个一元函数的结构,甚至组成上更贫乏的结构。

比如,Lm能描述以自然数集N为全域的包含特指个体0、N中一元后继函数s与N中二元关系“…小于或等于…”的结构。

这时,a指称0,Q表达“…小于或等于…”,f表示s。

在谈论一个一阶语言的时候,我们需要一些元语言的变项来代表这个(对象)语言字母表中的任意某类符号。

我们约定,在元语言中用

x,y,z等代表一阶语言的个体变项;

c,d,e等代表一阶语言的个体常项;

P,Q,R等代表一阶语言的谓词;

f,g,h等代表一阶语言的函数符号。

注意,在本书的书写中,为了强调对象语言和元语言的区别,我们用斜体字母表示个体变项和非逻辑符号在对象语言(一阶语言)里的出现,用黑体字母表示它们的元语言变项。

至于其他的逻辑符号(量词、联结词、等词等),它们在元语言中的出现,就用原符号来表示,从上下文即可分辨这些出现的语言层次。

下面我们举几个具体的一阶语言字母表的例子。

1.2例L0=。

这个语言没有非逻辑符号,但有一个二元谓词(等词),能表达相等关系。

它是最小的一阶语言。

1.3例L1st。

它有可数无穷多个体常项:

c0,c1,c2,…;

对每个n1,还有可数无穷多n元谓词:

P01,P11,P21,…

P02,P12,P22,…

和可数无穷多n元函数符号:

f01,f11,f21,…

f02,f12,f22,…

谓词和函数符号的上标表示这个符号是多少元的,下标用法如前,表示这个符号是(某元的)第几个符号。

L1st是最大的一阶语言,它有足够多的非逻辑符号,一般的数学和非数学结构都可以用它来描述。

但是,在描述一些特殊的结构时,如Am,这个“全能”的语言就多余出许多符号,反而显得不那么方便。

1.4例Lord={}。

这里的是个二元谓词,除此之外Lord没有非逻辑符号。

Lord可以描述任何只有一个二元关系(没有特指个体、函数)的结构,如偏序、全序结构等。

1.5习题设计一阶语言的字母表,使它们能够分别描述:

(1)全域是自然数集N的一个结构,它包含特指个体0和1,N中二元关系“…小于或等于…”,以及N中的加法和乘法函数。

(2)第二章习题2.3中关于上帝的结构G。

2.归纳定义

下一步我们要从字母表中构造一阶语言的词项(以下简称项)。

项的作用是指称或表示结构中的个体,所以个体常项是一种项,个体变项是另一种项,而函数,如f(x)=x的母亲,其函数值也代表个体,所以函数表达式也是项。

现在的问题是:

到底哪些东西是项,或者,我们如何确切定义项的集合?

让我们先回到情形S或结构Am中来,考虑一个相似的问题:

我们如何定义其中的个体集?

从中我们可以总结出一种适用于项的定义方法。

结构Am中的个体集Am,初看起来可以定义为:

{x|x是孟子,或x是孟子的母亲,或x是孟子的母亲的母亲,……},如此枚举,把其中的元素一直这样列下去。

可是,这个做法一是繁复不堪,二是不能推广到无穷的情形:

假设某种情形中继续下去的过程没有尽头,我们就需要用一个无穷长的语句做定义的条件,但我们的语句都是有穷长的。

那么,是否可以借助某个总括了“母亲”、“母亲的母亲”等等的二元关系来定义Am?

假设“…是…的女性直系先辈”是这样一个二元关系,那么似乎有Am={x|x是孟子或x是孟子的女性直系先辈}。

但是,在Am的情形中,这个关系不是直接给定的,因此,我们需要首先定义这个关系,而定义这个关系,其实相当于定义Am这个集合。

我们绕了个圈子,最后退回了原地。

适当的方法是把Am定义为满足以下三个条件的个体集:

1)孟子Am。

2)对任意的x,如果xAm,则x的母亲属于Am,即f(x)Am。

3)除了1)和2)所要求的那些元素,没有别的东西属于Am(或者说,Am是包含那些元素的集合里面最小的一个,再或者说,Am只包含有穷步使用条件1)和2)而得到的那些元素)。

容易看出,这样定义的Am包含且仅仅包含孟子、孟母、孟母的母亲等。

根据1),孟子在Am中;

再由2),孟母也在Am中;

还是根据2)孟母的母亲,孟母的母亲的母亲……都在Am中;

最后由3),只有上述人在Am中,Am不包含其他个体。

这种定义集合的方法叫做归纳定义。

一般而言,对一个集合A的归纳定义包含上例那样的三个步骤。

第一步,我们规定某些(不限于一个)特定的元素属于A,这一步叫基始条件。

上例的基始条件便是1)。

第二步称归纳条件,它包含有穷的一组条件,其中每个条件涉及一个n(n1)元函数f,并规定,对任何a1,…,anA,函数值f(a1,…,an)A。

上例的归纳条件只有一个,表达在2)中,其中涉及的是一元函数:

第三步陈述的是封闭条件,它规定A只包含有穷步反复使用满足基始条件和归纳条件而得到的元素,如上例中3)。

直观上看,一个归纳定义是层层“生成”某个集合的过程。

基始条件规定了这个集合的最初元素,这是第一层。

然后,我们把归纳条件应用于这些基始元素,生出新的元素,就是说,把每个条件涉及的函数运算分别施于基始元素,生成函数值作为新元素,这是第二层。

在第三层,归纳条件反过来再应用于第一层的元素加上第二层得到的新元素,生出更多的元素。

如此等等,一层层反复应用归纳条件,最终得到这个集合的全部元素,而且排除了其他的东西。

归纳定义的集合可以是无穷的,但封闭条件保证了,集合的每个元素都是有穷步应用归纳条件之后“加入”这个集合的,不存在其他的“加入”途径。

换句话说,对每个元素都有某个自然数n,标志它生成的步数。

对一个对象的定义,应该唯一地确定这个对象。

那么,对一个集合的归纳定义,是不是合乎这个标准呢?

是的。

实际上,所有满足基始条件与归纳条件的集合的交集,就是唯一地被归纳定义所确定的集合。

比如,在上例里面,令

C={X|X满足Am的归纳定义中的条件1)和2)},就是说,

C={X|孟子X;

而且,对任意的x,如果xX,则f(x)X}。

那么,我们有下面的结果:

2.1引理C是满足Am的归纳定义中的条件1)、2)和3)的唯一集合。

证明:

先验证C满足条件1)、2)和3)。

第一,由C中每个集合都满足1)知,孟子属于C中每个集合,因此也属于C。

这表明,C满足1)。

第二,对任何x,如果xC,则x属于C中每个集合。

因为C中每个集合满足2),所以f(x)属于C中每个集合。

由此知,f(x)C,即C满足2)。

第三,任给集合D,如果D满足1)和2),则由C的定义,DC。

所以,CD(参见第二章习题1.6-iii)。

这说明,C是满足1)和2)的最小集合,即C满足条件3)。

再证明唯一性。

设集合E满足1)、2)和3)。

由E满足1)和2)知,EC,因此CE。

又因E满足3),E是满足1)和2)的最小集合。

已知C满足1)和2),所以,EC。

即有E=C。

由E的任意性,C是唯一的。

特殊的例证不保证一般的结果。

但是,这个证明的思路并不依赖集合Am的特殊性质,因此它可以推广到任意归纳定义的情形中,这个工作留作习题。

2.2习题证明:

每一个归纳定义都唯一地确定一个集合。

归纳定义在数学中有广泛的应用。

我们举一个例子,用个体0、1和函数f(x)=x1归纳定义自然数集合N:

1)0N。

2)如果xN,则x1N。

3)除了上面所要求的,没有别的东西是N的元素。

2.3习题

1)用个体0、1和函数f(x)=x1与g(x)=x1归纳定义整数集合Z。

2)设计基始条件和归纳条件,归纳定义奇数集合。

一个集合,如果对它有一个归纳定义,那么我们就可以设计一个有力的证明方法,来证明这个集合的全部元素都有某性质P,这个方法叫做归纳证明。

对归纳定义的集合A,要证明任意xA都有P(x),我们只要做两步工作:

1)证明A的基始元素(基始条件确定的元素)都有性质P。

这一步称为归纳基始。

2)证明每个归纳条件涉及的函数都“保持”性质P。

就是说,对任意这样的一个n元函数f证明:

如果a1,…,anA,且P(a1),…,P(an),则P(f(a1,…,an))。

这一步称为归纳推步,其中蕴涵的前件a1,…,anA且P(a1),…,P(an),称为归纳假设。

为什么这两步就保证了A中所有元素都有性质P呢?

直观上看,1)和2)保证了所有满足A的归纳定义的基始条件和归纳条件的元素都有性质P,而封闭条件则规定A只有这些元素。

比如,具体到上面关于孟子等人的集合Am,1)保证了孟子有性质P;

2)保证了

孟子有性质P孟母有性质P孟母的母亲有性质P……

从此推出,孟子、孟母、孟母的母亲……都有性质P。

最后根据Am定义中的封闭条件,这些是Am的所有元素,所以Am中所有个体具有性质P。

这是直观思路,严格的证明留作习题。

2.4习题对于任意可归纳定义的集合A和任意性质P,假设你已经完成了归纳基始和归纳推步的证明。

现在令Q{xxB且x有性质P},请证明:

BQ,即B的所有元素都有性质P。

(提示:

参考习题2.2。

至于归纳证明的应用,中学数学里常见的数学归纳法就是一个典型的例子。

要证明任意的自然数都有性质P,只要证

1)归纳基始:

P(0);

并且

2)归纳推步:

对任意的自然数k,P(k)P(k1)。

就完成了这个证明。

这是因为,自然数集合可以像上面那样归纳定义。

在以后的运用中,我们经常采取归纳证明的另一种形式。

就是在归纳假设里,不光假定眼下用来生成新元素的那些“老”元素有某性质,而是进一步假定先前生成的所有“老”元素都有此性质,由此证明当下用函数生成的新元素也有这个性质。

比如,要证明任意的自然数都有性质P,我们只要证明:

对任意的自然数k,如果小于k的数都有性质P,则P(k)。

这有时被称作“第二数学归纳法”。

3.项

现在回到我们的一阶语言中来,讨论项的定义问题。

一个一阶语言一经给定,我们就可以暂时忘记它所要描述的结构,而把这个语言看作一些单纯的符号,以及符号的组合。

这是语形研究的特点,语形性质可以(而且应该)独立于语言的解释或意义而得到研究。

给定一个一阶语言的字母表,我们可以把项定义为其中的字母形成的某种符号串。

一个符号串是符号组成的一个有序n元组(n1),n称为这个符号串的长度。

如<

f>

,<

f,g>

f,g,a>

,等分别为长度为1,2,3的三个符号串。

长度为1的符号串就是一个符号本身。

以下表示符号串时,我们去掉集合论中的尖括号和逗号,直接把符号按顺序排列,如上面三个符号串分别表示为:

f,fg,fga。

我们约定,在元语言中用,,等代表任意一阶语言L的字母表的元素组成的符号串(简称L-串)。

如果L的字母集为A,则L-串的集合={An|n1}。

对任意有穷个符号串1,2,…,n,我们用12…n表示这n个符号串前后连贯起来形成的新符号串。

如1=f,2=fg,则12=ffg。

这使得我们可以对任意n1,在L-串的集合上定义如下的n元连接函数函数Cn:

Cn(1,2,…,n)=12…n

容易验证,对每个n1和任意n个符号串1,2,…,n,Cn(1,2,…,n)总是有穷长的。

当然,要精确地定义连接函数,可以用归纳定义的方法。

递归!

3.1习题归纳证明:

对每个n,Cn(1,2,…,n)的长度是1,2,…,n的长度之和。

因此,连接函数的确把有穷个L-串头尾连接起来,形成一个新的L-串。

如果同时有Cn(1,2,…,n)=和,则根据有序组的定义,和长度相同且每个位置上相对应的符号分别相同,就是说,=。

这说明,Cn的确是函数。

以下称函数值Cn(1,2,…,n)为1,2,…,n的连接。

利用L的字母表和L-串上的连接函数,我们就可以归纳定义L的项(或L-项)。

3.2定义设L为一阶语言。

L-项定义为:

1)基始条件:

i)L字母表中的每个个体常项是L-项。

ii)每个个体变项是L-项。

2)归纳条件:

对任意n1,若f是L的n元函数符号,且符号串t1,…,tn是n个L-项,则它们的连接ft1…tn也是L-项。

3)封闭条件:

没有其他东西是L-项。

定义中的基始条件由L的字母表决定。

对每个n1,归纳条件涉及的函数是Cn1,它把f和n个现有的项连接为一个新的项。

封闭条件相当于说L-项的集合是满足1)和2)的最小集合,或者说,每个L-项都是从基始的个体常项和变项出发,有穷次应用归纳条件而生成的。

叙述这个定义时,我们用到了新的元语言变项t。

以后我们就用r,s,t等代表项。

L-项既然是连接函数在L字母表基础上生成的,根据习题3.1,每个L-项都是有穷长的L-串。

L-项的集合与L的字母集一样大,都是可数无穷的。

这是因为,一方面,L-项的集合是L-串的集合的子集,因此,

|L-项集||L-串集|=|{L字母集n|n1}|=00=0;

另一方面,

|L-项集||个体变项集|=0。

3.3例语言L0=(见例1.2),它没有个体常项和函数符号,但有个体变项。

根据定义3.2的1-ii),x0,x1,x2,…是L0-项。

因为没有函数符号,所以不能用归纳条件生成新的项。

根据3),L0只有这些项。

语言Lord={}(见例1.4)也没有个体常项和函数符号。

同理,它的项只是个体变项。

3.4例考虑语言L1st(见例1.3)。

由1),个体常项c0,c1,c2,…,个体变项x0,x1,x2,…都是L1st-项。

由2),n元函数符号与n个常项或变项的连接也是L1st项,如:

f01c1,f31x0,f12c1x0,f25x0x4x9c23c2,…

再由2),归纳条件重复使用可构造更复杂的L1st-项,如:

f21f01c1,f22f01c1f12c1x0,f32f31x0f25x0x4x9c23c2,…

但c1x0不是项,f11f01c1f12c1x0也不是项。

(为什么?

对一个形式语言L来说,一个符号串是不是L-项,或者是否属于L-项的集合,应该是能行可判定的。

这就是说,存在一个有穷长的机械过程或程序,其中每一步到下一步都由确定的规则决定,而对每个符号串,在其上执行这个程序后,都在有穷步后得到一个是或否的答案,回答这个符号串是不是L-项。

一般而言,这样一种程序叫算法。

如对任意自然数是不是偶数,我们就有一个算法来判定这个问题。

对集合A,如果有一个算法来判定任意a是否属于A,则称A为可判定的。

这样描述的算法和可判定性,仍然是直观的概念。

下面我们在这个直观的基础上,说明L-项的集合是可判定的。

3.5定理设L为形式语言。

L-项的集合是可判定的。

首先说明,因为L是形式语言,所以它的个体常项集、个体变项集以及(对每个n1)n元函数符号集都是可判定的。

设符号串的长度为n

(1),我们描述一个判定是否L-项的程序。

第一步:

若n=1,则只有一个符号。

根据以上说明,我们可以判定是不是一个L的个体常项或变项。

如果是,则是L-项;

如果不是,则不是L-项。

第二步:

若n1,则判定的第一个符号是不是L的某个m元函数符号(mn)。

这只要对L的每个元数小于n的函数符号集,逐一判定的第一个符号是否属于这个集合。

如果不是,则不是L-项;

如果是,则继续下一步。

第三步:

判定的每一个符号是否L的个体常项、变项或某个元数小于n的函数符号。

若有一个符号不是三者之一,则不是L-项;

否则继续下一步。

第四步:

在串中,从后往前找到第一个函数符号f,设为k元,检查f后面是否有不少于k个个体常项或变项。

若否,则不是L-项;

若是,则把f和其后的这k个符号抹去,在原位置上写上符号t1,然后继续往前找到下一个函数符号,看它后面是否有足够多个符号,包括个体常项、变项或t1。

若是,则重复上面过程,抹去这个函数符号及其后的相应个符号,代以t2。

按此法继续检查前面的函数符号,直到的第一个符号(根据第二步,它是一个m元函数符号)。

这时,第一个符号后面必须刚好有m个符号,包括个体常项、变项或ti,才能保证是L-项。

这个判定过程表明,L-项的构造可用树形图来分析。

个体常项或变项是只有一个节点的树;

复杂的项从最后一个函数符号开始,逐步列出各简单项和每个ti。

如果项t是项s的一部分,则把t写在s的上面。

比如L1st-项f22f01c1f01f12c1x0的构造过程可以分析为下面的分解树:

c1x0

————

c1f12c1x0(t1)

—————————

f01c1(t3)f01f12c1x0(t2)

————————————

f22f01c1f01f12c1x0

每一层所有的符号串都是项。

最上面没有横线的(叶

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1