谓词逻辑公式涉及两种事物:
⑴是我们谈及的对象,如a和p这样的个体,以及x和u这样的变量和函数符号。在谓词逻辑中,用来表示对象的表达式称为项(terms);
⑵是表示真值,即公式,例如Y(x,m(x))是公式。
谓词公式由三个集合构成:⑴谓词符号集P;⑵函数符号集F;⑶常值符号集C。
其中常值符号视为没有任何变量的函数符号,因此常值与必须变量的“真正”函数均属于集合F。
为方便起见,我们丢弃常值符号集C,将常值市委0元,即零元(nullary)函数。
语言的项由变量、常值符号、作用在其上的函数构成。函数可以嵌套。
•任何变量都是项;
•若c属于F是零元函数,则c是项;
•若t1,t2…,tn是项,且f属于F的元n>0,则f(t1,t2…,tn)是项;
•没有其他的项。
用BNF可以写为:T::=x|c|f(t,…t)。
其中x取遍一个变量的集合var,c取遍F中的零元函数符号,f取遍F中的元n>0的符号。
•项的第一批构建块内容是常量(零元函数)和变量;
•更复杂的项是由以前构造好的项与其元数相匹配数码的函数符号得到的;
•项的概念依赖于集合F。如果改变了F,就改变了项的集合。
应用前面定义的F上项的集合,递归定义(F,P)上的公式集如下:
•若p属于P是n>=1元的谓词符号,t1,t2,…,是F上的项,则P(t1,…tn)是公式
•若Φ是公式,则¬Φ也是公式
•若Φ和是公式,则(Φ∧ψ)、(Φ∨ψ)、(Φ->ψ)也是公式
•若Φ是公式,x是变量,则(∀xΦ)和(∃xΦ)也是公式
•没有其他形式的公式
用BNF表示为Φ::=P(t1,t2,…tn)|(¬Φ)|(Φ∧Φ)|(Φ∨Φ)|(Φ->ψ)|(∀xΦ)| (∃xΦ)。
•﹁,∃x,∀x绑定优先级最高;
•其次为∧,∨;
•然后是→ ,它是右结合的。
只要不致引起歧义,可以省去关于量词的括号。
来看一个例子:将下面语句翻译成谓词逻辑公式:
我父亲的每个儿子都是我的兄弟
我们需要考虑的是要选择把“父亲”表示成一个谓词还是一个函数符号。
⑴作为一个谓词,常量m表示“我”,m是项。选择谓词集{S,F,B}:
S(x,y): x是y的儿子
F(x,y): x是y的父亲
B(x,y): x是y的兄弟
这样的结果是∀x ∀y(F(x,m) ∧S(y,x)->B(y,m)),对所有的x和y,若x是m的父亲,y是x的儿子,则y是m的兄弟;
⑵用f表示一个变量的函数,返回值是该变量的父亲,因为父亲存在且唯一,所以f确实是一个函数而不是一个关系。上述语句经符号编码后得:
∀x(S(x,f(m))->B(x,m)),对所有x,若x是m的父亲的儿子,则x是m的兄弟。
实际上,上面的两个结果都有问题,你能看出来吗?