第一章,第二部分:谓词逻辑(Chapter 1, Part II: Predicate Logic)
汇总(Summary )
-
谓词逻辑(第一次序逻辑)述词计算(Predicate Logic (First-Order Logic (FOL), Predicate Calculus))
-
量词语言(The Language of Quantifiers)
-
逻辑等价(Logical Equivalences)
-
嵌套量词(Nested Quantifiers)
-
从谓词逻辑到英语的翻译(Translation from Predicate Logic to English)
-
从英语到谓词逻辑的翻译(Translation from English to Predicate Logic)
-
-
谓词和量词(Predicates and Quantifiers)
-
小节汇总(Section Summary )
-
谓词(Predicates)
-
变量(Variables)
-
量词(Quantifiers)
-
通用量词(Universal Quantifier)
-
存在量词(Existential Quantifier)
-
-
否定量词(Negating Quantifiers)
-
德摩根的量词定律(De Morgan’s Laws for Quantifiers)
-
-
将英语翻译为逻辑(Translating English to Logic)
-
逻辑编程(Logic Programming)
-
-
命题逻辑还不够(Introducing Predicate Logic)
-
命题逻辑不能充分表达数学和自然语言中所有陈述的含义。 例如
-
“连接到大学网络的每台计算机都是运作正常的”
-
-
没有命题逻辑规则允许我们总结陈述的真实性
-
“MATH3运作正常”
-
-
其中MATH3是连接到大学网络的计算机之一。
-
需要一种讨论对象,它们的属性以及它们之间的关系的语言,谓词逻辑。
-
谓词逻辑可以用来表达数学和计算机科学中广泛陈述的含义,使我们能够推理和探索对象之间的关系。
-
Predicate logic uses the following new features:
Variables: x, y, z
Predicates: P(x), M(x)
Quantifiers (to be covered in a few slides):
Propositional functions are a generalization of propositions.
They contain variables and a predicate, e.g., P(x)
Variables can be replaced by elements from their domain.
-
谓词逻辑简介
-
谓词逻辑使用以下新功能:
-
变量:x,y,z
-
谓词:P(x),M(x)
-
量词:接下来会讲到
-
-
命题函数是命题的推广。
-
它们包含变量和谓词,例如P(x)
-
变量可以由其域中的元素替换。
-
-
涉及变量的语句,例如
-
“x > 3,” “x = y + 3,” “x + y = z,”和“计算机x受到入侵者的攻击,”和“电脑x功能正常,”经常在数学断言,计算机程序和系统规范中找到。
-
-
涉及变量的语句,例如“x> 3”
-
“xis greater than 3”(x:对象;is greater than 3:predicate)
-
声明“x大于3”有两部分。
-
第一部分,变量x,是声明的主题。
-
第二部分 - 谓词“大于3” - 指的是声明主语可以具有的属性。
-
我们可以用P(x)表示“x大于3”的陈述,其中P表示谓词“大于3”而x是变量。
-
语句P(x)也被认为是x处的命题函数P的值。
-
一旦将值赋给变量x,语句P(x)就成为命题并具有真值。
-
-
命题函数(Propositional Functions)
-
后置条件:Q(x,y),其中Q(x,y)是语句“x = b和y = a”。
-
命题功能发生在计算机程序中
-
考虑一下这句话
-
if x > 0 then x := x + 1.
-
P(x) – x > 0
-
当P(x)为真时,变量x增加 1。
-
-
谓词还用于建立计算机程序的正确性,即表明计算机程序在给定有效输入时总是产生所需的输出。
-
前提条件:描述有效输入的语句
-
后置条件:程序运行时输出应满足的条件
-
-
举个例子 (swap x and y),
temp := x
x := y
y := temp
-
前提:P(x,y),其中P(x,y)是语句“x = a和y = b”,其中a和b是我们运行程序之前的x和y的值。
-
例如,令P(x)表示“x> 0”,域为整数。 然后:
-
P(-3)是假的。
-
P(0)是假的。
-
P(3)是真的。
-
-
域通常用U表示。因此在这个例子中,U是整数
-
例如,让Q(x,y)表示该语句
-
“x = y + 3。”真理的价值是什么?
-
命题Q(1,2)和Q(3,0)?
-
Q(1, 2) is “1 = 2 + 3,” 是假的。
-
Q(3, 0) is “3 = 0 + 3,”是真的。
-
-
令“x + y = z”由R(x,y,z)表示,U(对于所有三个变量)为整数。 找到这些真值:
-
R(2,-1,5)
-
Solution: F
-
R(3,4,7)
-
Solution: T
-
R(x, 3, z)
-
Solution: Not a Proposition
-
-
现在让“x - y = z”用Q(x,y,z)表示,其中U为整数。 找到这些真值:
-
Q(2,-1,3)
-
Solution: T
-
Q(3,4,7)
-
Solution: F
-
Q(x, 3, z)
-
Solution: Not a Proposition
-
-
通常,涉及n个变量x1,x2,...的语句。。。 ,xn可以表示为P(x1, x2, . . . , xn).
-
形式P(x1,x2,...,xn)的陈述是n元组(x1,x2,...,xn)处的命题函数P的值,并且P也称为n- 放置谓词或n-ary谓词。
-
量词
-
量化表示谓词在一系列元素上的真实程度。
-
我们需要量词来表达英语单词的含义,包括all和some:
-
“所有人都是凡人。”
-
“有些猫没有毛皮。”
-
-
处理谓词和量词的逻辑区域称为谓词演算。
-
许多数学陈述声称属性对于特定域中变量的所有值都是真的,称为话语域(或
-
话语世界),通常被称为领域。
-
两个最重要的量词是:
-
Universal Quantifier,“所有”,符号:∀
-
存在量词,“存在”,符号:∃
-
-
我们写成∀xP(x)和∃xP(x)。
-
∀xP(x)断言P(x)对于域中的每个x都为真。
-
∃xP(x)断言P(x)对于域中的某些x为真。
-
据说量词可以在这些表达式中绑定变量x。
-
-
P(x)的通用量化就是陈述
-
“P(x)表示域中x的所有值。”
-
P(x)为假的元素称为∀xP(x)的反例。
-
通用量词
-
∀xP(x)读作“对于所有x,P(x)”或“对于每个x,P(x)”
-
例子;
-
如果P(x)表示“x> 0”且U是整数,则∀xP(x)为假。
-
-
P(0)是假的。
-
∀xP(x)读作“对于所有x,P(x)”或“对于每个x,P(x)”
-
例子:
-
如果P(x)表示“x> 0”且U是正整数,则∀xP(x)为真。
-
-
∀xP(x)读作“对于所有x,P(x)”或“对于每个x,P(x)”
-
例子;
-
如果P(x)表示“x是偶数”而U是整数,那么
-
∀xP(x)是假的。
-
-
P(1)是假的。
-
-
存在量词
-
∃xP(x)读作“对于某些x,P(x)”或“有一个x使得P(x)”或“对于至少一个x,P(x)”。
-
例子:
-
如果P(x)表示“x> 0”且U是整数,则∃xP(x)为真。 如果U是正整数也是如此。
-
如果P(x)表示“x <0”且U是正整数,则∃xP(x)为假。
-
如果P(x)表示“x是偶数”而U是整数,那么∃xP(x)为真。
-
-
∃xP(x)读作“对于某些x,P(x)”或“有一个x使得P(x)”或“对于至少一个x,P(x)”。
-
例子:
-
如果P(x)表示“x> 0”且U是整数,则∃xP(x)为真。 如果U是正整数也是如此。
-
如果P(x)表示“x <0”且U是正整数,则∃xP(x)为假。
-
如果P(x)表示“x是偶数”而U是整数,那么∃xP(x)为真。
-
-
-
限制域的量词
-
这些陈述和意思是什么,在每种情况下,域名由实数组成?
-
Statement |
states |
∀x < 0 (x2> 0) |
that for every real number x with x < 0, x2> 0. |
∀y = 0 (y3= 0) |
for every real number y with y = 0, we have y3= 0. |
∃z > 0 (z2= 2) |
that there exists a real number z with z > 0 such that z2 = 2. |
-
关于量词的思考
-
当话语领域是有限的时,我们可以将量化视为循环遍历域的元素。
-
评估域中所有x的∀xP(x)循环。
-
如果在每个步骤P(x)为真,那么∀xP(x)为真。
-
如果在步骤P(x)为假,则∀xP(x)为假并且循环终止。
-
-
评估域中所有x的∃xP(x)循环。
-
如果在某一步,P(x)为真,那么∃xP(x)为真且循环终止。
-
如果循环结束而没有找到P(x)为真的x,那么∃xP(x)为假。
-
-
即使域是无限的,我们仍然可以想到这种方式的量词,但在某些情况下循环不会终止。
-
-
量词的属性
-
∃xP(x)和∀xP(x)的真值取决于命题函数P(x)和域U.
-
例子:
-
如果U是正整数而P(x)是语句“x <2”,则∃xP(x)为真,但∀xP(x)为假。
-
如果U是负整数而P(x)是语句“x <2”,那么∃xP(x)和∀xP(x)都为真。
-
如果U由3,4和5组成,而P(x)是语句“x> 2”,那么∃xP(x)和∀xP(x)都为真。 但如果P(x)是语句“x <2”,那么∃xP(x)和∀xP(x)都是假的。
-
-
-
量词的优先权
-
量词∀和∃的优先级高于所有逻辑运算符。
-
例如,∀xP(x)∨Q(x)表示(∀xP(x))∨Q(x)
-
∀x(P(x)∨Q(x))表示不同的东西。
-
不幸的是,当人们的意思是∀x(P(x)∨Q(x))时,人们常常会写出∀xP(x)∨Q(x)。
-
-
绑定变量
-
当在变量x上使用量词时,我们说这个变量的出现是绑定的。
-
命题函数中出现的所有变量必须绑定或设置为等于特定值才能将其转换为命题。
-
这可以使用通用量词,存在量词和值赋值的组合来完成。
-
应用量词的逻辑表达式的一部分称为此量词的范围。
-
在陈述∃x(P(x)∧Q(x))∨∀xR(x)中,
-
所有变量都是绑定的。
-
第一个量词的范围∃x是表达式P(x)∧Q(x),因为∃x仅适用于P(x)∧Q(x),而不适用于语句的其余部分。
-
类似地,第二个量词的范围∀x是表达式R(x)。
-
-
-
谓词逻辑中的等价性
-
涉及谓词和量词的语句在逻辑上是等效的,当且仅当它们具有相同的真值时
-
对于每个谓词替换为这些陈述和
-
对于用于表达式中的变量的每个话语领域。
-
-
符号S≡T表示S和T在逻辑上是等价的。
-
示例:∀x¬¬P(x)≡∀xP(x)
-
∀x(P(x)∧Q(x))≡∀xP(x)∧∀xQ(x)
-
-
否定量化表达式
-
考虑∀xP(x)
-
“班上的每个学生都参加过Java课程。”
-
这里P(x)是“x已经学过Java课程”,该域名是你班上的学生。
-
否定原始陈述给出“并非所有班级中的每个学生都使用Java。”这意味着“班上有一个学生没有学习Java。”
-
符号地¬∀xP(x)和∃x¬P(x)是等价的
-
现在考虑∃xP(x)
-
“这个班上有一个学生参加过Java课程。”其中P(x)是“x已经学过Java课程”。
-
否定原始陈述会给出“这个班级中有学生使用Java的情况并非如此。”这意味着“本班的每个学生都没有学习Java”
-
符号¬∃xP(x)和∀x¬P(x)是等价的
-
-
德摩根的量词定律
-
否定量词的规则是:
-
-
表中的推理表明:
-
这些很重要。 你会用这些。
-
关于量词作为连词和断言的思考
-
如果域是有限的,那么普遍量化的命题等价于没有量词的命题的联合,而存在量化的命题等价于没有量词的命题的分离。
-
如果U由整数1,2和3组成:
-
即使域是无限的,你仍然可以用这种方式思考量词,但没有量词的等价表达式将是无限长的。
-
-
从英语到逻辑的翻译
-
例子:
-
“这堂课的一些学生已经访问了墨西哥。”
-
解决方案:让M(x)表示“x访问过墨西哥”,而S(x)表示“x是这个班级的学生”,而且U是所有人。
-
∃x(S(x)∧M(x))
-
“这堂课的每个学生都去过加拿大或墨西哥。”
-
解决方案:添加表示“x已访问加拿大”的C(x)。
-
∀x(S(x)→(M(x)∨C(x)))
-
-
-
逻辑编程
-
Prolog(来自Logic in Logic)是一种编程语言,由人工智能(AI)研究人员于20世纪70年代开发。
-
Prolog程序包括Prolog事实和Prolog规则。
-
作为一组Prolog事实的一个例子,请考虑以下事项:
-
讲师(陈,math273)。
-
讲师(patel,ee222)。
-
讲师(grossman,cs301)。
-
注册(凯文,math273)。
-
注册(juana,ee222)。
-
注册(juana,cs301)。
-
报名参加(kiko,math273)。
-
报名参加(kiko,cs301)。
-
-
这里谓词指导员(p,c)和登记(s,c)表示教授p是课程c的指导者,并且学生s在课程c中注册。
-
在Prolog中,以大写字母开头的名称是变量。
-
如果我们有一个谓词教导(p,s)代表“教授教授学生”,我们可以编写规则:
-
教导(P,S): - 教师(P,C),登记(S,C)。
-
可以将此Prolog规则视为与逻辑中的以下语句等效(使用我们的逻辑语句约定)。
-
∀p∀c∀s(I(p,c)∧E(s,c))→T(p,s))
-
Prolog程序被加载到Prolog解释器中。 解释器使用Prolog程序接收查询并返回答案。
-
例如,使用我们的程序,可能会给出以下查询:
-
?就读(凯文,math273)。
-
Prolog产生响应:
-
是
-
请注意? 是Prolog解释器给出的提示,表明它已准备好接收查询。
-
查询:?已注册(X,math273)。
-
产生响应:
-
X =凯文;
-
X = kiko;
-
没有
-
查询:?教(X,juana)。
-
产生响应:
-
X =髌骨;
-
X =粗糙;
-
没有
-
Prolog解释器试图找到X的实例化。它这样做并返回X = kevin。 然后用户输入; 表示另一个答案的请求。 当Prolog无法找到另一个答案时,它返回no。
-
查询:?教(chan,X)。
-
-
产生响应:
-
X =凯文;
-
X = kiko;
-
没有
-
有许多非常好的Prolog文本可供使用。 立即学习Prolog! 是http://www.learnprolognow.org/上的一个免费在线版本的文本
-
Prolog以及整个逻辑编程领域还有很多其他内容。
-
嵌套量词
-
小节汇总
-
嵌套量词
-
量词的顺序
-
从嵌套量词翻译成英文
-
将数学陈述翻译成涉及嵌套量词的陈述。
-
将英语句子翻译成逻辑表达式。
-
否定嵌套量词。
-
-
嵌套量词
-
嵌套量词通常是表达英语句子含义以及计算机科学和数学中重要概念的必要条件。
-
示例:“每个实数都有倒数”是
-
∀x∃y(x + y = 0)
-
其中x和y的域是实数。
-
我们还可以考虑嵌套的命题函数:
-
∀x∃y(x + y = 0)可以看作∀xQ(x)其中Q(x)是∃yP(x,y)其中P(x,y)是(x + y = 0)
-
假设变量x和y的域由所有实数组成。
-
该声明
-
∀x∀y(x + y = y + x)
-
对所有实数x和y说x + y = y + x。 这个
-
是增加实数的交换法则。
-
该声明
-
∀x∀y∀z(x +(y + z)=(x + y)+ z)
-
是添加实数的关联定律。
-
-
关于嵌套量化的思考
-
嵌套循环
-
要查看∀x∀yP(x,y)是否为真,请遍历x的值:
-
在每个步骤中,循环y的值。
-
如果对于某些x和y,P(x,y)为假,则∀x∀yP(x,y)为假,并且外循环和内循环都终止。
-
-
∀x∀yP(x,y)如果外环在步进每个x后结束,则为真。
-
-
要查看∀x∃yP(x,y)是否为真,请遍历x的值:
-
在每个步骤中,循环y的值。
-
当找到一对x和y使得P(x,y)为真时,内环结束。
-
如果没有找到y使得P(x,y)为真,则外环终止为∀x∃yP(x,y)已被证明是假的。
-
∀x∃yP(x,y)如果外环在步进每个x后结束,则为真。
-
-
如果变量的域是无限的,则实际上不能执行该过程。
-
-
量词的顺序
-
1.令P(x,y)为语句“x + y = y + x”。假设U是实数。 那么∀x∀yP(x,y)和∀y∀xP(x,y)具有相同的真值。
-
∀x∀yP(x,y):
-
“对于所有实数x,对于所有实数y,x + y
-
= y + x。“
-
∀y∀xP(x,y):
-
“对于所有实数y,对于所有实数x,x + y
-
= y + x。“
-
例子:
-
2.设Q(x,y)为语句“x + y = 0”。假设U是实数。 然后∀x∃yQ(x,y)为真,但∃y∀xQ(x,y)为假。
-
∀x∃yQ(x,y):
-
“对于每个实数x,有一个实数y,使得x + y = 0。”
-
∃y∀xQ(X,Y):
-
“对于所有实数y,存在实数y,使得x + y = 0。”
-
-
关于量词顺序的问题
-
例子2:让U成为实数,
-
定义P(x,y):x / y = 1
-
以下内容的真实价值是什么:
-
∀x∀yP(X,Y)
-
答:错
-
∀x∃yP(X,Y)
-
答:错
-
∃x∀yP(x,y)
-
答:错
-
∃x∃yP(x,y)
-
答:是的
-
-
两个变量的量化
-
将嵌套量词翻译成英文
-
例子:翻译声明
-
∀x(C(x)∨∃y(C(y)∧F(x,y)))
-
其中C(x)是“x有一台计算机”,F(x,y)是“x和y是朋友”,x和y的域由你学校的所有学生组成。
-
解决方案:您学校的每个学生都有一台电脑,或者有一个拥有电脑的朋友。
-
-
将数学陈述转化为谓词逻辑
-
示例:将“两个正整数的总和始终为正”转换为逻辑表达式。
-
解:
-
重写语句以使隐含的量词和域明确:
-
“对于每两个整数,如果这些整数都是正整数,则这些整数的总和是正的。”
-
引入变量x和y,并指定域,以获得:
-
“对于所有正整数x和y,x + y是正的。”
-
结果是:
-
∀x∀y((x> 0)∧(y> 0)→(x + y> 0))
-
其中两个变量的域都包含所有整数
-
-
将英语翻译成逻辑表达式
-
示例:使用量词来表达“世界上每个航空公司都有一位女士乘坐飞机”的声明。
-
解:
-
设P(w,f)为“w取f”,Q(f,a)为“f是a上的航班”。
-
w的所有领域都是女性,f的领域是所有航班,而a的领域是所有航空公司。
-
然后声明可以表示为:
-
∃w∀a∃f(P(w,f)∧Q(f,a))
-
-
关于英语翻译的几个问题
-
选择明显的谓词并在谓词逻辑中表达。
-
例1:“兄弟是兄弟姐妹。”
-
解:∀x∀y(B(x,y)→S(x,y))
-
例2:“兄弟会是对称的”。
-
解:∀x∀y(S(x,y)→S(y,x))
-
例3:“每个人都爱一个人。”
-
解答:∀x∃yL(x,y)
-
例4:“有人被大家所爱。”
-
解答:∃y∀xL(x,y)
-
例5:“有人爱一个人。”
-
解答:∃x∃yL(x,y)
-
例6:“每个人都爱自己。”
-
解答:∀xL(x,x)
-
-
否定嵌套量词
-
通过连续应用用于否定涉及单个量词的语句的规则,可以否定涉及嵌套量词的语句。
-
否定量词的规则是
-
示例1:回想一下开发三个幻灯片的逻辑表达式:
-
∃w∀a∃f(P(w,f)∧Q(f,a))
-
第1部分:使用量词来表达“世界上每个航空公司都没有乘坐飞机的女性”的说法。
-
解:∃∃w∀a∃f(P(w,f)∧Q(f,a))
-
第2部分:现在使用De Morgan定律尽可能地推动否定。
-
解:
-
∃∃w∀a∃f(P(w,f)∧Q(f,a))
-
Dew¬∀a∃f(P(w,f)∧Q(f,a))由De Morgan's为∃
-
Dew∃a¬∃f(P(w,f)∧Q(f,a))由De Morgan's为∀
-
Dew∃a∀f¬(P(w,f)∧Q(f,a))由De Morgan's为∃
-
Dew∃a∀f(¬P(w,f)∨¬Q(f,a))由De Morgan为∧。
-
-
第3部分:你能把结果翻译成英文吗?
-
∀w∃a∀f(¬P(w,f)∨¬Q(f,a))
-
解:
-
“对于每个女人来说,有一家航空公司,对于所有航班,这名女士没有乘坐该航班或该航班不在该航空公司”
-
-
关于量词的一些问题(可选)
-
你能改变量词的顺序吗?
-
这是一个有效的等价吗?
-
-
解决方案:是的! 左侧和右侧将始终具有相同的真值。 选择x和y的顺序无关紧要。
-
你能改变量词的顺序吗?
-
这是一个有效的等价吗?
-
-
解决方案:不! 对于P的一些命题函数,左侧和右侧可以具有不同的真值。对于P(x,y),尝试“x + y = 0”,其中U是整数。 选择x和y值的顺序很重要。
-
你可以在逻辑连词上分发量词吗?
-
这是一个有效的等价吗?
-
-
解决方案:是的! 无论P(x)和Q(x)表示什么命题函数,左侧和右侧将始终具有相同的真值。
-
你可以在逻辑连词上分发量词吗?
-
这是一个有效的等价吗?
-
-
解决方案:不! 左侧和右侧可以具有不同的真值。 对于P(x)选择“x是鱼”,对于Q(x)选择“x具有尺度”,话语域是所有动物。 然后左边是假的,因为有些鱼没有鳞片。 但是正确的一面是正确的,因为不是所有的动物都是鱼。
-