TLA+ 《Specifying Systems》翻译初稿——Section 1.3 Predicate Logic(谓词逻辑)

本节要点

  • 两个谓词逻辑量词: \forall \exists
  • 有界量词和无界量词:
    ( x S : F ) ( x : ( x S ) F ) (\forall x \in S:F) \equiv (\forall x:(x \in S)\Rightarrow F)
    ( x S : F ) ( x : ( x S ) F ) (\exists x \in S:F) \equiv (\exists x:(x \in S)\wedge F)
  • 重言式 ( x S : F ) ¬ ( x S : ¬ F ) (\exists x \in S:F) \equiv \neg(\forall x \in S: \neg F)
  • ( x { } : F ) FALSE ( x { } : F ) TRUE (\exists x\in \{\}: F) \equiv \text{FALSE}\quad (\forall x \in \{\}: F) \equiv \text{TRUE}
  • \forall 通用量化是对合取 \wedge 的概括, \exists 存在量化是对析取 \vee 的概括;
  • \forall 通用量化对合取 \wedge 满足分配率和结合律, \exists 存在量化是对析取 \vee 满足分配率和结合律;
  • 约束变量和自由变量;

一旦我们有了集合,我们可以很自然地说某个公式对于集合的所有元素或者部分元素为真。谓词逻辑在命题逻辑的基础上引入了两个量词:

  • \forall 全称量词(for all)
  • \exists 存在量词(there exists)

公式 x S : F \forall x \in S: F 断言公式 F F 对集合 S S 中的每个元素 x x 都为真,而 n N a t : n + 1 > n \forall n \in Nat: n+1>n 则断言公式 n + 1 > n n+1>n 对自然数集 N a t Nat 的所有元素 n n 都为真,这个公式恰好是正确的。

公式 x S : F \exists x \in S: F 断言公式 F F 对集合 S S 中至少一个元素 x x 为真,而 n N a t : n 2 = 2 \exists n \in Nat: n^2 = 2 则断言存在一个自然数 n n ,其平方等于2,这个公式显然是错的。

公式 F F S S 中的某个 x x 成立当且仅当 F F 不是对 S S 中的所有 x x 都不成立。也就是说,当且仅当 ¬ F \neg F 不是对 S S 中的所有 x x 都成立。因此,这个公式
(1.1) ( x S : F ) ¬ ( x S : ¬ F ) (\exists x \in S:F) \equiv \neg(\forall x \in S: \neg F) 是谓词逻辑的重言式,这意味着公式对标识符 S S F F 的所有取值都成立。1

由于空集中不存在元素,所以公式 x { } : F \exists x\in \{\}: F 对于每个公式 F F 都为假。根据(1.1),这意味着 x { } : F \forall x \in \{\}: F 对于每一个 F F 都为真。

公式 x S : F \exists x\in S:F x S : F \forall x\in S: F 中的量词被认为是“有界”的,因为这些公式只对集合 S S 中的元素作出断言。还有“无界”量词,公式 x : F \forall x:F 断言, F F 适用于所有值 x x , x : F \exists x:F 断言 F F 适用于至少一个 x x 的值——该值不受任何特殊限制。有界和无界量词关联的重言式如下:
( x S : F ) ( x : ( x S ) F ) (\forall x \in S:F) \equiv (\forall x:(x \in S)\Rightarrow F)
( x S : F ) ( x : ( x S ) F ) (\exists x \in S:F) \equiv (\exists x:(x \in S)\wedge F)

(1.1)对于无界量词的类比也是一种重言式:
( x : F ) ¬ ( x : ¬ F ) (\exists x:F) \equiv \neg(\forall x: \neg F)

在可能的情况下,在规约中使用有界量化比使用无界量化更好。这使得规约更容易被人和工具理解。

通用量化是合取的概括,如果S是一个有限集,则 ( x S : F ) (\forall x \in S:F) 是通过将集合 S S 中的每个元素分别代入公式 F F 的合取。例如:
( x { 2 , 3 , 7 } : x < y x ) ( 2 < y 2 ) ( 3 < y 3 ) ( 7 < y 7 ) (\forall x \in \{2,3,7\}:x<y^x)\equiv (2<y^2)\wedge (3< y^3) \wedge (7<y^7)

当我们正式地介绍一个通用的量化公式时,我们有时是在非正式地谈论无限个公式的合取。例如,对于所有自然数x,公式 x < y x x<y^x 的合取就是这个公式 ( x N a t : x < y x ) (\forall x \in Nat:x<y^x) 。类似地,存在量化则概括了析取。

逻辑学家有相应规则来证明如(1.1)这样的谓词逻辑重言式,但是你不需要知道它们,如果你足够熟悉谓词逻辑,简单的重言式是显而易见的,将 \forall 视为合取,将 \exists 视为析取会对你有帮助。例如,结合律和分配率应用于合取和析取将得到重言式:
( x S : F ) ( x S : G ) ( x S : F G ) (\forall x \in S:F)\wedge (\forall x \in S: G)\equiv (\forall x \in S:F\wedge G)
( x S : F ) ( x S : G ) ( x S : F G ) (\exists x \in S:F)\vee (\exists x \in S: G)\equiv (\exists x \in S:F\vee G)
这两个重言式对于任意集合 S S 和公式 F F G G 都成立。

数学家们会使用一些明显的缩写来表示嵌套的量词。例如:
x S , y T \forall x \in S,y \in T 表示 x S : ( y T ) \forall x \in S:(\forall y \in T)
w , x , y , z S : F \exists w,x,y,z \in S:F 表示 w S : ( x S : ( y S : ( z S : F ) ) ) \exists w \in S:(\exists x \in S: (\exists y \in S:(\exists z \in S:F)))

在表达式 x S : F \exists x \in S:F 中,逻辑学家说 x x 是一个约束变量, x x F F 中的出现是受限的。例如, n n 是公式 n N a t : n + 1 > n \exists n\in Nat: n +1 > n 中的一个“约束变量”, n n 在子表达式 n + 1 > n n +1 > n 中的两次出现都是受限的。一个没有受限的变量 x x 被称为“自由变量”,没有受限的变量 x x 的出现称为“自由出现”。这个术语其实是相当具有误导性的。一个“真正”的“约束变量"不会出现在公式中(这里的意思应该是不可替代),因为用新变量替换它不会改变公式。下面两个公式是等价的:
n N a t : n + 1 > n \exists n\in Nat: n + 1 > n
x N a t : x + 1 > x \exists x\in Nat: x + 1 > x
将第一个公式中的 n n 叫做变量有点像将 a a 叫做公式中的一个变量,因为 a a 也出现在名称 N a t Nat 中。尽管如此,谈论公式中约束变量的出现还是很方便的。


  1. 严格来说, \in 不是一个谓词逻辑运算符,所以严格上来说,这也不是一个谓词逻辑重言式 ↩︎

发布了4 篇原创文章 · 获赞 1 · 访问量 5522

猜你喜欢

转载自blog.csdn.net/robinhzp/article/details/103633571