- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
高级语言程序设计方法学第12章-10
第12章
第12章 逻辑式程序设计语言
无论是命令式还是函数式程序都把程序看作是从输入到输出的某种映射。当然命令式语
言有时没有数据输出,但也要“输出”某些动作。为了实现这种映射,程序要对数据结构实施
某个算法过程,算法实现该程序功能。算法又是以程序语言提供的控制机制实现计算逻辑。所
以,R.Kowalski说:
算法 = 逻辑 + 控制
然而传统语言计算逻辑在程序员心里,隐式地体现在程序正文之中,为此程序正确性证
明还要把它隐含的逻辑以断言形式地写出来 。
自然人们会想到能不能把描述计算的理论基础命题演算和谓词演算直接变为程序设计语
言。这样,也许不必用求值来判定某件事情的真、伪,直接根据事实和规则判定真伪,“找出”
解。事实上,这是可行的,而且在人工智能的专家系统、语言理解、数据库查询中非常需要这
种程序设计语言。1970年诞生的Prolog长久不衰就是例证。
逻辑程序设计的基本观点是程序描述的是数据对象之间的关系,它的抽象层次更高而不
限于函数(映射)关系。关系也是联系,对象和对象、对象和属性的联系就是我们所说的事实。
事实之间的关系以规则表述,根据规则找出合乎逻辑的事实就是推理。因此,逻辑程序设计范
型是陈述事实,制定规则,程序设计就是构造证明。程序的执行就在推理,和传统程序设计范
型有较大的差异。
本章我们从逻辑程序设计理论基础,谓词演算导出逻辑程序语言的理论模型,并介绍逻
辑程序设计语言Prolog 的主要特征和实现要点。
12.1 谓词演算
谓词演算是符号化事实的形式逻辑系统,它也是逻辑程序设计语言的模型,谓词演算在所
有计算机理论的书籍中均有论述,本章仅简单复习,主要目的是引入术语。
12.1.1 谓词演算诸元素
用形式方法研究论域上的对象需要一种语言,它能表达该域对象具有什么性质
(properties) ,以及对象间有些什么关系(relations) 。为了一般化还要有变量(variable)指明域上某
个(些)对象,以及准确说明对象情况的量词(quantifiers) 。当然这个语言还需要一些辅助的符号
(继承自初等集合论) 。描述以公式(Formulas)表达,即描述一般命题的谓词。谓词公式中各元素
按一定逻辑规则变换即谓词演算(predicate calculus) 。以下是谓词公式的示例:
∃Xp(X)—存在具有性质p 的对象X 。
∀Yp(Y)—所有的Y ,即域上任何对象,均具有性质p 。
∀X∃Y(X=2*Y)—对于所有的X都可以找到Y ,其值为X 的一半,其中的逻辑连接”=”是中
缀表示。等效于=(X ,2*Y) 。
谓词公式各元素符号表示法在各教程中不尽相同,谓词演算的表示由以下元素组成:
(1)公式 由一组约定的符号组成的序列,它包括常量(指明域上的某个对象) 、变量(域上
任意对象) 、逻辑连接(指明对象状态及对象间的关系,有数量上的 、= 、= 、 、= 、/=和逻
辑上的∨、∧、 、→、 =) 、命题函数(指明对象间的函数性质) ,谓词(对象间约定的关系) ,
量词(逻辑连接的一种,指明对象状态) 。一阶谓词演算系统中公式里不得嵌套谓词。
第1页
第12章
(2)常量 指明论域(universe of discourse)上的对象,也是数学对象。通常一个逻辑系统要
引入多个论域,一般有十进制整数域、真值域、字符域,可用不同的符号表达有区别的域。常
量可以看作是退化了的函数(没有变元) 。常量以字面量或小写字母表示。
(3)变量 可束定到特定域上某个范围的对象上,在演算(归约)期间它可以例化为具体对
象(常量对象) ,变量是数学意义的,一旦束定整个演算期间不变,变量以大写字母表示。
(4) 函数 表征对象具有的映射关系,函数带参数,从变元域映射到结果值域(可以是不同
的域) 。变元一般是常量、变量、函数结果值、变元在语法上都叫项(term) 。函数以小写标识符
表示。
(5)谓词 表征对象某种性质的符号,谓词带上一到多个变元(对象) 即为断言(assertion) 。
它断言这些对象具有谓词所指性质,谓词形如函数,当该变元确实具有
文档评论(0)