命题逻辑是研究不同简单命题间关系的,但谓词逻辑是研究简单命题内部结构的,是更加深入的考察。
命题逻辑形成的公式只需要赋值就可以确定真值,但是谓词逻辑就不行。这是因为谓词逻辑将简单命题拆为量词、主词、谓词。量词和主词要求指明论域,谓词要求指明具体含义。这些都使原来 p=1 的简单事情变成了 ∀ x P ( x , f ( a ) ) = 1 \forall xP(x,f(a))=1 ∀xP(x,f(a))=1 的复杂事情。我必须规定论域、谓词含义、常元值(命题逻辑中只有1和0,还被零元联结词的概念掩盖了,但是这里的a可以取一大堆值。本质是命题逻辑中的常元代表一个命题,而谓词逻辑里的a代表一个个体)、函数符号含义(在命题逻辑中不会出现普通函数,因为普通函数属于命题内部,命题逻辑不研究)。这就是解释存在的意义。
赋值也有不同,在命题逻辑中赋值,是将命题变元赋成0或1。在谓词逻辑中,是将自由变元赋成论域中的某个个体,说不定是苹果还是西瓜呢。
谓词可以有两种理解,对于一元谓词,可以理解为他描述了主体的一种性质。对于多元谓词,可以理解为不同主词间关系的描述。进一步来讲,对于关系来讲,大多关系都是可以用一个相等关系或者不等关系表达的。这些类方程可以简化思考,还便于找反例。一整个公式就像一个方程组一样。
永真式和等值演算紧密联系,两者可以说是逻辑中最重要的部分。即恒等变形。
逻辑中概念很多,对晦涩的概念应当有以下认识:
有些概念难是难在书写形式没有具体定义,这种搞懂就好了,要是老师书写也不规范,没必要纠结。比如赋值,推论。
有些概念为了更加“数学”,所以不近人情,这种概念不可纠结。比如联结词。
有些概念就为了使要描述的其他定理和定义更加简洁,本身没有存在的必要。比如初等公式,其提出可能只是为了更好的描述重言式。
有些概念理解懂了基本含义不是结束,一定要理解概念提出是为了解决什么问题的,通俗的解释这个概念描述的现象,这才是正确方式。比如许多定理、某些等值演算。
有些概念现在觉得画蛇添足,其实是为了后面的知识铺垫,所以不必纠结,有些概念理解不了,不如塌下心来做些题,在题中理解概念。
我们分析一个公式,应当有两方面的意识:
v v v 和 v [ x 1 / d 1 , . . . , x n / d n ] v[x_1/d_1,...,x_n/d_n] v[x1/d1,...,xn/dn] 是两个不同的东西。原来就有一个赋值 v v v,然后我替换掉一些变元
对公式求值有如下规则: I ( ∀ x A ( t ) ) ( v ) I(\forall xA(t))(v) I(∀xA(t))(v)
先利用合取展开成 I ( A ( t ) ) ( v ) I(A(t))(v) I(A(t))(v),然后在展开成 I ( t ) ( v ) I(t)(v) I(t)(v),然后在展开成 I ( x ) ( v ) I(x)(v) I(x)(v),然后又有 I ( x ) ( v [ x / d ] ) I(x)(v[x/d]) I(x)(v[x/d])。
比如 I ( A ∨ B ) ( v ) = I ( A ) ( v ) ∨ I ( B ) ( v ) I(A\vee B)(v)=I(A)(v)\vee I(B)(v) I(A∨B)(v)=I(A)(v)∨I(B)(v) 这一类定理,说明了要想分析公式内部,可以通过,也必须通过赋值赋值的方式分析内部,这个定理看似平凡,但是是后面证明其他定理的重要基石。
I ( A t 1 , . . . , t n x 1 , . . . , x n ) ( v ) = I ( A ) ( v [ x 1 / I ( t 1 ) , . . . , x n / I ( t n ) ] ) I(A^{x_1,...,x_n}_{t_1,...,t_n})(v)=I(A)(v[x_1/I(t_1),...,x_n/I(t_n)]) I(At1,...,tnx1,...,xn)(v)=I(A)(v[x1/I(t1),...,xn/I(tn)])
这个公式也是跟上一条公式一样是基础,但是好像没有上一条有用,但是它本身的证明是一个归纳证明。
¬ ∀ A ↔ ∃ x ¬ A \neg\forall A\leftrightarrow\exist x\neg A ¬∀A↔∃x¬A
这个定理完成了全称量词和存在量词之间的转换,但是会产生一个 ¬ A \neg A ¬A 结构,所以要分析的话,就需要借助赋值和逻辑联结词交换顺序来进行下一步的分析。
这个定理也可以用于进行定理证明中的等值演算,尤其是那些具有对偶性质的公式,比如下面的量词辖域收缩扩张,用赋值与逻辑联结词交换顺序证明了一个量词的定理,另一个一般用量词否定转换得到。
∀ x ( A ( x ) ∧ B ( x ) ) ↔ ∀ x A ( x ) ∧ ∀ x B ( x ) \forall x(A(x)\wedge B(x))\leftrightarrow \forall xA(x)\wedge \forall xB(x) ∀x(A(x)∧B(x))↔∀xA(x)∧∀xB(x)
∃ x ( A ( x ) ∨ B ( x ) ) ↔ ∃ x A ( x ) ∨ ∃ x B ( x ) \exist x(A(x)\vee B(x))\leftrightarrow \exist xA(x)\vee \exist xB(x) ∃x(A(x)∨B(x))↔∃xA(x)∨∃xB(x)
这是最通用的公式,没有对变元的限制,而且还十分容易理解。全称量词和合取、存在量词和析取的对照关系,有很好体现。
第一组
∀ x ( A ( x ) → B ) ↔ ∃ x A ( x ) → B \forall x(A(x) \rightarrow B)\leftrightarrow \exist xA(x)\rightarrow B ∀x(A(x)→B)↔∃xA(x)→B
∃ x ( A ( x ) → B ) ↔ ∀ x A ( x ) → B \exist x(A(x) \rightarrow B)\leftrightarrow \forall xA(x)\rightarrow B ∃x(A(x)→B)↔∀xA(x)→B
第二组
∀ x ( A → B ( x ) ) ↔ A → ∀ x B ( x ) \forall x(A \rightarrow B(x))\leftrightarrow A\rightarrow \forall xB(x) ∀x(A→B(x))↔A→∀xB(x)
∃ x ( A → B ( x ) ) ↔ A → ∃ x B ( x ) \exist x(A \rightarrow B(x))\leftrightarrow A\rightarrow \exist xB(x) ∃x(A→B(x))↔A→∃xB(x)
再次强调, B B B 不代表 B B B 中不含有x,而是x不是 B B B 的自由变元。
第三组
∀ x ( A ( x ) ∧ B ) ↔ ∀ x A ( x ) ∧ B \forall x(A(x)\wedge B)\leftrightarrow \forall xA(x)\wedge B ∀x(A(x)∧B)↔∀xA(x)∧B
∀ x ( A ( x ) ∨ B ) ↔ ∀ x A ( x ) ∨ B \forall x(A(x)\vee B)\leftrightarrow \forall xA(x)\vee B ∀x(A(x)∨B)↔∀xA(x)∨B
∃ x ( A ( x ) ∧ B ) ↔ ∃ x A ( x ) ∧ B \exist x(A(x)\wedge B)\leftrightarrow \exist xA(x)\wedge B ∃x(A(x)∧B)↔∃xA(x)∧B
∃ x ( A ( x ) ∨ B ) ↔ ∃ x A ( x ) ∨ B \exist x(A(x)\vee B)\leftrightarrow \exist xA(x)\vee B ∃x(A(x)∨B)↔∃xA(x)∨B
这些定理比前面的量词分配要普适性更高,析取和合取不在对应存在和全称,每一个量词都可以进行分配,然后可以用这组定理结合量词转换进行等值演算导出第一组和第二组。
应当明确,量词顺序不可随意交换,收敛和一致收敛就是一个明显的例子,好像两个全称量词之间可以交换。
∀ x A ( x ) ↔ ∀ y A ( y ) \forall xA(x) \leftrightarrow \forall yA(y) ∀xA(x)↔∀yA(y)
∀ x A ( x ) ↔ ∀ y A y x \forall xA(x) \leftrightarrow \forall yA_y^x ∀xA(x)↔∀yAyx
下面那个是正确的,上面那个是错误的。因为可替换是个要求。这个定理主要用于转换前束范式,因为不同约束变元随着辖域的扩张,要换名防止重名,也可以使辖域的收缩与扩张的使用更加自然。注意这里只给了全程量词的换名规则,存在量词的换名规则需要自己推导。
我们研讨的公式中,唯一可以变化的就是个体变元,被称为一阶谓词逻辑,也称狭谓词逻辑。当除了个体变元外还有函数变元时,就成了二阶谓词逻辑。
表示唯一
∃ x ( P ( x ) ∧ ∀ y ( P ( y ) → x = y ) ) \exist x( P(x)\wedge\forall y(P(y)\rightarrow x=y) ) ∃x(P(x)∧∀y(P(y)→x=y))
P ( x ) P(x) P(x)即对具有性质的描述,公式表达的意思即所有满足性质的y都是x
表示最大
∃ x ( P ( x ) ∧ ∀ y ( P ( x ) → y < x ∨ y = x ) \exist x(P(x)\wedge\forall y(P(x)\rightarrow y
P ( x ) P(x) P(x)即对具有性质的描述,公式表达的就是所有满足性质的y都有 y ≤ \leq ≤x 。
表示z是x和y的公约数
∃ v ( v ∗ z = x ) ∧ ∃ v ( v ∗ z = y ) \exist v(v*z = x)\wedge\exist v(v*z=y) ∃v(v∗z=x)∧∃v(v∗z=y)
D(x,y):x能被y整除
∃ v ( v ∗ y = x ) \exist v(v*y=x) ∃v(v∗y=x)
x是素数
¬ ( x = 1 ) ∧ ∀ u ( ∃ v ( v ∗ u = x ) ↔ u = 1 ∨ u = x ) \neg (x=1)\wedge\forall u(\exist v(v*u=x)\leftrightarrow u=1\vee u=x) ¬(x=1)∧∀u(∃v(v∗u=x)↔u=1∨u=x)
即x不等于1,且任何能整除x的数只有1或者x。别看写了这么多,这其实是个一元谓词
这个就是在有归纳定义的东西的浅浅的应用,证明时就有底向上,先证明基准情况,然后最后一步是把复杂情况用基准情况表示,这个好像动态规划啊。
对于含有 ↔ \leftrightarrow ↔ 的式子,可以令 ↔ \leftrightarrow ↔ 的一端为1或0,然后得出子公式内部结论,用当且仅当连接,进行推导,直至得出另一侧的值为1或0。
对于含有 → \rightarrow → 的式子,可以令后件为0,前件为1,因为这是唯一一种取值为0的情况,然后得出矛盾。也可只令前件为1,然后用推理定律得出后件。
当举反例的时候,一般只用在论域中放两个元素,因为其实是两种元素的代表。最常用的反例是是“0110”
D I = { a , b } P I ( a ) = 0 P I ( b ) = 1 Q I ( a ) = 1 Q I ( b ) = 0 D^I=\{a,b\}\quad P^I(a)=0\quad P^I(b)=1\quad Q^I(a)=1\quad Q^I(b)=0\quad DI={ a,b}PI(a)=0PI(b)=1QI(a)=1QI(b)=0